Skip to content

Commit aa0fbad

Browse files
committed
Add a "fullJavaUtil" option to Java clients
to toggle whether to use full qualified name (with full package prefix) for classes under java.util
1 parent ab34dc5 commit aa0fbad

File tree

26 files changed

+412
-334
lines changed

26 files changed

+412
-334
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,14 +311,15 @@ public DefaultCodegen() {
311311
);
312312

313313
typeMapping = new HashMap<String, String>();
314-
typeMapping.put("array", "java.util.List");
315-
typeMapping.put("map", "java.util.Map");
314+
typeMapping.put("array", "List");
315+
typeMapping.put("map", "Map");
316+
typeMapping.put("List", "List");
316317
typeMapping.put("boolean", "Boolean");
317318
typeMapping.put("string", "String");
318319
typeMapping.put("int", "Integer");
319320
typeMapping.put("float", "Float");
320321
typeMapping.put("number", "BigDecimal");
321-
typeMapping.put("DateTime", "java.util.Date");
322+
typeMapping.put("DateTime", "Date");
322323
typeMapping.put("long", "Long");
323324
typeMapping.put("short", "Short");
324325
typeMapping.put("char", "String");
@@ -336,7 +337,15 @@ public DefaultCodegen() {
336337
importMapping.put("BigDecimal", "java.math.BigDecimal");
337338
importMapping.put("UUID", "java.util.UUID");
338339
importMapping.put("File", "java.io.File");
340+
importMapping.put("Date", "java.util.Date");
339341
importMapping.put("Timestamp", "java.sql.Timestamp");
342+
importMapping.put("Map", "java.util.Map");
343+
importMapping.put("HashMap", "java.util.HashMap");
344+
importMapping.put("Array", "java.util.List");
345+
importMapping.put("ArrayList", "java.util.ArrayList");
346+
importMapping.put("List", "java.util.*");
347+
importMapping.put("Set", "java.util.*");
348+
importMapping.put("DateTime", "org.joda.time.*");
340349
importMapping.put("LocalDateTime", "org.joda.time.*");
341350
importMapping.put("LocalDate", "org.joda.time.*");
342351
importMapping.put("LocalTime", "org.joda.time.*");

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
3737
protected String artifactVersion = "1.0.0";
3838
protected String sourceFolder = "src/main/java";
3939
protected String localVariablePrefix = "";
40+
protected boolean fullJavaUtil = false;
41+
protected String javaUtilPrefix = "";
4042
protected Boolean serializableModel = false;
4143

4244
public JavaClientCodegen() {
@@ -71,8 +73,8 @@ public JavaClientCodegen() {
7173
"Object",
7274
"byte[]")
7375
);
74-
instantiationTypes.put("array", "java.util.ArrayList");
75-
instantiationTypes.put("map", "java.util.HashMap");
76+
instantiationTypes.put("array", "ArrayList");
77+
instantiationTypes.put("map", "HashMap");
7678

7779
cliOptions.add(new CliOption(CodegenConstants.INVOKER_PACKAGE, CodegenConstants.INVOKER_PACKAGE_DESC));
7880
cliOptions.add(new CliOption(CodegenConstants.GROUP_ID, CodegenConstants.GROUP_ID_DESC));
@@ -81,6 +83,7 @@ public JavaClientCodegen() {
8183
cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC));
8284
cliOptions.add(new CliOption(CodegenConstants.LOCAL_VARIABLE_PREFIX, CodegenConstants.LOCAL_VARIABLE_PREFIX_DESC));
8385
cliOptions.add(new CliOption(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC));
86+
cliOptions.add(new CliOption("fullJavaUtil", "whether to use full qualified name for classes under java.util (default to false)"));
8487

