added models support per #291

This commit is contained in:
Tony Tam 2014-10-01 22:12:50 -07:00
parent ffda821f68
commit 48f8e16fb0
3 changed files with 16 additions and 7 deletions

View File

@ -7,9 +7,9 @@ import java.util.*;
public class CodegenModel { public class CodegenModel {
public String parent; public String parent;
public String name, classname, description; public String name, classname, description, classVarName, modelJson;
public String defaultValue; public String defaultValue;
public List<CodegenProperty> vars = new ArrayList<CodegenProperty>(); public List<CodegenProperty> vars = new ArrayList<CodegenProperty>();
public Set<String> imports = new HashSet<String>(); public Set<String> imports = new HashSet<String>();
public Boolean hasVars, emptyVars; public Boolean hasVars, emptyVars, hasMoreModels;
} }

View File

@ -316,6 +316,8 @@ public class DefaultCodegen {
m.name = name; m.name = name;
m.description = model.getDescription(); m.description = model.getDescription();
m.classname = toModelName(name); m.classname = toModelName(name);
m.classVarName = toVarName(name);
m.modelJson = Json.pretty(model);
int count = 0; int count = 0;
if(model instanceof ArrayModel) { if(model instanceof ArrayModel) {
ArrayModel am = (ArrayModel) model; ArrayModel am = (ArrayModel) model;

View File

@ -34,21 +34,22 @@ public class DefaultGenerator implements Generator {
} }
try { try {
config.processOpts(); config.processOpts();
Map<String, Object> models = null; // models = null;
List<Object> allOperations = new ArrayList<Object>(); List<Object> allOperations = new ArrayList<Object>();
List<Object> allModels = new ArrayList<Object>();
// models // models
Map<String, Model> definitions = swagger.getDefinitions(); Map<String, Model> definitions = swagger.getDefinitions();
for(String name: definitions.keySet()) { for(String name: definitions.keySet()) {
Model model = definitions.get(name); Model model = definitions.get(name);
Map<String, Model> modelMap = new HashMap<String, Model>(); Map<String, Model> modelMap = new HashMap<String, Model>();
modelMap.put(name, model); modelMap.put(name, model);
models = processModels(config, modelMap); Map<String, Object> models = processModels(config, modelMap);
models.putAll(config.additionalProperties()); models.putAll(config.additionalProperties());
allModels.add(((List<Object>)models.get("models")).get(0));
for(String templateName : config.modelTemplateFiles().keySet()) { for(String templateName : config.modelTemplateFiles().keySet()) {
String suffix = config.modelTemplateFiles().get(templateName); String suffix = config.modelTemplateFiles().get(templateName);
String filename = config.modelFileFolder() + File.separator + config.toModelFilename(name) + suffix; String filename = config.modelFileFolder() + File.separator + config.toModelFilename(name) + suffix;
String template = readTemplate(config.templateDir() + File.separator + templateName); String template = readTemplate(config.templateDir() + File.separator + templateName);
Template tmpl = Mustache.compiler() Template tmpl = Mustache.compiler()
.withLoader(new Mustache.TemplateLoader() { .withLoader(new Mustache.TemplateLoader() {
@ -58,7 +59,6 @@ public class DefaultGenerator implements Generator {
}) })
.defaultValue("") .defaultValue("")
.compile(template); .compile(template);
writeToFile(filename, tmpl.execute(models)); writeToFile(filename, tmpl.execute(models));
} }
} }
@ -101,6 +101,13 @@ public class DefaultGenerator implements Generator {
Map<String, Object> apis = new HashMap<String, Object>(); Map<String, Object> apis = new HashMap<String, Object>();
apis.put("apis", allOperations); apis.put("apis", allOperations);
bundle.put("apiInfo", apis); bundle.put("apiInfo", apis);
bundle.put("models", allModels);
for(int i = 0; i < allModels.size() - 1; i++) {
HashMap<String, CodegenModel> cm = (HashMap<String, CodegenModel>) allModels.get(i);
CodegenModel m = cm.get("model");
m.hasMoreModels = true;
}
for(SupportingFile support : config.supportingFiles()) { for(SupportingFile support : config.supportingFiles()) {
String outputFolder = config.outputFolder(); String outputFolder = config.outputFolder();