add support for inline array model defined in inline model

This commit is contained in:
wing328 2015-12-17 16:44:35 +08:00
parent c5c1712374
commit c8a10aee33

View File

@ -157,6 +157,7 @@ public class InlineModelResolver {
flattenProperties(properties, modelName); flattenProperties(properties, modelName);
} else if (model instanceof ArrayModel) { } else if (model instanceof ArrayModel) {
LOGGER.info("arry model of " + modelName);
ArrayModel m = (ArrayModel) model; ArrayModel m = (ArrayModel) model;
Property inner = m.getItems(); Property inner = m.getItems();
if (inner instanceof ObjectProperty) { if (inner instanceof ObjectProperty) {
@ -223,6 +224,7 @@ public class InlineModelResolver {
Property property = properties.get(key); Property property = properties.get(key);
if (property instanceof ObjectProperty && ((ObjectProperty)property).getProperties().size() > 0) { if (property instanceof ObjectProperty && ((ObjectProperty)property).getProperties().size() > 0) {
String modelName = uniqueName(path + "_" + key); String modelName = uniqueName(path + "_" + key);
LOGGER.info("flattening: " + modelName);
ObjectProperty op = (ObjectProperty) property; ObjectProperty op = (ObjectProperty) property;
Model model = modelFromProperty(op, modelName); Model model = modelFromProperty(op, modelName);
@ -237,7 +239,31 @@ public class InlineModelResolver {
addGenerated(modelName, model); addGenerated(modelName, model);
swagger.addDefinition(modelName, model); swagger.addDefinition(modelName, model);
} }
} else if (property instanceof ArrayProperty) {
ArrayProperty ap = (ArrayProperty) property;
Property inner = ap.getItems();
if (inner instanceof ObjectProperty) {
String modelName = uniqueName(path + "_" + key);
LOGGER.info("flattening(array inner): " + modelName);
ObjectProperty op = (ObjectProperty) inner;
flattenProperties(op.getProperties(), path);
Model inner_model = modelFromProperty(op, modelName);
String existing = matchGenerated(inner_model);
if (existing != null) {
ap.setItems(new RefProperty(existing));
} else { } else {
ap.setItems(new RefProperty(modelName));
addGenerated(modelName, inner_model);
LOGGER.info("flattening(array inner): " + modelName);
swagger.addDefinition(modelName, inner_model);
}
}
} else {
LOGGER.info("not flattening " + key);
} }
} }
if (propsToUpdate.size() > 0) { if (propsToUpdate.size() > 0) {