diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index efc0aa31dbc8..55868c0acaff 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -311,15 +311,14 @@ public class DefaultCodegen { ); typeMapping = new HashMap(); - typeMapping.put("array", "List"); - typeMapping.put("map", "Map"); - typeMapping.put("List", "List"); + typeMapping.put("array", "java.util.List"); + typeMapping.put("map", "java.util.Map"); typeMapping.put("boolean", "Boolean"); typeMapping.put("string", "String"); typeMapping.put("int", "Integer"); typeMapping.put("float", "Float"); typeMapping.put("number", "BigDecimal"); - typeMapping.put("DateTime", "Date"); + typeMapping.put("DateTime", "java.util.Date"); typeMapping.put("long", "Long"); typeMapping.put("short", "Short"); typeMapping.put("char", "String"); @@ -337,15 +336,7 @@ public class DefaultCodegen { importMapping.put("BigDecimal", "java.math.BigDecimal"); importMapping.put("UUID", "java.util.UUID"); importMapping.put("File", "java.io.File"); - importMapping.put("Date", "java.util.Date"); importMapping.put("Timestamp", "java.sql.Timestamp"); - importMapping.put("Map", "java.util.Map"); - importMapping.put("HashMap", "java.util.HashMap"); - importMapping.put("Array", "java.util.List"); - importMapping.put("ArrayList", "java.util.ArrayList"); - importMapping.put("List", "java.util.*"); - importMapping.put("Set", "java.util.*"); - importMapping.put("DateTime", "org.joda.time.*"); importMapping.put("LocalDateTime", "org.joda.time.*"); importMapping.put("LocalDate", "org.joda.time.*"); importMapping.put("LocalTime", "org.joda.time.*"); @@ -1038,7 +1029,7 @@ public class DefaultCodegen { } } for (String i : imports) { - if (!defaultIncludes.contains(i) && !languageSpecificPrimitives.contains(i)) { + if (needToImport(i)) { op.imports.add(i); } } @@ -1311,6 +1302,12 @@ public class DefaultCodegen { return secs; } + protected boolean needToImport(String type) { + return !defaultIncludes.contains(type) + && !languageSpecificPrimitives.contains(type) + && type.indexOf(".") < 0; + } + protected List> toExamples(Map examples) { if (examples == null) { return null; @@ -1414,7 +1411,7 @@ public class DefaultCodegen { } private void addImport(CodegenModel m, String type) { - if (type != null && !languageSpecificPrimitives.contains(type) && !defaultIncludes.contains(type)) { + if (type != null && needToImport(type)) { m.imports.add(type); } } @@ -1593,8 +1590,8 @@ public class DefaultCodegen { * @return sanitized string */ public String sanitizeName(String name) { - // NOTE: performance wise, we should have written with 2 replaceAll to replace desired - // character with _ or empty character. Below aims to spell out different cases we've + // NOTE: performance wise, we should have written with 2 replaceAll to replace desired + // character with _ or empty character. Below aims to spell out different cases we've // encountered so far and hopefully make it easier for others to add more special // cases in the future. @@ -1617,7 +1614,7 @@ public class DefaultCodegen { // input name and age => input_name_and_age name = name.replaceAll(" ", "_"); - + // remove everything else other than word, number and _ // $php_variable => php_variable return name.replaceAll("[^a-zA-Z0-9_]", ""); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java index 360dc9c0f2f0..1276c2dde6c5 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java @@ -71,8 +71,8 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { "Object", "byte[]") ); - instantiationTypes.put("array", "ArrayList"); - instantiationTypes.put("map", "HashMap"); + instantiationTypes.put("array", "java.util.ArrayList"); + instantiationTypes.put("map", "java.util.HashMap"); cliOptions.add(new CliOption(CodegenConstants.INVOKER_PACKAGE, CodegenConstants.INVOKER_PACKAGE_DESC)); cliOptions.add(new CliOption(CodegenConstants.GROUP_ID, CodegenConstants.GROUP_ID_DESC)); @@ -107,7 +107,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public void processOpts() { super.processOpts(); - + if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); } else { @@ -158,7 +158,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); supportingFiles.add(new SupportingFile("ApiClient.mustache", invokerFolder, "ApiClient.java")); supportingFiles.add(new SupportingFile("StringUtil.mustache", invokerFolder, "StringUtil.java")); - + final String authFolder = (sourceFolder + File.separator + invokerPackage + ".auth").replace(".", File.separator); supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.mustache", authFolder, "HttpBasicAuth.java")); supportingFiles.add(new SupportingFile("auth/ApiKeyAuth.mustache", authFolder, "ApiKeyAuth.java")); @@ -172,7 +172,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("Pair.mustache", invokerFolder, "Pair.java")); supportingFiles.add(new SupportingFile("auth/Authentication.mustache", authFolder, "Authentication.java")); } - + // library-specific files if ("okhttp-gson".equals(getLibrary())) { // the "okhttp-gson" library template requires "ApiCallback.mustache" for async call @@ -189,25 +189,25 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { } private void sanitizeConfig() { - // Sanitize any config options here. We also have to update the additionalProperties because + // Sanitize any config options here. We also have to update the additionalProperties because // the whole additionalProperties object is injected into the main object passed to the mustache layer - + this.setApiPackage(sanitizePackageName(apiPackage)); if (additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) { this.additionalProperties.put(CodegenConstants.API_PACKAGE, apiPackage); } - + this.setModelPackage(sanitizePackageName(modelPackage)); if (additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { this.additionalProperties.put(CodegenConstants.MODEL_PACKAGE, modelPackage); } - + this.setInvokerPackage(sanitizePackageName(invokerPackage)); if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { this.additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); } } - + @Override public String escapeReservedWord(String name) { return "_" + name; @@ -294,10 +294,10 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { public String toDefaultValue(Property p) { if (p instanceof ArrayProperty) { final ArrayProperty ap = (ArrayProperty) p; - return String.format("new ArrayList<%s>()", getTypeDeclaration(ap.getItems())); + return String.format("new java.util.ArrayList<%s>()", getTypeDeclaration(ap.getItems())); } else if (p instanceof MapProperty) { final MapProperty ap = (MapProperty) p; - return String.format("new HashMap()", getTypeDeclaration(ap.getAdditionalProperties())); + return String.format("new java.util.HashMap()", getTypeDeclaration(ap.getAdditionalProperties())); } return super.toDefaultValue(p); } @@ -308,7 +308,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { String type = null; if (typeMapping.containsKey(swaggerType)) { type = typeMapping.get(swaggerType); - if (languageSpecificPrimitives.contains(type)) { + if (languageSpecificPrimitives.contains(type) || type.indexOf(".") >= 0) { return type; } } else { @@ -394,7 +394,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { } return objs; } - + public Map postProcessOperations(Map objs) { if("retrofit".equals(getLibrary())) { Map operations = (Map) objs.get("operations"); @@ -418,6 +418,10 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { return objs; } + protected boolean needToImport(String type) { + return super.needToImport(type) && type.indexOf(".") < 0; + } + private String findCommonPrefixOfVars(List vars) { String prefix = StringUtils.getCommonPrefix(vars.toArray(new String[vars.size()])); // exclude trailing characters that should be part of a valid variable diff --git a/modules/swagger-codegen/src/main/resources/Java/api.mustache b/modules/swagger-codegen/src/main/resources/Java/api.mustache index ad957261f2a4..38ebc1c54abd 100644 --- a/modules/swagger-codegen/src/main/resources/Java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/api.mustache @@ -6,17 +6,9 @@ import {{invokerPackage}}.Configuration; import {{invokerPackage}}.Pair; import {{invokerPackage}}.TypeRef; -import {{modelPackage}}.*; - -import java.util.*; - {{#imports}}import {{import}}; {{/imports}} -import java.io.File; -import java.util.Map; -import java.util.HashMap; - {{>generatedAnnotation}} {{#operations}} public class {{classname}} { @@ -59,9 +51,9 @@ public class {{classname}} { .replaceAll("\\{" + "{{baseName}}" + "\\}", {{localVariablePrefix}}apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}}; // query params - List {{localVariablePrefix}}queryParams = new ArrayList(); - Map {{localVariablePrefix}}headerParams = new HashMap(); - Map {{localVariablePrefix}}formParams = new HashMap(); + java.util.List {{localVariablePrefix}}queryParams = new java.util.ArrayList(); + java.util.Map {{localVariablePrefix}}headerParams = new java.util.HashMap(); + java.util.Map {{localVariablePrefix}}formParams = new java.util.HashMap(); {{#queryParams}} {{localVariablePrefix}}queryParams.addAll({{localVariablePrefix}}apiClient.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/api.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/api.mustache index d525db8a28d0..532f1ef78cf1 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/api.mustache @@ -8,15 +8,9 @@ import {{invokerPackage}}.TypeRef; import {{modelPackage}}.*; -import java.util.*; - {{#imports}}import {{import}}; {{/imports}} -import java.io.File; -import java.util.Map; -import java.util.HashMap; - {{>generatedAnnotation}} {{#operations}} public class {{classname}} { @@ -58,9 +52,9 @@ public class {{classname}} { .replaceAll("\\{" + "{{baseName}}" + "\\}", {{localVariablePrefix}}apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}}; // query params - List {{localVariablePrefix}}queryParams = new ArrayList(); - Map {{localVariablePrefix}}headerParams = new HashMap(); - Map {{localVariablePrefix}}formParams = new HashMap(); + java.util.List {{localVariablePrefix}}queryParams = new java.util.ArrayList(); + java.util.Map {{localVariablePrefix}}headerParams = new java.util.HashMap(); + java.util.Map {{localVariablePrefix}}formParams = new java.util.HashMap(); {{#queryParams}} {{localVariablePrefix}}queryParams.addAll({{localVariablePrefix}}apiClient.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/api.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/api.mustache index b272687c7fde..d1f38f0ac358 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/api.mustache @@ -14,15 +14,9 @@ import com.squareup.okhttp.Call; import java.lang.reflect.Type; -import java.util.*; - {{#imports}}import {{import}}; {{/imports}} -import java.io.File; -import java.util.Map; -import java.util.HashMap; - {{#operations}} public class {{classname}} { private ApiClient {{localVariablePrefix}}apiClient; @@ -58,15 +52,15 @@ public class {{classname}} { String {{localVariablePrefix}}path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}} .replaceAll("\\{" + "{{baseName}}" + "\\}", {{localVariablePrefix}}apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}}; - List {{localVariablePrefix}}queryParams = new ArrayList();{{#queryParams}} + java.util.List {{localVariablePrefix}}queryParams = new java.util.ArrayList();{{#queryParams}} if ({{paramName}} != null) {{localVariablePrefix}}queryParams.addAll({{localVariablePrefix}}apiClient.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}}));{{/queryParams}} - Map {{localVariablePrefix}}headerParams = new HashMap();{{#headerParams}} + java.util.Map {{localVariablePrefix}}headerParams = new java.util.HashMap();{{#headerParams}} if ({{paramName}} != null) {{localVariablePrefix}}headerParams.put("{{baseName}}", {{localVariablePrefix}}apiClient.parameterToString({{paramName}}));{{/headerParams}} - Map {{localVariablePrefix}}formParams = new HashMap();{{#formParams}} + java.util.Map {{localVariablePrefix}}formParams = new java.util.HashMap();{{#formParams}} if ({{paramName}} != null) {{localVariablePrefix}}formParams.put("{{baseName}}", {{paramName}});{{/formParams}} diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/api.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/api.mustache index 89850d92bdc1..28d2d29f8d1a 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/api.mustache @@ -5,7 +5,6 @@ import {{modelPackage}}.*; import retrofit.Callback; import retrofit.http.*; import retrofit.mime.*; -import java.util.*; {{#imports}}import {{import}}; {{/imports}} @@ -22,7 +21,7 @@ public interface {{classname}} { */ {{#formParams}}{{#-first}} {{#isMultipart}}@Multipart{{/isMultipart}}{{^isMultipart}}@FormUrlEncoded{{/isMultipart}}{{/-first}}{{/formParams}} - @{{httpMethod}}("{{path}}") + @{{httpMethod}}("{{path}}") {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Object{{/returnType}} {{nickname}}({{^allParams}});{{/allParams}} {{#allParams}}{{>libraries/retrofit/queryParams}}{{>libraries/retrofit/pathParams}}{{>libraries/retrofit/headerParams}}{{>libraries/retrofit/bodyParams}}{{>libraries/retrofit/formParams}}{{#hasMore}}, {{/hasMore}}{{^hasMore}} );{{/hasMore}}{{/allParams}} @@ -31,15 +30,15 @@ public interface {{classname}} { * {{summary}} * Async method {{#allParams}} * @param {{paramName}} {{description}} -{{/allParams}} * @param cb callback method +{{/allParams}} * @param cb callback method * @return void */ {{#formParams}}{{#-first}} {{#isMultipart}}@Multipart{{/isMultipart}}{{^isMultipart}}@FormUrlEncoded{{/isMultipart}}{{/-first}}{{/formParams}} - @{{httpMethod}}("{{path}}") + @{{httpMethod}}("{{path}}") void {{nickname}}( {{#allParams}}{{>libraries/retrofit/queryParams}}{{>libraries/retrofit/pathParams}}{{>libraries/retrofit/headerParams}}{{>libraries/retrofit/bodyParams}}{{>libraries/retrofit/formParams}}, {{/allParams}}Callback<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Object{{/returnType}}> cb - ); + ); {{/operation}} } -{{/operations}} \ No newline at end of file +{{/operations}}