Skip to content

Commit 9dccadb

Browse files
phiz71kerrykimbrough
authored andcommitted
fix NPE when parsing V2 with OpenAPIV3Parser and resolveFully option
Avoid to resolve openAPI if it is null Fixes #1455
1 parent 2999985 commit 9dccadb

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/OpenAPIV3Parser.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,10 @@ private SwaggerParseResult readContents(String swaggerAsString, List<Authorizati
150150
final ObjectMapper mapper = getRightMapper(swaggerAsString);
151151
final JsonNode rootNode = mapper.readTree(swaggerAsString);
152152
final SwaggerParseResult result = parseJsonNode(location, rootNode);
153-
return resolve(result, auth, options, location);
153+
if (result.getOpenAPI() != null) {
154+
return resolve(result, auth, options, location);
155+
}
156+
return result;
154157
} catch (JsonProcessingException e) {
155158
LOGGER.warn("Exception while parsing:", e);
156159
final String message = getParseErrorMessage(e.getOriginalMessage(), location);

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -878,6 +878,22 @@ public void testResolveFully() throws Exception{
878878
assertEquals(result.getOpenAPI().getComponents().getSchemas().get("OrderRef").getType(),"object");
879879
}
880880

881+
@Test
882+
public void issue1455_testResolveFullyV2_shouldNotThrowNPE() throws Exception{
883+
String pathFile = FileUtils.readFileToString(new File("src/test/resources/swagger.json"));
884+
pathFile = pathFile.replace("${dynamicPort}", String.valueOf(this.serverPort));
885+
ParseOptions options = new ParseOptions();
886+
options.setResolveFully(true);
887+
888+
SwaggerParseResult result = new OpenAPIV3Parser().readContents(pathFile, new ArrayList<>(), options );
889+
890+
Assert.assertNotNull(result);
891+
Assert.assertNull(result.getOpenAPI());
892+
Assert.assertNotNull(result.getMessages());
893+
Assert.assertEquals(result.getMessages().size(), 1);
894+
Assert.assertEquals(result.getMessages().get(0), "attribute openapi is missing");
895+
}
896+
881897
@Test
882898
public void testResolveEmpty(@Injectable final List<AuthorizationValue> auths) throws Exception{
883899
String pathFile = FileUtils.readFileToString(new File("src/test/resources/empty-oas.yaml"));

0 commit comments

Comments
 (0)