From c24b408403863bf9c26f9ac3ab9ea8f8435ede0e Mon Sep 17 00:00:00 2001 From: gracekarina <gracekarina.gonzalez@gmail.com> Date: Thu, 3 Oct 2019 21:35:20 -0500 Subject: [PATCH] refs - issue #1190 - fix ArraySchema with additionalProperties deserializing --- .../v3/parser/util/OpenAPIDeserializer.java | 10 +++--- .../v3/parser/test/OpenAPIV3ParserTest.java | 14 ++++++++ .../test/resources/issue1190/issue1190.yaml | 34 +++++++++++++++++++ 3 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 modules/swagger-parser-v3/src/test/resources/issue1190/issue1190.yaml 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 a88fa0199a..7064375b53 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 @@ -2100,10 +2100,12 @@ public Schema getSchema(ObjectNode node, String location, ParseResult result){ : additionalPropertiesBoolean; if(additionalProperties != null) { - schema = - additionalProperties.equals( Boolean.FALSE) - ? new ObjectSchema() - : new MapSchema(); + if (schema == null) { + schema = + additionalProperties.equals(Boolean.FALSE) + ? new ObjectSchema() + : new MapSchema(); + } schema.setAdditionalProperties( additionalProperties); } diff --git a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java index e70d1a2821..41641d7fcb 100644 --- a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java +++ b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java @@ -66,6 +66,20 @@ public class OpenAPIV3ParserTest { protected int serverPort = getDynamicPort(); protected WireMockServer wireMockServer; + @Test + public void testIssue1190() { + OpenAPIV3Parser openApiParser = new OpenAPIV3Parser(); + ParseOptions options = new ParseOptions(); + options.setResolve(true); + options.setFlatten(true); + SwaggerParseResult parseResult = openApiParser.readLocation("issue1190/issue1190.yaml", null, options); + + OpenAPI openAPI = parseResult.getOpenAPI(); + assertNotNull(openAPI.getComponents().getSchemas().get("SomeObj_lorem")); + } + + + @Test public void testIssue1147() { ParseOptions options = new ParseOptions(); diff --git a/modules/swagger-parser-v3/src/test/resources/issue1190/issue1190.yaml b/modules/swagger-parser-v3/src/test/resources/issue1190/issue1190.yaml new file mode 100644 index 0000000000..11d0bd97fe --- /dev/null +++ b/modules/swagger-parser-v3/src/test/resources/issue1190/issue1190.yaml @@ -0,0 +1,34 @@ +openapi: 3.0.0 +info: + version: 1.0.0 + title: Issue 1190 + license: + name: Apache-2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +paths: + /example: + get: + operationId: example + responses: + '200': + description: successful operation + content: + 'application/json': + schema: + $ref: "#/components/schemas/SomeObj" +components: + schemas: + SomeObj: + type: object + properties: + lorem: + type: array + minItems: 1 + additionalProperties: false + items: + type: object + properties: + firstName: + type: string + lastName: + type: string \ No newline at end of file