forked from loafle/openapi-generator-original
added map support
This commit is contained in:
parent
3cf1f1a56a
commit
89dc4d29ab
@ -43,13 +43,10 @@ public class InlineModelResolver {
|
|||||||
BodyParameter bp = (BodyParameter) parameter;
|
BodyParameter bp = (BodyParameter) parameter;
|
||||||
if (bp.getSchema() != null) {
|
if (bp.getSchema() != null) {
|
||||||
Model model = bp.getSchema();
|
Model model = bp.getSchema();
|
||||||
|
|
||||||
if(model instanceof ModelImpl) {
|
|
||||||
String existing = matchGenerated(model);
|
String existing = matchGenerated(model);
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
bp.setSchema(new RefModel(existing));
|
bp.setSchema(new RefModel(existing));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
String name = uniqueName(bp.getName());
|
String name = uniqueName(bp.getName());
|
||||||
bp.setSchema(new RefModel(name));
|
bp.setSchema(new RefModel(name));
|
||||||
addGenerated(name, model);
|
addGenerated(name, model);
|
||||||
@ -59,7 +56,6 @@ public class InlineModelResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Map<String, Response> responses = operation.getResponses();
|
Map<String, Response> responses = operation.getResponses();
|
||||||
if (responses != null) {
|
if (responses != null) {
|
||||||
for (String key : responses.keySet()) {
|
for (String key : responses.keySet()) {
|
||||||
@ -73,14 +69,12 @@ public class InlineModelResolver {
|
|||||||
String existing = matchGenerated(model);
|
String existing = matchGenerated(model);
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
response.setSchema(new RefProperty(existing));
|
response.setSchema(new RefProperty(existing));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
response.setSchema(new RefProperty(modelName));
|
response.setSchema(new RefProperty(modelName));
|
||||||
addGenerated(modelName, model);
|
addGenerated(modelName, model);
|
||||||
swagger.addDefinition(modelName, model);
|
swagger.addDefinition(modelName, model);
|
||||||
}
|
}
|
||||||
}
|
} else if (property instanceof ArrayProperty) {
|
||||||
else if(property instanceof ArrayProperty) {
|
|
||||||
String modelName = uniqueName("inline_response_" + key);
|
String modelName = uniqueName("inline_response_" + key);
|
||||||
ArrayProperty ap = (ArrayProperty) property;
|
ArrayProperty ap = (ArrayProperty) property;
|
||||||
Model model = modelFromProperty(ap, modelName);
|
Model model = modelFromProperty(ap, modelName);
|
||||||
@ -94,16 +88,14 @@ public class InlineModelResolver {
|
|||||||
swagger.addDefinition(modelName, model);
|
swagger.addDefinition(modelName, model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if (property instanceof MapProperty) {
|
||||||
else if(property instanceof MapProperty) {
|
|
||||||
MapProperty op = (MapProperty) property;
|
MapProperty op = (MapProperty) property;
|
||||||
String modelName = uniqueName("inline_response_" + key);
|
String modelName = uniqueName("inline_response_" + key);
|
||||||
Model model = modelFromProperty(op, modelName);
|
Model model = modelFromProperty(op, modelName);
|
||||||
String existing = matchGenerated(model);
|
String existing = matchGenerated(model);
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
response.setSchema(new RefProperty(existing));
|
response.setSchema(new RefProperty(existing));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
response.setSchema(new RefProperty(modelName));
|
response.setSchema(new RefProperty(modelName));
|
||||||
addGenerated(modelName, model);
|
addGenerated(modelName, model);
|
||||||
swagger.addDefinition(modelName, model);
|
swagger.addDefinition(modelName, model);
|
||||||
@ -127,8 +119,7 @@ public class InlineModelResolver {
|
|||||||
Map<String, Property> properties = m.getProperties();
|
Map<String, Property> properties = m.getProperties();
|
||||||
flattenProperties(properties, modelName);
|
flattenProperties(properties, modelName);
|
||||||
|
|
||||||
}
|
} else if (model instanceof ArrayModel) {
|
||||||
else if (model instanceof ArrayModel) {
|
|
||||||
ArrayModel m = (ArrayModel) model;
|
ArrayModel m = (ArrayModel) model;
|
||||||
Property inner = m.getItems();
|
Property inner = m.getItems();
|
||||||
if (inner instanceof ObjectProperty) {
|
if (inner instanceof ObjectProperty) {
|
||||||
@ -140,13 +131,11 @@ public class InlineModelResolver {
|
|||||||
swagger.addDefinition(innerModelName, innerModel);
|
swagger.addDefinition(innerModelName, innerModel);
|
||||||
addGenerated(innerModelName, innerModel);
|
addGenerated(innerModelName, innerModel);
|
||||||
m.setItems(new RefProperty(innerModelName));
|
m.setItems(new RefProperty(innerModelName));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
m.setItems(new RefProperty(existing));
|
m.setItems(new RefProperty(existing));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if (model instanceof ComposedModel) {
|
||||||
else if (model instanceof ComposedModel) {
|
|
||||||
ComposedModel m = (ComposedModel) model;
|
ComposedModel m = (ComposedModel) model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -178,8 +167,7 @@ public class InlineModelResolver {
|
|||||||
}
|
}
|
||||||
if (swagger.getDefinitions() == null) {
|
if (swagger.getDefinitions() == null) {
|
||||||
return name;
|
return name;
|
||||||
}
|
} else if (!swagger.getDefinitions().containsKey(name)) {
|
||||||
else if (!swagger.getDefinitions().containsKey(name)) {
|
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
count += 1;
|
count += 1;
|
||||||
@ -206,8 +194,7 @@ public class InlineModelResolver {
|
|||||||
|
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
propsToUpdate.put(key, new RefProperty(existing));
|
propsToUpdate.put(key, new RefProperty(existing));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
propsToUpdate.put(key, new RefProperty(modelName));
|
propsToUpdate.put(key, new RefProperty(modelName));
|
||||||
modelsToAdd.put(modelName, model);
|
modelsToAdd.put(modelName, model);
|
||||||
addGenerated(modelName, model);
|
addGenerated(modelName, model);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package io.swagger.codegen;
|
package io.swagger.codegen;
|
||||||
|
|
||||||
|
|
||||||
|
import com.sun.xml.internal.ws.wsdl.writer.document.soap.Body;
|
||||||
import io.swagger.models.*;
|
import io.swagger.models.*;
|
||||||
import io.swagger.models.parameters.BodyParameter;
|
import io.swagger.models.parameters.BodyParameter;
|
||||||
import io.swagger.models.parameters.Parameter;
|
import io.swagger.models.parameters.Parameter;
|
||||||
@ -128,6 +129,31 @@ public class InlineModelResolverTest {
|
|||||||
assertNotNull(impl.getProperties().get("name"));
|
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
|
@Test
|
||||||
public void resolveInlineArrayResponse() throws Exception {
|
public void resolveInlineArrayResponse() throws Exception {
|
||||||
Swagger swagger = new Swagger();
|
Swagger swagger = new Swagger();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user