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 eafc04cf75..fb6586b06d 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 @@ -1199,7 +1199,19 @@ public Response response(ObjectNode node, String location, ParseResult result) { result.invalidType(location, "$ref", "string", node); } } else { - output.responseSchema(Json.mapper().convertValue(schema, Model.class)); + String l = null; + JsonNode ln = schema.get("name"); + if (ln != null) { + l = ln.asText(); + } else { + l = "['unknown']"; + } + location += ".[" + l + "]"; + + Model model = definition(schema, location, result); + if (model != null) { + output.responseSchema(model); + } } } 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 d8d3e01c88..f2c154f9dc 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 @@ -1715,4 +1715,17 @@ public void testInlineModelResolverByLocation() { assertTrue(userAddress.getProperties().containsKey("city")); assertTrue(userAddress.getProperties().containsKey("street")); } + + @Test + public void testIssue1552() throws Exception { + Swagger swagger = new SwaggerParser().read("src/test/resources/issue1552.yaml"); + + Assert.assertNotNull(swagger); + Assert.assertNotNull(swagger.getResponses().get("Response")); + Assert.assertNotNull(swagger.getResponses().get("Response").getResponseSchema().getProperties()); + Assert.assertNotNull(swagger.getResponses().get("Response").getResponseSchema().getProperties().get("Report")); + + + } + } diff --git a/modules/swagger-parser/src/test/resources/issue1552.yaml b/modules/swagger-parser/src/test/resources/issue1552.yaml new file mode 100644 index 0000000000..2eb11007e1 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/issue1552.yaml @@ -0,0 +1,34 @@ +swagger: '2.0' +info: + title: Some API + description: >- + This is the Som Api + version: 2.0.0 +basePath: /somepath +schemes: + - https +consumes: + - application/json +produces: + - application/json +paths: + /somepath: + get: + description: > + my description + operationId: MyGet + responses: + '200': + $ref: '#/responses/Response' +responses: + Response: + description: Response + schema: + type: object + required: + - Report + properties: + Report: + type: string + additionalProperties: false +