Skip to content

Commit 8d8858c

Browse files
committed
mutualize jackson and gson models in java clients
See #2182
1 parent 07a852f commit 8d8858c

File tree

15 files changed

+95
-384
lines changed

15 files changed

+95
-384
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ public void processOpts() {
210210
importMapping.put("ApiModel", "io.swagger.annotations.ApiModel");
211211
importMapping.put("JsonProperty", "com.fasterxml.jackson.annotation.JsonProperty");
212212
importMapping.put("JsonValue", "com.fasterxml.jackson.annotation.JsonValue");
213+
importMapping.put("SerializedName", "com.google.gson.annotations.SerializedName");
213214
importMapping.put("Objects", "java.util.Objects");
214215
importMapping.put("StringUtil", invokerPackage + ".StringUtil");
215216

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

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,18 +115,24 @@ public void processOpts() {
115115

116116
if ("feign".equals(getLibrary())) {
117117
supportingFiles.add(new SupportingFile("FormAwareEncoder.mustache", invokerFolder, "FormAwareEncoder.java"));
118+
additionalProperties.put("jackson", "true");
118119
} else if ("okhttp-gson".equals(getLibrary())) {
119120
// the "okhttp-gson" library template requires "ApiCallback.mustache" for async call
120121
supportingFiles.add(new SupportingFile("ApiCallback.mustache", invokerFolder, "ApiCallback.java"));
121122
supportingFiles.add(new SupportingFile("ApiResponse.mustache", invokerFolder, "ApiResponse.java"));
122123
supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java"));
123124
supportingFiles.add(new SupportingFile("ProgressRequestBody.mustache", invokerFolder, "ProgressRequestBody.java"));
124125
supportingFiles.add(new SupportingFile("ProgressResponseBody.mustache", invokerFolder, "ProgressResponseBody.java"));
126+
additionalProperties.put("gson", "true");
125127
} else if (usesAnyRetrofitLibrary()) {
126128
supportingFiles.add(new SupportingFile("auth/OAuthOkHttpClient.mustache", authFolder, "OAuthOkHttpClient.java"));
127129
supportingFiles.add(new SupportingFile("CollectionFormats.mustache", invokerFolder, "CollectionFormats.java"));
130+
additionalProperties.put("gson", "true");
128131
} else if("jersey2".equals(getLibrary())) {
129132
supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java"));
133+
additionalProperties.put("jackson", "true");
134+
} else if(StringUtils.isEmpty(getLibrary())) {
135+
additionalProperties.put("jackson", "true");
130136
}
131137
}
132138

@@ -171,32 +177,34 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
171177
if(!BooleanUtils.toBoolean(model.isEnum)) {
172178
final String lib = getLibrary();
173179
//Needed imports for Jackson based libraries
174-
if(StringUtils.isEmpty(lib) || "feign".equals(lib) || "jersey2".equals(lib)) {
180+
if(additionalProperties.containsKey("jackson")) {
175181
model.imports.add("JsonProperty");
176182

177-
if(BooleanUtils.toBoolean(model.hasEnums)) {
183+
/*if(BooleanUtils.toBoolean(model.hasEnums)) {
178184
model.imports.add("JsonValue");
179-
}
185+
}*/
186+
}
187+
if(additionalProperties.containsKey("gson")) {
188+
model.imports.add("SerializedName");
180189
}
181190
}
182191
}
183192

184193
@Override
185194
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
186195
objs = super.postProcessModelsEnum(objs);
187-
String lib = getLibrary();
188-
//Needed imports for Jackson based libraries
189-
if (StringUtils.isEmpty(lib) || "feign".equals(lib) || "jersey2".equals(lib)) {
196+
//Needed import for Gson based libraries
197+
if (additionalProperties.containsKey("gson")) {
190198
List<Map<String, String>> imports = (List<Map<String, String>>)objs.get("imports");
191199
List<Object> models = (List<Object>) objs.get("models");
192200
for (Object _mo : models) {
193201
Map<String, Object> mo = (Map<String, Object>) _mo;
194202
CodegenModel cm = (CodegenModel) mo.get("model");
195203
// for enum model
196204
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
197-
cm.imports.add(importMapping.get("JsonValue"));
205+
cm.imports.add(importMapping.get("SerializedName"));
198206
Map<String, String> item = new HashMap<String, String>();
199-
item.put("import", importMapping.get("JsonValue"));
207+
item.put("import", importMapping.get("SerializedName"));
200208
imports.add(item);
201209
}
202210
}

modules/swagger-codegen/src/main/resources/Java/libraries/common/modelInnerEnum.mustache

Lines changed: 0 additions & 20 deletions
This file was deleted.

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

Lines changed: 0 additions & 7 deletions
This file was deleted.

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

Lines changed: 0 additions & 16 deletions
This file was deleted.

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

Lines changed: 0 additions & 20 deletions
This file was deleted.

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

Lines changed: 0 additions & 20 deletions
This file was deleted.

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

Lines changed: 0 additions & 3 deletions
This file was deleted.

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

Lines changed: 0 additions & 95 deletions
This file was deleted.

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

Lines changed: 0 additions & 84 deletions
This file was deleted.

0 commit comments

Comments
 (0)