From 71991dfb64f10ea33f223d6de0909d3dffc1ab6b Mon Sep 17 00:00:00 2001 From: gracekarina Date: Fri, 2 Nov 2018 16:53:43 -0500 Subject: [PATCH 1/3] test for issue #901 --- .../io/swagger/parser/SwaggerParserTest.java | 7 ++++ .../src/test/resources/issue-901/ref.yaml | 33 +++++++++++++++++++ .../src/test/resources/issue-901/spec.yaml | 9 +++++ 3 files changed, 49 insertions(+) create mode 100644 modules/swagger-parser/src/test/resources/issue-901/ref.yaml create mode 100644 modules/swagger-parser/src/test/resources/issue-901/spec.yaml 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 37405a1102..53bc52d231 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 @@ -69,6 +69,13 @@ public void testIssueRelativeRefs2(){ assertEquals(refProperty.get$ref(),"#/definitions/simpleIDType_v01"); } + @Test + public void testIssue901() { + Swagger swagger = new SwaggerParser().read("issue-901/spec.yaml"); + assertNotNull(swagger); + Yaml.prettyPrint(swagger); + } + @Test public void testIssue435() { Swagger swagger = new SwaggerParser().read("issue-435/main.yaml"); diff --git a/modules/swagger-parser/src/test/resources/issue-901/ref.yaml b/modules/swagger-parser/src/test/resources/issue-901/ref.yaml new file mode 100644 index 0000000000..094abb907d --- /dev/null +++ b/modules/swagger-parser/src/test/resources/issue-901/ref.yaml @@ -0,0 +1,33 @@ +### Domains, a place to put your reusable components + + +info: + title: "aa" + description: "swos552" + version: '1.0.0' + +definitions: + Test.Definition: + type: object + properties: + stuff: + type: array + items: + $ref: '#/definitions/TESTTHING' + TESTTHING: + type: object + properties: + prop: + type: string +pathitems: + path-test: + put: + description: test ref + operationId: test + produces: + - application/json + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Test.Definition' \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/issue-901/spec.yaml b/modules/swagger-parser/src/test/resources/issue-901/spec.yaml new file mode 100644 index 0000000000..ebaee269a7 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/issue-901/spec.yaml @@ -0,0 +1,9 @@ +swagger: '2.0' +info: + version: '1.01' + title: testswos55 + description: testswos55 +basePath: /test +paths: + '/test': + $ref: 'ref.yaml/#/pathitems/path-test' \ No newline at end of file From a27fff30ffac291b0234a1e51c4b301f149e835b Mon Sep 17 00:00:00 2001 From: gracekarina Date: Tue, 6 Nov 2018 17:49:56 -0500 Subject: [PATCH 2/3] issue internal ref --- .../java/io/swagger/parser/processors/ModelProcessor.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ModelProcessor.java b/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ModelProcessor.java index 2bcca6726b..06b99d1555 100644 --- a/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ModelProcessor.java +++ b/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ModelProcessor.java @@ -7,6 +7,7 @@ import io.swagger.models.RefModel; import io.swagger.models.Swagger; import io.swagger.models.properties.Property; +import io.swagger.models.refs.RefType; import io.swagger.parser.ResolverCache; import java.util.List; @@ -96,7 +97,8 @@ private void processRefModel(RefModel refModel) { } if (newRef != null) { - refModel.set$ref(newRef); + refModel.set$ref(RefType.DEFINITION.getInternalPrefix() + newRef); + } } From bedef1b7b0f508b9401a94657da5b958874e399e Mon Sep 17 00:00:00 2001 From: gracekarina Date: Wed, 7 Nov 2018 12:17:52 -0500 Subject: [PATCH 3/3] issue #901 - spec1 --- .../processors/ExternalRefProcessor.java | 4 ++- .../io/swagger/parser/SwaggerParserTest.java | 9 ++++- .../src/test/resources/issue-901/ref2.yaml | 35 +++++++++++++++++++ .../src/test/resources/issue-901/spec2.yaml | 9 +++++ 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 modules/swagger-parser/src/test/resources/issue-901/ref2.yaml create mode 100644 modules/swagger-parser/src/test/resources/issue-901/spec2.yaml diff --git a/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ExternalRefProcessor.java b/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ExternalRefProcessor.java index 5a6c94d9b8..6bbaa1fe02 100644 --- a/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ExternalRefProcessor.java +++ b/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ExternalRefProcessor.java @@ -7,6 +7,7 @@ import io.swagger.models.properties.Property; import io.swagger.models.properties.RefProperty; import io.swagger.models.refs.RefFormat; +import io.swagger.models.refs.RefType; import io.swagger.parser.ResolverCache; import io.swagger.parser.util.RefUtils; import org.apache.commons.lang3.StringUtils; @@ -244,7 +245,8 @@ private void processRefProperty(RefProperty subRef, String externalFile) { String joinedRef = join(externalFile, subRef.get$ref()); subRef.set$ref(processRefToExternalDefinition(joinedRef, subRef.getRefFormat())); } else { - subRef.set$ref(processRefToExternalDefinition(externalFile + subRef.get$ref(), RefFormat.RELATIVE)); + String processRef = processRefToExternalDefinition(externalFile + subRef.get$ref(), RefFormat.RELATIVE); + subRef.set$ref(RefType.DEFINITION.getInternalPrefix()+processRef); } } 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 53bc52d231..80679d26d0 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 @@ -69,11 +69,18 @@ public void testIssueRelativeRefs2(){ assertEquals(refProperty.get$ref(),"#/definitions/simpleIDType_v01"); } + @Test + public void testIssue901_2() { + Swagger swagger = new SwaggerParser().read("issue-901/spec2.yaml"); + assertNotNull(swagger); + Yaml.prettyPrint(swagger); + } + @Test public void testIssue901() { Swagger swagger = new SwaggerParser().read("issue-901/spec.yaml"); assertNotNull(swagger); - Yaml.prettyPrint(swagger); + } @Test diff --git a/modules/swagger-parser/src/test/resources/issue-901/ref2.yaml b/modules/swagger-parser/src/test/resources/issue-901/ref2.yaml new file mode 100644 index 0000000000..ac89aacfca --- /dev/null +++ b/modules/swagger-parser/src/test/resources/issue-901/ref2.yaml @@ -0,0 +1,35 @@ +### Domains, a place to put your reusable components + + +info: + title: "aa" + description: "swos55" + version: '1.0.0' + +definitions: + Test.Definition: + type: object + properties: + stuff: + type: array + items: + $ref: '#/definitions/TEST.THING.OUT.Stuff' + TEST.THING.OUT.Stuff: + type: object + properties: + prop: + type: string +pathitems: + path-test: + put: + description: test ref + operationId: test + produces: + - application/json + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Test.Definition' + + diff --git a/modules/swagger-parser/src/test/resources/issue-901/spec2.yaml b/modules/swagger-parser/src/test/resources/issue-901/spec2.yaml new file mode 100644 index 0000000000..2932a7e1db --- /dev/null +++ b/modules/swagger-parser/src/test/resources/issue-901/spec2.yaml @@ -0,0 +1,9 @@ +swagger: '2.0' +info: + version: '1.01' + title: testswos55 + description: testswos55 +basePath: /test +paths: + '/test': + $ref: 'ref2.yaml/#/pathitems/path-test' \ No newline at end of file