added map support

This commit is contained in:
Tony Tam 2015-10-18 21:05:57 -07:00
parent 3cf1f1a56a
commit 89dc4d29ab
2 changed files with 78 additions and 65 deletions

View File

@ -43,13 +43,10 @@ public class InlineModelResolver {
BodyParameter bp = (BodyParameter) parameter;
if (bp.getSchema() != null) {
Model model = bp.getSchema();
if(model instanceof ModelImpl) {
String existing = matchGenerated(model);
if (existing != null) {
bp.setSchema(new RefModel(existing));
}
else {
} else {
String name = uniqueName(bp.getName());
bp.setSchema(new RefModel(name));
addGenerated(name, model);
@ -59,7 +56,6 @@ public class InlineModelResolver {
}
}
}
}
Map<String, Response> responses = operation.getResponses();
if (responses != null) {
for (String key : responses.keySet()) {
@ -73,14 +69,12 @@ public class InlineModelResolver {
String existing = matchGenerated(model);
if (existing != null) {
response.setSchema(new RefProperty(existing));
}
else {
} else {
response.setSchema(new RefProperty(modelName));
addGenerated(modelName, model);
swagger.addDefinition(modelName, model);
}
}
else if(property instanceof ArrayProperty) {
} else if (property instanceof ArrayProperty) {
String modelName = uniqueName("inline_response_" + key);
ArrayProperty ap = (ArrayProperty) property;
Model model = modelFromProperty(ap, modelName);
@ -94,16 +88,14 @@ public class InlineModelResolver {
swagger.addDefinition(modelName, model);
}
}
}
else if(property instanceof MapProperty) {
} else if (property instanceof MapProperty) {
MapProperty op = (MapProperty) property;
String modelName = uniqueName("inline_response_" + key);
Model model = modelFromProperty(op, modelName);
String existing = matchGenerated(model);
if (existing != null) {
response.setSchema(new RefProperty(existing));
}
else {
} else {
response.setSchema(new RefProperty(modelName));
addGenerated(modelName, model);
swagger.addDefinition(modelName, model);
@ -127,8 +119,7 @@ public class InlineModelResolver {
Map<String, Property> properties = m.getProperties();
flattenProperties(properties, modelName);
}
else if (model instanceof ArrayModel) {
} else if (model instanceof ArrayModel) {
ArrayModel m = (ArrayModel) model;
Property inner = m.getItems();
if (inner instanceof ObjectProperty) {
@ -140,13 +131,11 @@ public class InlineModelResolver {
swagger.addDefinition(innerModelName, innerModel);
addGenerated(innerModelName, innerModel);
m.setItems(new RefProperty(innerModelName));
}
else {
} else {
m.setItems(new RefProperty(existing));
}
}
}
else if (model instanceof ComposedModel) {
} else if (model instanceof ComposedModel) {
ComposedModel m = (ComposedModel) model;
}
}
@ -178,8 +167,7 @@ public class InlineModelResolver {
}
if (swagger.getDefinitions() == null) {
return name;
}
else if (!swagger.getDefinitions().containsKey(name)) {
} else if (!swagger.getDefinitions().containsKey(name)) {
return name;
}
count += 1;
@ -206,8 +194,7 @@ public class InlineModelResolver {
if (existing != null) {
propsToUpdate.put(key, new RefProperty(existing));
}
else {
} else {
propsToUpdate.put(key, new RefProperty(modelName));
modelsToAdd.put(modelName, model);
addGenerated(modelName, model);

View File

@ -1,6 +1,7 @@
package io.swagger.codegen;
import com.sun.xml.internal.ws.wsdl.writer.document.soap.Body;
import io.swagger.models.*;
import io.swagger.models.parameters.BodyParameter;
import io.swagger.models.parameters.Parameter;
@ -128,6 +129,31 @@ public class InlineModelResolverTest {
assertNotNull(impl.getProperties().get("name"));
}
@Test
public void resolveInlineArrayBodyParameter() throws Exception {
Swagger swagger = new Swagger();
swagger.path("/hello", new Path()
.get(new Operation()
.parameter(new BodyParameter()
.name("body")
.schema(new ArrayModel()
.items(new StringProperty())))));
new InlineModelResolver().flatten(swagger);
Parameter param = swagger.getPaths().get("/hello").getGet().getParameters().get(0);
assertTrue(param instanceof BodyParameter);
BodyParameter bp = (BodyParameter) param;
Model schema = bp.getSchema();
assertTrue(schema instanceof RefModel);
Model model = swagger.getDefinitions().get("body");
assertTrue(model instanceof ArrayModel);
}
@Test
public void resolveInlineArrayResponse() throws Exception {
Swagger swagger = new Swagger();