8588
supportedLibraries.put("<default>", "HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2");
8689
supportedLibraries.put("jersey2", "HTTP client: Jersey client 2.6");
@@ -152,6 +155,32 @@ public void processOpts() {
152155
// need to put back serializableModel (boolean) into additionalProperties as value in additionalProperties is string
153156
additionalProperties.put(CodegenConstants.SERIALIZABLE_MODEL, serializableModel);
154157

158+
if (additionalProperties.containsKey("fullJavaUtil")) {
159+
fullJavaUtil = Boolean.valueOf(additionalProperties.get("fullJavaUtil").toString());
160+
}
161+
if (fullJavaUtil) {
162+
javaUtilPrefix = "java.util.";
163+
}
164+
additionalProperties.put("fullJavaUtil", fullJavaUtil);
165+
additionalProperties.put("javaUtilPrefix", javaUtilPrefix);
166+
167+
if (fullJavaUtil) {
168+
typeMapping.put("array", "java.util.List");
169+
typeMapping.put("map", "java.util.Map");
170+
typeMapping.put("DateTime", "java.util.Date");
171+
typeMapping.remove("List");
172+
importMapping.remove("Date");
173+
importMapping.remove("Map");
174+
importMapping.remove("HashMap");
175+
importMapping.remove("Array");
176+
importMapping.remove("ArrayList");
177+
importMapping.remove("List");
178+
importMapping.remove("Set");
179+
importMapping.remove("DateTime");
180+
instantiationTypes.put("array", "java.util.ArrayList");
181+
instantiationTypes.put("map", "java.util.HashMap");
182+
}
183+
155184
this.sanitizeConfig();
156185

157186
final String invokerFolder = (sourceFolder + File.separator + invokerPackage).replace(".", File.separator);
@@ -294,10 +323,22 @@ public String getTypeDeclaration(Property p) {
294323
public String toDefaultValue(Property p) {
295324
if (p instanceof ArrayProperty) {
296325
final ArrayProperty ap = (ArrayProperty) p;
297-
return String.format("new java.util.ArrayList<%s>()", getTypeDeclaration(ap.getItems()));
326+
final String pattern;
327+
if (fullJavaUtil) {
328+
pattern = "new java.util.ArrayList<%s>()";
329+
} else {
330+
pattern = "new ArrayList<%s>()";
331+
}
332+
return String.format(pattern, getTypeDeclaration(ap.getItems()));
298333
} else if (p instanceof MapProperty) {
299334
final MapProperty ap = (MapProperty) p;
300-
return String.format("new java.util.HashMap<String, %s>()", getTypeDeclaration(ap.getAdditionalProperties()));
335+
final String pattern;
336+
if (fullJavaUtil) {
337+
pattern = "new java.util.HashMap<String, %s>()";
338+
} else {
339+
pattern = "new HashMap<String, %s>()";
340+
}
341+
return String.format(pattern, getTypeDeclaration(ap.getAdditionalProperties()));
301342
}
302343
return super.toDefaultValue(p);
303344
}

modules/swagger-codegen/src/main/resources/Java/api.mustache

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import {{invokerPackage}}.TypeRef;
99
{{#imports}}import {{import}};
1010
{{/imports}}
1111

12+
{{^fullJavaUtil}}
13+
import java.util.*;
14+
{{/fullJavaUtil}}
15+
1216
{{>generatedAnnotation}}
1317
{{#operations}}
1418
public class {{classname}} {
@@ -51,9 +55,9 @@ public class {{classname}} {
5155
.replaceAll("\\{" + "{{baseName}}" + "\\}", {{localVariablePrefix}}apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}};
5256

5357
// query params
54-
java.util.List<Pair> {{localVariablePrefix}}queryParams = new java.util.ArrayList<Pair>();
55-
java.util.Map<String, String> {{localVariablePrefix}}headerParams = new java.util.HashMap<String, String>();
56-
java.util.Map<String, Object> {{localVariablePrefix}}formParams = new java.util.HashMap<String, Object>();
58+
{{javaUtilPrefix}}List<Pair> {{localVariablePrefix}}queryParams = new {{javaUtilPrefix}}ArrayList<Pair>();
59+
{{javaUtilPrefix}}Map<String, String> {{localVariablePrefix}}headerParams = new {{javaUtilPrefix}}HashMap<String, String>();
60+
{{javaUtilPrefix}}Map<String, Object> {{localVariablePrefix}}formParams = new {{javaUtilPrefix}}HashMap<String, Object>();
5761

5862
{{#queryParams}}
5963
{{localVariablePrefix}}queryParams.addAll({{localVariablePrefix}}apiClient.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}}));

modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/api.mustache

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import {{invokerPackage}}.Configuration;
66
import {{invokerPackage}}.Pair;
77
import {{invokerPackage}}.TypeRef;
88

9-
import {{modelPackage}}.*;
10-
119
{{#imports}}import {{import}};
1210
{{/imports}}
1311

12+
{{^fullJavaUtil}}
13+
import java.util.*;
14+
{{/fullJavaUtil}}
15+
1416
{{>generatedAnnotation}}
1517
{{#operations}}
1618
public class {{classname}} {
@@ -52,9 +54,9 @@ public class {{classname}} {
5254
.replaceAll("\\{" + "{{baseName}}" + "\\}", {{localVariablePrefix}}apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}};
5355

5456
// query params
55-
java.util.List<Pair> {{localVariablePrefix}}queryParams = new java.util.ArrayList<Pair>();
56-
java.util.Map<String, String> {{localVariablePrefix}}headerParams = new java.util.HashMap<String, String>();
57-
java.util.Map<String, Object> {{localVariablePrefix}}formParams = new java.util.HashMap<String, Object>();
57+
{{javaUtilPrefix}}List<Pair> {{localVariablePrefix}}queryParams = new {{javaUtilPrefix}}ArrayList<Pair>();
58+
{{javaUtilPrefix}}Map<String, String> {{localVariablePrefix}}headerParams = new {{javaUtilPrefix}}HashMap<String, String>();
59+
{{javaUtilPrefix}}Map<String, Object> {{localVariablePrefix}}formParams = new {{javaUtilPrefix}}HashMap<String, Object>();
5860

5961
{{#queryParams}}
6062
{{localVariablePrefix}}queryParams.addAll({{localVariablePrefix}}apiClient.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}}));

modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/api.mustache

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@ import {{invokerPackage}}.ApiException;
66
import {{invokerPackage}}.Configuration;
77
import {{invokerPackage}}.Pair;
88

9-
import {{modelPackage}}.*;
10-
119
import com.google.gson.reflect.TypeToken;
1210

1311
import com.squareup.okhttp.Call;
1412

15-
import java.lang.reflect.Type;
16-
1713
{{#imports}}import {{import}};
1814
{{/imports}}
1915

16+
import java.lang.reflect.Type;
17+
{{^fullJavaUtil}}
18+
import java.util.*;
19+
{{/fullJavaUtil}}
20+
2021
{{#operations}}
2122
public class {{classname}} {
2223
private ApiClient {{localVariablePrefix}}apiClient;
@@ -52,15 +53,15 @@ public class {{classname}} {
5253
String {{localVariablePrefix}}path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}}
5354
.replaceAll("\\{" + "{{baseName}}" + "\\}", {{localVariablePrefix}}apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}};
5455

55-
java.util.List<Pair> {{localVariablePrefix}}queryParams = new java.util.ArrayList<Pair>();{{#queryParams}}
56+
{{javaUtilPrefix}}List<Pair> {{localVariablePrefix}}queryParams = new {{javaUtilPrefix}}ArrayList<Pair>();{{#queryParams}}
5657
if ({{paramName}} != null)
5758
{{localVariablePrefix}}queryParams.addAll({{localVariablePrefix}}apiClient.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}}));{{/queryParams}}
5859

59-
java.util.Map<String, String> {{localVariablePrefix}}headerParams = new java.util.HashMap<String, String>();{{#headerParams}}
60+
{{javaUtilPrefix}}Map<String, String> {{localVariablePrefix}}headerParams = new {{javaUtilPrefix}}HashMap<String, String>();{{#headerParams}}
6061
if ({{paramName}} != null)
6162
{{localVariablePrefix}}headerParams.put("{{baseName}}", {{localVariablePrefix}}apiClient.parameterToString({{paramName}}));{{/headerParams}}
6263

63-
java.util.Map<String, Object> {{localVariablePrefix}}formParams = new java.util.HashMap<String, Object>();{{#formParams}}
64+
{{javaUtilPrefix}}Map<String, Object> {{localVariablePrefix}}formParams = new {{javaUtilPrefix}}HashMap<String, Object>();{{#formParams}}
6465
if ({{paramName}} != null)
6566
{{localVariablePrefix}}formParams.put("{{baseName}}", {{paramName}});{{/formParams}}
6667

modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/api.mustache

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package {{package}};
22

3-
import {{modelPackage}}.*;
4-
53
import retrofit.Callback;
64
import retrofit.http.*;
75
import retrofit.mime.*;
86

97
{{#imports}}import {{import}};
108
{{/imports}}
119

10+
{{^fullJavaUtil}}
11+
import java.util.*;
12+
{{/fullJavaUtil}}
13+
1214
{{#operations}}
1315
public interface {{classname}} {
1416
{{#operation}}

samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
import io.swagger.client.model.Pet;
1010
import java.io.File;
1111

12-
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-08T20:57:43.997+08:00")
12+
import java.util.*;
13+
14+
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-09T21:30:27.235+08:00")
1315
public class PetApi {
1416
private ApiClient apiClient;
1517

@@ -44,9 +46,9 @@ public void updatePet (Pet body) throws ApiException {
4446
String path = "/pet".replaceAll("\\{format\\}","json");
4547

4648
// query params
47-
java.util.List<Pair> queryParams = new java.util.ArrayList<Pair>();
48-
java.util.Map<String, String> headerParams = new java.util.HashMap<String, String>();
49-
java.util.Map<String, Object> formParams = new java.util.HashMap<String, Object>();
49+
List<Pair> queryParams = new ArrayList<Pair>();
50+
Map<String, String> headerParams = new HashMap<String, String>();
51+
Map<String, Object> formParams = new HashMap<String, Object>();
5052

5153

5254

@@ -91,9 +93,9 @@ public void addPet (Pet body) throws ApiException {
9193
String path = "/pet".replaceAll("\\{format\\}","json");
9294

9395
// query params
94-
java.util.List<Pair> queryParams = new java.util.ArrayList<Pair>();
95-
java.util.Map<String, String> headerParams = new java.util.HashMap<String, String>();
96-
java.util.Map<String, Object> formParams = new java.util.HashMap<String, Object>();
96+
List<Pair> queryParams = new ArrayList<Pair>();
97+
Map<String, String> headerParams = new HashMap<String, String>();
98+
Map<String, Object> formParams = new HashMap<String, Object>();
9799

98100

99101

@@ -128,19 +130,19 @@ public void addPet (Pet body) throws ApiException {
128130
* Finds Pets by status
129131
* Multiple status values can be provided with comma seperated strings
130132
* @param status Status values that need to be considered for filter
131-
* @return java.util.List<Pet>
133+
* @return List<Pet>
132134
*/
133-
public java.util.List<Pet> findPetsByStatus (java.util.List<String> status) throws ApiException {
135+
public List<Pet> findPetsByStatus (List<String> status) throws ApiException {
134136
Object postBody = null;
135137
byte[] postBinaryBody = null;
136138

137139
// create path and map variables
138140
String path = "/pet/findByStatus".replaceAll("\\{format\\}","json");
139141

140142
// query params
141-
java.util.List<Pair> queryParams = new java.util.ArrayList<Pair>();
142-
java.util.Map<String, String> headerParams = new java.util.HashMap<String, String>();
143-
java.util.Map<String, Object> formParams = new java.util.HashMap<String, Object>();
143+
List<Pair> queryParams = new ArrayList<Pair>();
144+
Map<String, String> headerParams = new HashMap<String, String>();
145+
Map<String, Object> formParams = new HashMap<String, Object>();
144146

145147

146148
queryParams.addAll(apiClient.parameterToPairs("multi", "status", status));
@@ -166,7 +168,7 @@ public java.util.List<Pet> findPetsByStatus (java.util.List<String> status) thro
166168

167169

168170

169-
TypeRef returnType = new TypeRef<java.util.List<Pet>>() {};
171+
TypeRef returnType = new TypeRef<List<Pet>>() {};
170172
return apiClient.invokeAPI(path, "GET", queryParams, postBody, postBinaryBody, headerParams, formParams, accept, contentType, authNames, returnType);
171173

172174

@@ -178,19 +180,19 @@ public java.util.List<Pet> findPetsByStatus (java.util.List<String> status) thro
178180
* Finds Pets by tags
179181
* Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing.
180182
* @param tags Tags to filter by
181-
* @return java.util.List<Pet>
183+
* @return List<Pet>
182184
*/
183-
public java.util.List<Pet> findPetsByTags (java.util.List<String> tags) throws ApiException {
185+
public List<Pet> findPetsByTags (List<String> tags) throws ApiException {
184186
Object postBody = null;
185187
byte[] postBinaryBody = null;
186188

187189
// create path and map variables
188190
String path = "/pet/findByTags".replaceAll("\\{format\\}","json");
189191

190192
// query params
191-
java.util.List<Pair> queryParams = new java.util.ArrayList<Pair>();
192-
java.util.Map<String, String> headerParams = new java.util.HashMap<String, String>();
193-
java.util.Map<String, Object> formParams = new java.util.HashMap<String, Object>();
193+
List<Pair> queryParams = new ArrayList<Pair>();
194+
Map<String, String> headerParams = new HashMap<String, String>();
195+
Map<String, Object> formParams = new HashMap<String, Object>();
194196

195197

196198
queryParams.addAll(apiClient.parameterToPairs("multi", "tags", tags));
@@ -216,7 +218,7 @@ public java.util.List<Pet> findPetsByTags (java.util.List<String> tags) throws A
216218

217219

218220

219-
TypeRef returnType = new TypeRef<java.util.List<Pet>>() {};
221+
TypeRef returnType = new TypeRef<List<Pet>>() {};
220222
return apiClient.invokeAPI(path, "GET", queryParams, postBody, postBinaryBody, headerParams, formParams, accept, contentType, authNames, returnType);
221223

222224

@@ -244,9 +246,9 @@ public Pet getPetById (Long petId) throws ApiException {
244246
.replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString()));
245247

246248
// query params
247-
java.util.List<Pair> queryParams = new java.util.ArrayList<Pair>();
248-
java.util.Map<String, String> headerParams = new java.util.HashMap<String, String>();
249-
java.util.Map<String, Object> formParams = new java.util.HashMap<String, Object>();
249+
List<Pair> queryParams = new ArrayList<Pair>();
250+
Map<String, String> headerParams = new HashMap<String, String>();
251+
Map<String, Object> formParams = new HashMap<String, Object>();
250252

251253

252254

@@ -300,9 +302,9 @@ public void updatePetWithForm (String petId, String name, String status) throws
300302
.replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString()));
301303

302304
// query params
303-
java.util.List<Pair> queryParams = new java.util.ArrayList<Pair>();
304-
java.util.Map<String, String> headerParams = new java.util.HashMap<String, String>();
305-
java.util.Map<String, Object> formParams = new java.util.HashMap<String, Object>();
305+
List<Pair> queryParams = new ArrayList<Pair>();
306+
Map<String, String> headerParams = new HashMap<String, String>();
307+
Map<String, Object> formParams = new HashMap<String, Object>();
306308

307309

308310

@@ -358,9 +360,9 @@ public void deletePet (Long petId, String apiKey) throws ApiException {
358360
.replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString()));
359361

360362
// query params
361-
java.util.List<Pair> queryParams = new java.util.ArrayList<Pair>();
362-
java.util.Map<String, String> headerParams = new java.util.HashMap<String, String>();
363-
java.util.Map<String, Object> formParams = new java.util.HashMap<String, Object>();
363+
List<Pair> queryParams = new ArrayList<Pair>();
364+
Map<String, String> headerParams = new HashMap<String, String>();
365+
Map<String, Object> formParams = new HashMap<String, Object>();
364366

365367

366368

@@ -415,9 +417,9 @@ public void uploadFile (Long petId, String additionalMetadata, File file) throws
415417
.replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString()));
416418

417419
// query params
418-
java.util.List<Pair> queryParams = new java.util.ArrayList<Pair>();
419-
java.util.Map<String, String> headerParams = new java.util.HashMap<String, String>();
420-
java.util.Map<String, Object> formParams = new java.util.HashMap<String, Object>();
420+
List<Pair> queryParams = new ArrayList<Pair>();
421+
Map<String, String> headerParams = new HashMap<String, String>();
422+
Map<String, Object> formParams = new HashMap<String, Object>();
421423

422424

423425

0 commit comments

Comments
 (0)