Skip to content

Commit 48bdae8

Browse files
authored
Merge pull request #3235 from cbornet/common_java_models
Mutualize jackson and gson models in java clients
2 parents 07a852f + ac23b10 commit 48bdae8

File tree

15 files changed

+93
-386
lines changed

15 files changed

+93
-386
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: 14 additions & 10 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,30 @@ 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");
176-
177-
if(BooleanUtils.toBoolean(model.hasEnums)) {
178-
model.imports.add("JsonValue");
179-
}
182+
}
183+
if(additionalProperties.containsKey("gson")) {
184+
model.imports.add("SerializedName");
180185
}
181186
}
182187
}
183188

184189
@Override
185190
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
186191
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)) {
192+
//Needed import for Gson based libraries
193+
if (additionalProperties.containsKey("gson")) {
190194
List<Map<String, String>> imports = (List<Map<String, String>>)objs.get("imports");
191195
List<Object> models = (List<Object>) objs.get("models");
192196
for (Object _mo : models) {
193197
Map<String, Object> mo = (Map<String, Object>) _mo;
194198
CodegenModel cm = (CodegenModel) mo.get("model");
195199
// for enum model
196200
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
197-
cm.imports.add(importMapping.get("JsonValue"));
201+
cm.imports.add(importMapping.get("SerializedName"));
198202
Map<String, String> item = new HashMap<String, String>();
199-
item.put("import", importMapping.get("JsonValue"));
203+
item.put("import", importMapping.get("SerializedName"));
200204
imports.add(item);
201205
}
202206
}

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)