From 40508f7bd44c6bbc43ada5d83103013ed3123198 Mon Sep 17 00:00:00 2001 From: Risto Virtanen Date: Wed, 17 Aug 2016 12:54:17 +0300 Subject: [PATCH] Fix #286 --- .../parser/processors/DefinitionsProcessor.java | 3 +++ .../java/io/swagger/parser/SwaggerParserTest.java | 11 +++++++++++ .../resources/nested-list-references/Allergy.yaml | 6 ++++++ .../test/resources/nested-list-references/Pet.yaml | 6 ++++++ .../resources/nested-list-references/PetList.yaml | 6 ++++++ .../test/resources/nested-list-references/api.yaml | 11 +++++++++++ 6 files changed, 43 insertions(+) create mode 100644 modules/swagger-parser/src/test/resources/nested-list-references/Allergy.yaml create mode 100644 modules/swagger-parser/src/test/resources/nested-list-references/Pet.yaml create mode 100644 modules/swagger-parser/src/test/resources/nested-list-references/PetList.yaml create mode 100644 modules/swagger-parser/src/test/resources/nested-list-references/api.yaml diff --git a/modules/swagger-parser/src/main/java/io/swagger/parser/processors/DefinitionsProcessor.java b/modules/swagger-parser/src/main/java/io/swagger/parser/processors/DefinitionsProcessor.java index 369efc6fc8..2db97304e0 100644 --- a/modules/swagger-parser/src/main/java/io/swagger/parser/processors/DefinitionsProcessor.java +++ b/modules/swagger-parser/src/main/java/io/swagger/parser/processors/DefinitionsProcessor.java @@ -51,5 +51,8 @@ public void processDefinitions() { } } + if (!swagger.getDefinitions().keySet().equals(keySet)) { + processDefinitions(); + } } } 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 4b4bf918bb..cf97fa666c 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 @@ -197,6 +197,17 @@ public void testLoadExternalNestedDefinitions() throws Exception { assertEquals(((RefModel) definitions.get("i")).get$ref(), "#/definitions/k"); } + @Test + public void testLoadExternalNestedListRefDefinitions() throws Exception { + SwaggerParser parser = new SwaggerParser(); + final Swagger swagger = parser.read("src/test/resources/nested-list-references/api.yaml"); + Map definitions = swagger.getDefinitions(); + assertTrue(!definitions.isEmpty()); + assertTrue(definitions.containsKey("PetList")); + assertTrue(definitions.containsKey("Pet")); + assertTrue(definitions.containsKey("Allergy")); + } + @Test public void testPetstore() throws Exception { SwaggerParser parser = new SwaggerParser(); diff --git a/modules/swagger-parser/src/test/resources/nested-list-references/Allergy.yaml b/modules/swagger-parser/src/test/resources/nested-list-references/Allergy.yaml new file mode 100644 index 0000000000..a2e223f823 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-list-references/Allergy.yaml @@ -0,0 +1,6 @@ +title: "Allergy" +properties: + name: + type: string + severity: + type: number \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-list-references/Pet.yaml b/modules/swagger-parser/src/test/resources/nested-list-references/Pet.yaml new file mode 100644 index 0000000000..65e6ac65fd --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-list-references/Pet.yaml @@ -0,0 +1,6 @@ +title: "Pet" +properties: + allergies: + type: array + items: + $ref: "./Allergy.yaml" \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-list-references/PetList.yaml b/modules/swagger-parser/src/test/resources/nested-list-references/PetList.yaml new file mode 100644 index 0000000000..93ec5872a9 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-list-references/PetList.yaml @@ -0,0 +1,6 @@ +title: "PetList" +properties: + pets: + type: array + items: + $ref: "./Pet.yaml" \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-list-references/api.yaml b/modules/swagger-parser/src/test/resources/nested-list-references/api.yaml new file mode 100644 index 0000000000..036bcfe2ca --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-list-references/api.yaml @@ -0,0 +1,11 @@ +swagger: "2.0" +info: + title: test data for nested list ext references + version: '0.0.0' +paths: + /: + get: + responses: + "200": + schema: + $ref: "./PetList.yaml" \ No newline at end of file