From fbd6e7fccba690e78f205b4ce315e2886a2a0a00 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 17 Jul 2020 01:08:28 +0200 Subject: [PATCH] Issue 1402: Fix NPE when a path references an undeclared path parameter. --- .../io/swagger/v3/parser/util/OpenAPIDeserializer.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java index 87834e1f89..edc167c0f8 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java @@ -556,12 +556,16 @@ public Paths getPaths(ObjectNode obj, String location, ParseResult result) { if (!definedInPathLevel) { List operationsInAPath = getAllOperationsInAPath(pathObj); operationsInAPath.forEach(operation -> { - operation.getParameters().forEach(parameter -> { + List operationParameters = operation.getParameters(); + if (operationParameters == null) { + operationParameters = Collections.emptyList(); + } + operationParameters.forEach(parameter -> { if(PATH_PARAMETER.equalsIgnoreCase(parameter.getIn()) && Boolean.FALSE.equals(parameter.getRequired())){ result.warning(location, "For path parameter "+ parameter.getName() + " the required value should be true"); } }); - if (!isPathParamDefined(pathParam, operation.getParameters())) { + if (!isPathParamDefined(pathParam, operationParameters)) { result.warning(location + ".'" + pathName + "'"," Declared path parameter " + pathParam + " needs to be defined as a path parameter in path or operation level"); return; }