From eddf42e05ed8ea283dd6836e6316d546bbec778d Mon Sep 17 00:00:00 2001 From: gracekarina Date: Thu, 6 Jun 2019 19:54:21 -0500 Subject: [PATCH] fix for issue #1047 v1 --- .../parser/util/SwaggerDeserializer.java | 4 +++ .../io/swagger/parser/SwaggerParserTest.java | 7 ++++ .../src/test/resources/issue-111.yaml | 34 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 modules/swagger-parser/src/test/resources/issue-111.yaml diff --git a/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java b/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java index 3d9f772436..4556e3f21a 100644 --- a/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java +++ b/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java @@ -5,6 +5,7 @@ import io.swagger.models.*; import io.swagger.models.auth.*; import io.swagger.models.parameters.*; +import io.swagger.models.properties.ArrayProperty; import io.swagger.models.properties.Property; import io.swagger.models.properties.PropertyBuilder; import io.swagger.models.properties.RefProperty; @@ -911,6 +912,9 @@ public Model definition(ObjectNode node, String location, ParseResult result) { if(propertyNode.getNodeType().equals(JsonNodeType.OBJECT)) { ObjectNode on = (ObjectNode) propertyNode; Property property = property(on, location, result); + if("array".equals( property.getType()) && !(property instanceof ArrayProperty && ((ArrayProperty) property).getItems() != null)) { + result.missing(location, "items"); + } impl.property(propertyName, property); } else { diff --git a/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java b/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java index 5923b78ea4..c78cd71905 100644 --- a/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java +++ b/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java @@ -70,6 +70,13 @@ public void testIssueRelativeRefs2(){ assertEquals(refProperty.get$ref(),"#/definitions/simpleIDType_v01"); } + @Test + public void testIssue111() { + SwaggerDeserializationResult result = new SwaggerParser().readWithInfo("issue-111.yaml", null, true); + assertTrue(result.getMessages().get(0).equals("attribute definitions.Filter.items is missing")); + assertNotNull(result.getSwagger()); + } + @Test public void testIssueDefinitionWithDots_2() { Swagger swagger = new SwaggerParser().read("SimpleAPI.yaml"); diff --git a/modules/swagger-parser/src/test/resources/issue-111.yaml b/modules/swagger-parser/src/test/resources/issue-111.yaml new file mode 100644 index 0000000000..8923e1a5f5 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/issue-111.yaml @@ -0,0 +1,34 @@ +swagger: '2.0' +info: + version: '0.0.2' + title: 'Test' + description: + This is the test API documentation +produces: + - application/json +paths: + + '/test': + get: + summary: test + description: Test Endpoint + produces: + - application/json + operationId: getTest + parameters: + - name: query + in: query + description: Query That Tests + required: true + type: string + responses: + 200: + description: TestResult + schema: + $ref: '#/definitions/Filter' +definitions: + Filter: + description: Contains the the information for filter presentation + properties: + hints: + type: array \ No newline at end of file