Make InlineModelResolver resolve vendorExtensions correctly for Schema Object (#3719)

* Fix InlineModelResolver to ensure the vendorExtensions could be accessed via schema object or inline model.

* format the code

* Copy vendor extension to property only.
This commit is contained in:
Zheng Can
2016-09-12 16:09:07 +08:00
committed by wing328
parent bc2f614b92
commit 0c59aefe90
2 changed files with 105 additions and 58 deletions

View File

@@ -191,21 +191,24 @@ public class InlineModelResolverTest {
.response(200, new Response()
.description("it works!")
.schema(new ObjectProperty()
.property("name", new StringProperty())))))
.property("name", new StringProperty()).vendorExtension("x-ext", "ext-prop")))))
.path("/foo/baz", new Path()
.get(new Operation()
.response(200, new Response()
.vendorExtension("x-foo", "bar")
.description("it works!")
.schema(new ObjectProperty()
.property("name", new StringProperty())))));
.property("name", new StringProperty()).vendorExtension("x-ext", "ext-prop")))));
new InlineModelResolver().flatten(swagger);
Map<String, Response> responses = swagger.getPaths().get("/foo/bar").getGet().getResponses();
Response response = responses.get("200");
assertNotNull(response);
assertTrue(response.getSchema() instanceof RefProperty);
Property schema = response.getSchema();
assertTrue(schema instanceof RefProperty);
assertEquals(1, schema.getVendorExtensions().size());
assertEquals("ext-prop", schema.getVendorExtensions().get("x-ext"));
ModelImpl model = (ModelImpl)swagger.getDefinitions().get("inline_response_200");
assertTrue(model.getProperties().size() == 1);
@@ -433,15 +436,17 @@ public class InlineModelResolverTest {
public void resolveInlineArrayResponse() throws Exception {
Swagger swagger = new Swagger();
swagger.path("/foo/baz", new Path()
ArrayProperty schema = new ArrayProperty()
.items(new ObjectProperty()
.property("name", new StringProperty())
.vendorExtension("x-ext", "ext-items"))
.vendorExtension("x-ext", "ext-prop");
swagger.path("/foo/baz", new Path()
.get(new Operation()
.response(200, new Response()
.vendorExtension("x-foo", "bar")
.description("it works!")
.schema(new ArrayProperty()
.items(
new ObjectProperty()
.property("name", new StringProperty()))))));
.schema(schema))));
new InlineModelResolver().flatten(swagger);
@@ -455,6 +460,9 @@ public class InlineModelResolverTest {
assertTrue(responseProperty instanceof ArrayProperty);
ArrayProperty ap = (ArrayProperty) responseProperty;
assertEquals(1, ap.getVendorExtensions().size());
assertEquals("ext-prop", ap.getVendorExtensions().get("x-ext"));
Property p = ap.getItems();
assertNotNull(p);
@@ -463,6 +471,8 @@ public class InlineModelResolverTest {
assertEquals(rp.getType(), "ref");
assertEquals(rp.get$ref(), "#/definitions/inline_response_200");
assertEquals(rp.getSimpleRef(), "inline_response_200");
assertEquals(1, rp.getVendorExtensions().size());
assertEquals("ext-items", rp.getVendorExtensions().get("x-ext"));
Model inline = swagger.getDefinitions().get("inline_response_200");
assertNotNull(inline);
@@ -522,6 +532,7 @@ public class InlineModelResolverTest {
MapProperty schema = new MapProperty();
schema.setAdditionalProperties(new StringProperty());
schema.setVendorExtension("x-ext", "ext-prop");
swagger.path("/foo/baz", new Path()
.get(new Operation()
@@ -537,6 +548,8 @@ public class InlineModelResolverTest {
Property property = response.getSchema();
assertTrue(property instanceof MapProperty);
assertTrue(swagger.getDefinitions().size() == 0);
assertEquals(1, property.getVendorExtensions().size());
assertEquals("ext-prop", property.getVendorExtensions().get("x-ext"));
}
@Test
@@ -546,6 +559,7 @@ public class InlineModelResolverTest {
MapProperty schema = new MapProperty();
schema.setAdditionalProperties(new ObjectProperty()
.property("name", new StringProperty()));
schema.setVendorExtension("x-ext", "ext-prop");
swagger.path("/foo/baz", new Path()
.get(new Operation()
@@ -558,6 +572,8 @@ public class InlineModelResolverTest {
Response response = swagger.getPaths().get("/foo/baz").getGet().getResponses().get("200");
Property property = response.getSchema();
assertTrue(property instanceof MapProperty);
assertEquals(1, property.getVendorExtensions().size());
assertEquals("ext-prop", property.getVendorExtensions().get("x-ext"));
assertTrue(swagger.getDefinitions().size() == 1);
Model inline = swagger.getDefinitions().get("inline_response_200");