diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/SchemaProcessor.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/SchemaProcessor.java index 9dbee9987a..6eab18cf36 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/SchemaProcessor.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/SchemaProcessor.java @@ -65,6 +65,9 @@ public void processSchema(Schema schema) { public void processSchemaType(Schema schema){ + if (schema == null) { + return; + } if (schema instanceof ArraySchema) { processArraySchema((ArraySchema) schema); } @@ -215,7 +218,7 @@ private void changeDiscriminatorMapping(ComposedSchema composedSchema, String ol public void processArraySchema(ArraySchema arraySchema) { final Schema items = arraySchema.getItems(); - if (items.get$ref() != null) { + if (items != null && items.get$ref() != null) { processReferenceSchema(items); }else{ processSchemaType(items); diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/InlineModelResolver.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/InlineModelResolver.java index 741874873c..045697168e 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/InlineModelResolver.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/InlineModelResolver.java @@ -735,6 +735,9 @@ public void copyVendorExtensions(Schema source, Schema target) { } private boolean isObjectSchema(Schema schema) { + if (schema == null) { + return false; + } return schema instanceof ObjectSchema || "object".equalsIgnoreCase(schema.getType()) || (schema.getType() == null && schema.getProperties() != null && !schema.getProperties().isEmpty() diff --git a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIResolverTest.java b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIResolverTest.java index f600b6fa4d..5820e23775 100644 --- a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIResolverTest.java +++ b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIResolverTest.java @@ -1464,4 +1464,13 @@ private static int getDynamicPort() { return new Random().ints(50000, 60000).findFirst().getAsInt(); } + @Test + public void testResolveArraySchemaItemsNullPointerException() { + final ParseOptions options = new ParseOptions(); + options.setResolve(true); + final String actualLocation = "C:/Users/ggregory/git/r/api-gateway/ais-swagger-test-fixtures/src/test/resources/APIs-guru/openapi-directory-master/APIs/clearblade.com/3.0/swagger.yaml"; + final OpenAPI output = new OpenAPIV3Parser().read(actualLocation, null, options); + new OpenAPIResolver(output, null, actualLocation).resolve(); + } + }