forked from loafle/openapi-generator-original
* merge with master * remove zoo specific artifact names * fix duplicate doublequote * #3904 add samples for retrofit2 * #3904 clean json field retrieval * #3904 allow non-abstract parent class
This commit is contained in:
@@ -708,6 +708,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
||||
return files;
|
||||
}
|
||||
|
||||
|
||||
private File processTemplateToFile(Map<String, Object> templateData, String templateName, String outputFilename) throws IOException {
|
||||
String adjustedOutputFilename = outputFilename.replaceAll("//", "/").replace('/', File.separatorChar);
|
||||
if (ignoreProcessor.allowsFile(new File(adjustedOutputFilename))) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.swagger.codegen.languages;
|
||||
|
||||
import com.google.common.collect.LinkedListMultimap;
|
||||
import io.swagger.codegen.*;
|
||||
import io.swagger.codegen.languages.features.BeanValidationFeatures;
|
||||
import io.swagger.codegen.languages.features.GzipFeatures;
|
||||
@@ -432,6 +433,24 @@ public class JavaClientCodegen extends AbstractJavaCodegen
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
|
||||
Map<String, Object> allProcessedModels = super.postProcessAllModels(objs);
|
||||
if(!additionalProperties.containsKey("gsonFactoryMethod")) {
|
||||
List<Object> allModels = new ArrayList<Object>();
|
||||
for (String name: allProcessedModels.keySet()) {
|
||||
Map<String, Object> models = (Map<String, Object>)allProcessedModels.get(name);
|
||||
try {
|
||||
allModels.add(((List<Object>) models.get("models")).get(0));
|
||||
} catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
additionalProperties.put("parent", modelInheritanceSupportInGson(allModels));
|
||||
}
|
||||
return allProcessedModels;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
|
||||
objs = super.postProcessModelsEnum(objs);
|
||||
@@ -454,6 +473,34 @@ public class JavaClientCodegen extends AbstractJavaCodegen
|
||||
return objs;
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> modelInheritanceSupportInGson(List<?> allModels) {
|
||||
LinkedListMultimap<CodegenModel, CodegenModel> byParent = LinkedListMultimap.create();
|
||||
for (Object m : allModels) {
|
||||
Map entry = (Map) m;
|
||||
CodegenModel parent = ((CodegenModel)entry.get("model")).parentModel;
|
||||
if(null!= parent) {
|
||||
byParent.put(parent, ((CodegenModel)entry.get("model")));
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> parentsList = new ArrayList<>();
|
||||
for (CodegenModel parentModel : byParent.keySet()) {
|
||||
List<Map<String, Object>> childrenList = new ArrayList<>();
|
||||
Map<String, Object> parent = new HashMap<>();
|
||||
parent.put("classname", parentModel.classname);
|
||||
List<CodegenModel> childrenModels = byParent.get(parentModel);
|
||||
for (CodegenModel model : childrenModels) {
|
||||
Map<String, Object> child = new HashMap<>();
|
||||
child.put("name", model.name);
|
||||
child.put("classname", model.classname);
|
||||
childrenList.add(child);
|
||||
}
|
||||
parent.put("children", childrenList);
|
||||
parent.put("discriminator", parentModel.discriminator);
|
||||
parentsList.add(parent);
|
||||
}
|
||||
return parentsList;
|
||||
}
|
||||
|
||||
public void setUseRxJava(boolean useRxJava) {
|
||||
this.useRxJava = useRxJava;
|
||||
doNotUseRx = false;
|
||||
|
||||
Reference in New Issue
Block a user