diff --git a/code-gen/conf/templates/java/ModelObject.st b/code-gen/conf/templates/java/ModelObject.st index db77c78fed4..fb4d86e869c 100644 --- a/code-gen/conf/templates/java/ModelObject.st +++ b/code-gen/conf/templates/java/ModelObject.st @@ -17,7 +17,7 @@ public class $className$ extends $extends$ { $fields:{ field | //$field.description$ - private $field.attributeDefinition.returnType$ $field.attributeDefinition.name$ $field.attributeDefinition.initialization$; + private $field.fieldDefinition.returnType$ $field.fieldDefinition.name$ $field.fieldDefinition.initialization$; }$ $fields:{ field | @@ -26,12 +26,12 @@ public class $className$ extends $extends$ { @Required $endif$ $if(field.allowableValues)$ @AllowableValues(value="$field.allowableValues$")$endif$ - public $field.attributeDefinition.returnType$ get$field.attributeDefinition.NameForMethod$() { - return $field.attributeDefinition.name$; + public $field.fieldDefinition.returnType$ get$field.fieldDefinition.NameForMethod$() { + return $field.fieldDefinition.name$; } - public void set$field.attributeDefinition.NameForMethod$($field.attributeDefinition.returnType$ $field.attributeDefinition.name$) { - this.$field.attributeDefinition.name$ = $field.attributeDefinition.name$; + public void set$field.fieldDefinition.NameForMethod$($field.fieldDefinition.returnType$ $field.fieldDefinition.name$) { + this.$field.fieldDefinition.name$ = $field.fieldDefinition.name$; } }$ } \ No newline at end of file diff --git a/code-gen/src/main/java/com/wordnik/codegen/DriverCodeGenerator.java b/code-gen/src/main/java/com/wordnik/codegen/DriverCodeGenerator.java index 238864a83b7..29f9781e672 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/DriverCodeGenerator.java +++ b/code-gen/src/main/java/com/wordnik/codegen/DriverCodeGenerator.java @@ -19,7 +19,6 @@ import javax.xml.stream.XMLStreamReader; import java.io.*; import java.util.ArrayList; import java.util.List; -import java.util.Map; /** * User: ramesh @@ -59,7 +58,7 @@ public class DriverCodeGenerator { List resources = this.readResourceDocumentation(baseUrl); StringTemplateGroup aTemplateGroup = new StringTemplateGroup("templates",config.getTemplateLocation()); if(resources.size() > 0) { - generateVersionHelper(resources.get(0).getVersion(), aTemplateGroup); + generateVersionHelper(resources.get(0).getApiVersion(), aTemplateGroup); } generateModelClasses(resources, aTemplateGroup); generateModelClassesForInput(resources, aTemplateGroup); @@ -137,7 +136,7 @@ public class DriverCodeGenerator { ObjectMapper mapper = new ObjectMapper(); mapper.getDeserializationConfig().set(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); Resource aResourceDoc = deserializeResource(response, mapper); - aResourceDoc.setVersion(version); + aResourceDoc.setApiVersion(version); resourceDocs.add(aResourceDoc); } catch (IOException ioe) { ioe.printStackTrace(); @@ -196,24 +195,8 @@ public class DriverCodeGenerator { * @throws IOException */ private Resource deserializeResource(String response, ObjectMapper mapper) throws IOException { - Resource resource; - - ApiResource apiResource = mapper.readValue(response, ApiResource.class); - resource = new Resource(); - Model model; - List models = new ArrayList(); - String modelName; - ApiModelDefn modelDefn; - if (apiResource.getModels() != null) { - for (Map.Entry entry : apiResource.getModels().getModelList().entrySet()) { - modelName = entry.getKey(); - modelDefn = entry.getValue(); - model = modelDefn.toModel(modelName, this.config); - models.add( model ); - } - } - resource.setModels( models ); - resource.setEndPoints( apiResource.getEndPoints() ); + Resource resource = mapper.readValue(response, Resource.class); + resource.generateModelsFromWrapper(this.config); return resource; } @@ -241,8 +224,8 @@ public class DriverCodeGenerator { if(!generatedClassNames.contains(model.getName()) && !config.getCodeGenOverridingRules().isModelIgnored(model.getName())){ List imports = new ArrayList(); imports.addAll(this.config.getDefaultModelImports()); - for(Parameter param : model.getFields()){ - for(String importDef : param.getAttributeDefinition(config.getDataTypeMapper()).getImportDefinitions()){ + for(ModelField param : model.getFields()){ + for(String importDef : param.getFieldDefinition(config.getDataTypeMapper()).getImportDefinitions()){ if(!imports.contains(importDef)){ imports.add(importDef); } @@ -275,15 +258,15 @@ public class DriverCodeGenerator { for(Endpoint endpoint : resource.getEndPoints()){ if(endpoint.getOperations() != null) { for(EndpointOperation operation : endpoint.getOperations()){ - Method method = operation.generateMethod(endpoint, resource, config); + ResourceMethod method = operation.generateMethod(endpoint, resource, config); if(method.getInputModel() != null) { Model model = method.getInputModel(); if(model != null){ if(!generatedClasses.contains(model.getName())) { List imports = new ArrayList(); imports.addAll(this.config.getDefaultModelImports()); - for(Parameter param : model.getFields()){ - for(String importDef : param.getAttributeDefinition(config.getDataTypeMapper()).getImportDefinitions()){ + for(ModelField param : model.getFields()){ + for(String importDef : param.getFieldDefinition(config.getDataTypeMapper()).getImportDefinitions()){ if(!imports.contains(importDef)){ imports.add(importDef); } @@ -316,14 +299,14 @@ public class DriverCodeGenerator { private void generateAPIClasses(List resources, StringTemplateGroup templateGroup) { for(Resource resource : resources) { - List methods = new ArrayList(); + List methods = new ArrayList(); List imports = new ArrayList(); imports.addAll(this.config.getDefaultServiceImports()); methods = resource.generateMethods(resource, config); StringTemplate template = templateGroup.getInstanceOf(API_OBJECT_TEMPLATE); String className = resource.generateClassName(config); - List filteredMethods = new ArrayList(); - for(Method method:methods){ + List filteredMethods = new ArrayList(); + for(ResourceMethod method:methods){ if(!config.getCodeGenOverridingRules().isMethodIgnored(className, method.getName())){ filteredMethods.add(method); } @@ -346,26 +329,26 @@ public class DriverCodeGenerator { Model model = new Model(); model.setName("TestData"); model.setDescription("Class used to store all the test data. This should not be used for any development"); - List parameters = new ArrayList(); - model.setFields(parameters); + List modelFields = new ArrayList(); + model.setFields(modelFields); for(String className : generatedClassNames){ - Parameter aParam = new Parameter(); + ModelField aParam = new ModelField(); aParam.setName(config.getNameGenerator().convertToMethodNameFormat(className)+"List"); aParam.setParamType(config.getDataTypeMapper().getListReturnType(className)); - parameters.add(aParam); + modelFields.add(aParam); } //add missing class from models - Parameter aParam = new Parameter(); + ModelField aParam = new ModelField(); aParam.setName("StringValueList"); aParam.setParamType(config.getDataTypeMapper().getListReturnType("StringValue")); - parameters.add(aParam); + modelFields.add(aParam); List imports = new ArrayList(); imports.addAll(this.config.getDefaultModelImports()); imports.addAll(this.config.getDataTypeMapper().getListImports()); - for(Parameter param : model.getFields()){ - for(String importDef : param.getAttributeDefinition(config.getDataTypeMapper()).getImportDefinitions()){ + for(ModelField param : model.getFields()){ + for(String importDef : param.getFieldDefinition(config.getDataTypeMapper()).getImportDefinitions()){ if(!imports.contains(importDef)){ imports.add(importDef); } diff --git a/code-gen/src/main/java/com/wordnik/codegen/AttributeDefinition.java b/code-gen/src/main/java/com/wordnik/codegen/FieldDefinition.java similarity index 96% rename from code-gen/src/main/java/com/wordnik/codegen/AttributeDefinition.java rename to code-gen/src/main/java/com/wordnik/codegen/FieldDefinition.java index 7ede0476f07..f44c3cfec94 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/AttributeDefinition.java +++ b/code-gen/src/main/java/com/wordnik/codegen/FieldDefinition.java @@ -3,7 +3,7 @@ package com.wordnik.codegen; import java.util.ArrayList; import java.util.List; -public class AttributeDefinition { +public class FieldDefinition { private String returnType; diff --git a/code-gen/src/main/java/com/wordnik/codegen/Argument.java b/code-gen/src/main/java/com/wordnik/codegen/MethodArgument.java similarity index 98% rename from code-gen/src/main/java/com/wordnik/codegen/Argument.java rename to code-gen/src/main/java/com/wordnik/codegen/MethodArgument.java index d4506793004..018b3e6d39f 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/Argument.java +++ b/code-gen/src/main/java/com/wordnik/codegen/MethodArgument.java @@ -2,7 +2,7 @@ package com.wordnik.codegen; import com.wordnik.codegen.config.CodeGenConfig; -public class Argument { +public class MethodArgument { public static String ARGUMENT_STRING = "String"; public static String ARGUMENT_INTEGER = "int"; diff --git a/code-gen/src/main/java/com/wordnik/codegen/Method.java b/code-gen/src/main/java/com/wordnik/codegen/ResourceMethod.java similarity index 85% rename from code-gen/src/main/java/com/wordnik/codegen/Method.java rename to code-gen/src/main/java/com/wordnik/codegen/ResourceMethod.java index 8ef9849aa4c..f6f0b0f8f06 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/Method.java +++ b/code-gen/src/main/java/com/wordnik/codegen/ResourceMethod.java @@ -4,15 +4,15 @@ import com.wordnik.codegen.resource.Model; import java.util.List; -public class Method { +public class ResourceMethod { private String description; - private List arguments; + private List arguments; - private List queryParameters; + private List queryParameters; - private List pathParameters; + private List pathParameters; private String returnValue; @@ -45,27 +45,27 @@ public class Method { this.description = description; } - public List getArguments() { + public List getArguments() { return arguments; } - public void setArguments(List arguments) { + public void setArguments(List arguments) { this.arguments = arguments; } - public List getQueryParameters() { + public List getQueryParameters() { return queryParameters; } - public void setQueryParameters(List queryParameters) { + public void setQueryParameters(List queryParameters) { this.queryParameters = queryParameters; } - public List getPathParameters() { + public List getPathParameters() { return pathParameters; } - public void setPathParameters(List pathParameters) { + public void setPathParameters(List pathParameters) { this.pathParameters = pathParameters; } diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/ApiPropertyListWrapper.java b/code-gen/src/main/java/com/wordnik/codegen/resource/ApiPropertyListWrapper.java index bc41d7d70c5..fcc7f7fee0f 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/ApiPropertyListWrapper.java +++ b/code-gen/src/main/java/com/wordnik/codegen/resource/ApiPropertyListWrapper.java @@ -1,12 +1,10 @@ package com.wordnik.codegen.resource; import com.wordnik.codegen.config.CodeGenConfig; -import com.wordnik.codegen.config.DataTypeMapper; import org.codehaus.jackson.annotate.JsonAnyGetter; import org.codehaus.jackson.annotate.JsonAnySetter; import org.codehaus.jackson.map.annotate.JsonSerialize; -import javax.annotation.Generated; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; @@ -29,9 +27,9 @@ public class ApiPropertyListWrapper implements Serializable this.propertyList.put(name, value); } - public List toFieldList(CodeGenConfig config) { - List fields = new ArrayList(); - Parameter field; + public List toFieldList(CodeGenConfig config) { + List fields = new ArrayList(); + ModelField field; String propertyName; ApiPropertyDefn propertyDefn; @@ -39,7 +37,7 @@ public class ApiPropertyListWrapper implements Serializable propertyName = propertyDefnEntry.getKey(); propertyDefn = propertyDefnEntry.getValue(); - field = new Parameter(); + field = new ModelField(); field.setName(propertyName); //TODO - need to handle this via the nameGenerator which will do this in case the propertyName is a key word in the language if(propertyName.equals("enum") || propertyName.equals("default")){ diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/ApiResource.java b/code-gen/src/main/java/com/wordnik/codegen/resource/ApiResource.java deleted file mode 100644 index c3c3c7c9ab0..00000000000 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/ApiResource.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.wordnik.codegen.resource; - -import org.codehaus.jackson.annotate.JsonCreator; -import org.codehaus.jackson.annotate.JsonProperty; -import org.codehaus.jackson.annotate.JsonPropertyOrder; -import org.codehaus.jackson.map.annotate.JsonSerialize; - -import javax.annotation.Generated; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) -@JsonPropertyOrder({ - "apiVersion", - "swagrVersion", - "basePath", - "models", - "id" -}) -public class ApiResource implements Serializable -{ - - @JsonProperty("apiVersion") - private String apiVersion; - @JsonProperty("swagrVersion") - private String swagrVersion; - @JsonProperty("basePath") - private String basePath; - @JsonProperty("models") - private ApiModelListWrapper models; - @JsonProperty("apis") - private List endPoints; - @JsonProperty("id") - private Object id; - private Map additionalProperties = new HashMap(); - - @JsonCreator - public ApiResource(@JsonProperty("models") ApiModelListWrapper models, @JsonProperty("apis") List endPoints) - { - this.models = models; - this.endPoints = endPoints; - } - - @JsonProperty("apiVersion") - public String getApiVersion() { - return apiVersion; - } - - @JsonProperty("apiVersion") - public void setApiVersion(String apiVersion) { - this.apiVersion = apiVersion; - } - - @JsonProperty("swagrVersion") - public String getSwagrVersion() { - return swagrVersion; - } - - @JsonProperty("swagrVersion") - public void setSwagrVersion(String swagrVersion) { - this.swagrVersion = swagrVersion; - } - - @JsonProperty("basePath") - public String getBasePath() { - return basePath; - } - - @JsonProperty("basePath") - public void setBasePath(String basePath) { - this.basePath = basePath; - } - - @JsonProperty("models") - public ApiModelListWrapper getModels() { - return models; - } - - @JsonProperty("models") - public void setModels(ApiModelListWrapper models) { - this.models = models; - } - - @JsonProperty("apis") - public List getEndPoints() { - return endPoints; - } - - @JsonProperty("apis") - public void setEndPoints(List endPoints) { - this.endPoints = endPoints; - } - - @JsonProperty("id") - public Object getId() { - return id; - } - - @JsonProperty("id") - public void setId(Object id) { - this.id = id; - } - -} diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/Endpoint.java b/code-gen/src/main/java/com/wordnik/codegen/resource/Endpoint.java index f49ad27f35e..3d5d426bbe4 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/Endpoint.java +++ b/code-gen/src/main/java/com/wordnik/codegen/resource/Endpoint.java @@ -1,6 +1,6 @@ package com.wordnik.codegen.resource; -import com.wordnik.codegen.Method; +import com.wordnik.codegen.ResourceMethod; import com.wordnik.codegen.config.CodeGenConfig; import java.util.ArrayList; @@ -23,7 +23,7 @@ public class Endpoint { private List operations; - private List methods; + private List methods; private List errorResponses; @@ -81,9 +81,9 @@ public class Endpoint { } } - public List generateMethods(Resource resource, CodeGenConfig config) { + public List generateMethods(Resource resource, CodeGenConfig config) { if(methods == null){ - methods = new ArrayList(); + methods = new ArrayList(); if(getOperations() != null) { for(EndpointOperation operation: getOperations()) { if(!operation.isDeprecated() && areModelsAvailable(operation.getParameters(), resource, config)) { @@ -95,18 +95,18 @@ public class Endpoint { return methods; } - private boolean areModelsAvailable(List parameters, Resource resource, CodeGenConfig config) { + private boolean areModelsAvailable(List modelFields, Resource resource, CodeGenConfig config) { Boolean isParamSetAvailable = true; - if(parameters == null) return true; - for(Parameter parameter: parameters){ - if (parameter.getParamType().equalsIgnoreCase(EndpointOperation.PARAM_TYPE_BODY) ){ + if(modelFields == null) return true; + for(ModelField modelField : modelFields){ + if (modelField.getParamType().equalsIgnoreCase(EndpointOperation.PARAM_TYPE_BODY) ){ isParamSetAvailable = false; for(Model model : resource.getModels()){ - if(config.getDataTypeMapper().isPrimitiveType(parameter.getDataType())){ + if(config.getDataTypeMapper().isPrimitiveType(modelField.getDataType())){ isParamSetAvailable = true; break; } - if(model.getName().equalsIgnoreCase(parameter.getDataType())){ + if(model.getName().equalsIgnoreCase(modelField.getDataType())){ isParamSetAvailable = true; break; } diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/EndpointOperation.java b/code-gen/src/main/java/com/wordnik/codegen/resource/EndpointOperation.java index 5f0ed19679d..a52b6c8a615 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/EndpointOperation.java +++ b/code-gen/src/main/java/com/wordnik/codegen/resource/EndpointOperation.java @@ -1,12 +1,11 @@ package com.wordnik.codegen.resource; -import com.wordnik.codegen.Argument; -import com.wordnik.codegen.Method; +import com.wordnik.codegen.MethodArgument; +import com.wordnik.codegen.ResourceMethod; import com.wordnik.codegen.config.CodeGenConfig; import java.util.ArrayList; import java.util.List; -import java.util.StringTokenizer; /** * User: ramesh @@ -38,11 +37,11 @@ public class EndpointOperation { private String responseClass; - private List parameters; + private List parameters; private boolean deprecated; - private Method method; + private ResourceMethod method; private List tags; @@ -103,11 +102,11 @@ public class EndpointOperation { this.getResponse().add(response); } - public List getParameters() { + public List getParameters() { return parameters; } - public void setParameters(List parameters) { + public void setParameters(List parameters) { this.parameters = parameters; } @@ -145,9 +144,9 @@ public class EndpointOperation { } - public Method generateMethod(Endpoint endPoint, Resource resource, CodeGenConfig config) { + public ResourceMethod generateMethod(Endpoint endPoint, Resource resource, CodeGenConfig config) { if(method == null){ - method = new Method(); + method = new ResourceMethod(); //add method description method.setDescription(this.getSummary() + "\n " + getNotes()); @@ -199,49 +198,49 @@ public class EndpointOperation { */ List argNames = new ArrayList(); if(this.getParameters() != null) { - List arguments = new ArrayList(); - List queryParams= new ArrayList(); - List pathParams= new ArrayList(); + List arguments = new ArrayList(); + List queryParams= new ArrayList(); + List pathParams= new ArrayList(); method.setArguments(arguments); method.setQueryParameters(queryParams); method.setPathParameters(pathParams); - for(Parameter parameter: this.getParameters()){ - if(!argNames.contains(parameter.getName())) { - argNames.add(parameter.getName()); - Argument anArgument = new Argument(); - anArgument.setAllowedValues(parameter.getAllowedValuesString()); + for(ModelField modelField : this.getParameters()){ + if(!argNames.contains(modelField.getName())) { + argNames.add(modelField.getName()); + MethodArgument anArgument = new MethodArgument(); + anArgument.setAllowedValues(modelField.getAllowedValuesString()); //check if arguments has auth token - if(parameter.getParamType().equalsIgnoreCase(PARAM_TYPE_HEADER) && - parameter.getName().equals(AUTH_TOKEN_PARAM_NAME)){ + if(modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_HEADER) && + modelField.getName().equals(AUTH_TOKEN_PARAM_NAME)){ method.setAuthToken(true); anArgument.setName(AUTH_TOKEN_ARGUMENT_NAME); - anArgument.setDataType(Argument.ARGUMENT_STRING); - anArgument.setDescription(parameter.getDescription()); + anArgument.setDataType(MethodArgument.ARGUMENT_STRING); + anArgument.setDescription(modelField.getDescription()); arguments.add(anArgument); - }else if(parameter.getParamType().equalsIgnoreCase(PARAM_TYPE_HEADER) && - parameter.getName().equals(API_KEY_PARAM_NAME)){ + }else if(modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_HEADER) && + modelField.getName().equals(API_KEY_PARAM_NAME)){ //do nothing for API key parameter as all calls will automatically add API KEY to the http headers - }else if (parameter.getParamType().equalsIgnoreCase(PARAM_TYPE_PATH) && - !parameter.getName().equalsIgnoreCase(FORMAT_PARAM_NAME)) { - anArgument.setName(parameter.getName()); - anArgument.setDataType(Argument.ARGUMENT_STRING); - anArgument.setDescription(parameter.getDescription()); + }else if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_PATH) && + !modelField.getName().equalsIgnoreCase(FORMAT_PARAM_NAME)) { + anArgument.setName(modelField.getName()); + anArgument.setDataType(MethodArgument.ARGUMENT_STRING); + anArgument.setDescription(modelField.getDescription()); arguments.add(anArgument); pathParams.add(anArgument); - }else if (parameter.getParamType().equalsIgnoreCase(PARAM_TYPE_QUERY)) { - anArgument.setName(parameter.getName()); - anArgument.setDataType(Argument.ARGUMENT_STRING); - anArgument.setDescription(parameter.getDescription()); + }else if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_QUERY)) { + anArgument.setName(modelField.getName()); + anArgument.setDataType(MethodArgument.ARGUMENT_STRING); + anArgument.setDescription(modelField.getDescription()); queryParams.add(anArgument); arguments.add(anArgument); - }else if (parameter.getParamType().equalsIgnoreCase(PARAM_TYPE_BODY)) { - if(parameter.getName() == null) { - parameter.setName("postObject"); + }else if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_BODY)) { + if(modelField.getName() == null) { + modelField.setName("postObject"); } - anArgument.setName(parameter.getName()); - anArgument.setDataType(config.getDataTypeMapper().getReturnValueType(parameter.getDataType())); - anArgument.setDescription(parameter.getDescription()); + anArgument.setName(modelField.getName()); + anArgument.setDataType(config.getDataTypeMapper().getReturnValueType(modelField.getDataType())); + anArgument.setDescription(modelField.getDescription()); arguments.add(anArgument); method.setPostObject(true); } @@ -252,25 +251,25 @@ public class EndpointOperation { //check for number of arguments, if we have more than 4 then send the arguments as input object if(method.getArguments() != null && method.getArguments().size() > 4){ - List arguments = new ArrayList(); + List arguments = new ArrayList(); Model modelforMethodInput = new Model(); modelforMethodInput.setName(inputobjectName); - List fields = new ArrayList(); - for(Argument argument: method.getArguments()){ + List fields = new ArrayList(); + for(MethodArgument argument: method.getArguments()){ if(!argument.getName().equals("postObject") && !argument.getName().equals("authToken")){ - Parameter aParameter = new Parameter(); - aParameter.setAllowedValues(argument.getAllowedValues()); - aParameter.setDescription(argument.getDescription()); - aParameter.setName(argument.getName()); - aParameter.setParamType(argument.getDataType()); - fields.add(aParameter); + ModelField aModelField = new ModelField(); + aModelField.setAllowedValues(argument.getAllowedValues()); + aModelField.setDescription(argument.getDescription()); + aModelField.setName(argument.getName()); + aModelField.setParamType(argument.getDataType()); + fields.add(aModelField); }else{ arguments.add(argument); } } modelforMethodInput.setFields(fields); - Argument anArgument = new Argument(); + MethodArgument anArgument = new MethodArgument(); anArgument.setDataType(inputobjectName); anArgument.setName(config.getNameGenerator().convertToMethodNameFormat(inputobjectName)); arguments.add(anArgument); @@ -281,7 +280,7 @@ public class EndpointOperation { List argumentDefinitions = new ArrayList(); List argumentNames = new ArrayList(); if (method.getArguments() != null && method.getArguments().size() > 0) { - for(Argument arg: method.getArguments()) { + for(MethodArgument arg: method.getArguments()) { if(!arg.getName().equalsIgnoreCase(FORMAT_PARAM_NAME)){ argumentDefinitions.add(arg.getDataType() + " " + arg.getName()); argumentNames.add(arg.getName()); diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/Model.java b/code-gen/src/main/java/com/wordnik/codegen/resource/Model.java index 12f519db29f..34dcc527753 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/Model.java +++ b/code-gen/src/main/java/com/wordnik/codegen/resource/Model.java @@ -17,7 +17,7 @@ public class Model { private String description; - private List fields; + private List fields; public String getName() { return name; @@ -27,11 +27,11 @@ public class Model { this.name = name; } - public List getFields() { + public List getFields() { return fields; } - public void setFields(List fields) { + public void setFields(List fields) { this.fields = fields; } diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/Parameter.java b/code-gen/src/main/java/com/wordnik/codegen/resource/ModelField.java similarity index 73% rename from code-gen/src/main/java/com/wordnik/codegen/resource/Parameter.java rename to code-gen/src/main/java/com/wordnik/codegen/resource/ModelField.java index 17a7013e61d..59b33c26521 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/Parameter.java +++ b/code-gen/src/main/java/com/wordnik/codegen/resource/ModelField.java @@ -1,6 +1,6 @@ package com.wordnik.codegen.resource; -import com.wordnik.codegen.AttributeDefinition; +import com.wordnik.codegen.FieldDefinition; import com.wordnik.codegen.config.DataTypeMapper; import java.util.ArrayList; @@ -12,7 +12,7 @@ import java.util.StringTokenizer; * Date: 3/31/11 * Time: 7:57 AM */ -public class Parameter { +public class ModelField { private String name; @@ -34,7 +34,7 @@ public class Parameter { private String paramAccess; - private AttributeDefinition attributeDefinition; + private FieldDefinition fieldDefinition; public String getName() { return name; @@ -136,32 +136,32 @@ public class Parameter { this.dataType = dataType; } - public AttributeDefinition getAttributeDefinition(){ - return attributeDefinition; + public FieldDefinition getFieldDefinition(){ + return fieldDefinition; } - public AttributeDefinition getAttributeDefinition(DataTypeMapper dataTypeMapper) { - if(attributeDefinition == null) { - attributeDefinition = new AttributeDefinition(); + public FieldDefinition getFieldDefinition(DataTypeMapper dataTypeMapper) { + if(fieldDefinition == null) { + fieldDefinition = new FieldDefinition(); String type = paramType.trim(); if(type.contains("date")||type.contains("Date") ){ - attributeDefinition.getImportDefinitions().add("java.util.Date"); + fieldDefinition.getImportDefinitions().add("java.util.Date"); } if(type.startsWith("List[")){ - attributeDefinition.getImportDefinitions().addAll(dataTypeMapper.getListImports()); + fieldDefinition.getImportDefinitions().addAll(dataTypeMapper.getListImports()); String entryType = type.substring(5, type.length()-1); entryType = dataTypeMapper.getObjectType(entryType, true); String returnType = dataTypeMapper.getListReturnType(entryType); - attributeDefinition.setReturnType(returnType); - attributeDefinition.setInitialization(" = " + dataTypeMapper.getListInitialization(entryType)); + fieldDefinition.setReturnType(returnType); + fieldDefinition.setInitialization(" = " + dataTypeMapper.getListInitialization(entryType)); if(this.getWrapperName() != null){ - attributeDefinition.setName(this.getWrapperName()); + fieldDefinition.setName(this.getWrapperName()); }else{ - attributeDefinition.setName(this.getName()); + fieldDefinition.setName(this.getName()); } }else if (type.startsWith("Map[")) { - attributeDefinition.getImportDefinitions().addAll(dataTypeMapper.getMapImports()); + fieldDefinition.getImportDefinitions().addAll(dataTypeMapper.getMapImports()); String keyClass, entryClass = ""; String entryType = type.substring(4, type.length()-1); keyClass = entryType.substring(0, entryType.indexOf(",") ); @@ -169,20 +169,20 @@ public class Parameter { //entryType = dataTypeMapper.getObjectType(entryType, true); entryType = dataTypeMapper.getObjectType(keyClass, true) + "," + dataTypeMapper.getObjectType(entryClass, true); String returnType = dataTypeMapper.getMapReturnType(entryType); - attributeDefinition.setReturnType(returnType); - attributeDefinition.setInitialization("= " + dataTypeMapper.getMapInitialization(entryType)); + fieldDefinition.setReturnType(returnType); + fieldDefinition.setInitialization("= " + dataTypeMapper.getMapInitialization(entryType)); if(this.getWrapperName() != null){ - attributeDefinition.setName(this.getWrapperName()); + fieldDefinition.setName(this.getWrapperName()); }else{ - attributeDefinition.setName(this.getName()); + fieldDefinition.setName(this.getName()); } }else{ - attributeDefinition.setReturnType(dataTypeMapper.getObjectType(type, false)); - attributeDefinition.setName(this.getName()); + fieldDefinition.setReturnType(dataTypeMapper.getObjectType(type, false)); + fieldDefinition.setName(this.getName()); } } - return attributeDefinition; + return fieldDefinition; } } diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/Resource.java b/code-gen/src/main/java/com/wordnik/codegen/resource/Resource.java index eb6a3e09ac0..ecc89f7e308 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/Resource.java +++ b/code-gen/src/main/java/com/wordnik/codegen/resource/Resource.java @@ -1,10 +1,13 @@ package com.wordnik.codegen.resource; -import com.wordnik.codegen.Method; +import com.wordnik.codegen.ResourceMethod; import com.wordnik.codegen.config.CodeGenConfig; +import org.codehaus.jackson.annotate.JsonCreator; +import org.codehaus.jackson.annotate.JsonProperty; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * User: ramesh @@ -13,39 +16,74 @@ import java.util.List; */ public class Resource { - private String version; - + private String apiVersion; + + @JsonProperty("swagrVersion") + private String swagrVersion; + + @JsonProperty("apis") private List endPoints = new ArrayList(); + + @JsonProperty("models") + private ApiModelListWrapper modelListWrapper; + private List models = new ArrayList(); private String generatedClassName; - private List methods; + private List methods; + + @JsonCreator + public Resource() {//@JsonProperty("models") ApiModelListWrapper modelListWrapper, @JsonProperty("apis") List endPoints) + + } - public String getVersion() { - return version; + public String getApiVersion() { + return apiVersion; } - public void setVersion(String version) { - this.version = version; + public void setApiVersion(String apiVersion) { + this.apiVersion = apiVersion; } + @JsonProperty("swagrVersion") + public String getSwagrVersion() { + return swagrVersion; + } + + @JsonProperty("swagrVersion") + public void setSwagrVersion(String swagrVersion) { + this.swagrVersion = swagrVersion; + } + + @JsonProperty("apis") public List getEndPoints() { return endPoints; } + @JsonProperty("apis") public void setEndPoints(List endPoints) { this.endPoints = endPoints; } + @JsonProperty("models") + public ApiModelListWrapper getModelListWrapper() { + return modelListWrapper; + } + + @JsonProperty("models") + public void setModelListWrapper(ApiModelListWrapper modelListWrapper) { + this.modelListWrapper = modelListWrapper; + } + public List getModels() { return models; } - public void setModels(List models) { + /*public void setModels(List models) { this.models = models; - } + }*/ public String generateClassName(CodeGenConfig config) { if (generatedClassName == null) { @@ -55,9 +93,9 @@ public class Resource { return generatedClassName; } - public List generateMethods(Resource resource, CodeGenConfig config) { + public List generateMethods(Resource resource, CodeGenConfig config) { if(methods == null){ - methods = new ArrayList(); + methods = new ArrayList(); if(getEndPoints() != null) { for(Endpoint endpoint: getEndPoints()){ methods.addAll(endpoint.generateMethods(resource, config)); @@ -66,5 +104,18 @@ public class Resource { } return methods; } + + public void generateModelsFromWrapper(CodeGenConfig config) { + String modelName; + ApiModelDefn modelDefn; + if (modelListWrapper != null) { + for (Map.Entry entry : modelListWrapper.getModelList().entrySet()) { + modelName = entry.getKey(); + modelDefn = entry.getValue(); + models.add (modelDefn.toModel(modelName, config) ); + } + } + + } } diff --git a/java/conf/templates/ModelObject.st b/java/conf/templates/ModelObject.st index db77c78fed4..fb4d86e869c 100644 --- a/java/conf/templates/ModelObject.st +++ b/java/conf/templates/ModelObject.st @@ -17,7 +17,7 @@ public class $className$ extends $extends$ { $fields:{ field | //$field.description$ - private $field.attributeDefinition.returnType$ $field.attributeDefinition.name$ $field.attributeDefinition.initialization$; + private $field.fieldDefinition.returnType$ $field.fieldDefinition.name$ $field.fieldDefinition.initialization$; }$ $fields:{ field | @@ -26,12 +26,12 @@ public class $className$ extends $extends$ { @Required $endif$ $if(field.allowableValues)$ @AllowableValues(value="$field.allowableValues$")$endif$ - public $field.attributeDefinition.returnType$ get$field.attributeDefinition.NameForMethod$() { - return $field.attributeDefinition.name$; + public $field.fieldDefinition.returnType$ get$field.fieldDefinition.NameForMethod$() { + return $field.fieldDefinition.name$; } - public void set$field.attributeDefinition.NameForMethod$($field.attributeDefinition.returnType$ $field.attributeDefinition.name$) { - this.$field.attributeDefinition.name$ = $field.attributeDefinition.name$; + public void set$field.fieldDefinition.NameForMethod$($field.fieldDefinition.returnType$ $field.fieldDefinition.name$) { + this.$field.fieldDefinition.name$ = $field.fieldDefinition.name$; } }$ } \ No newline at end of file