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