Replace maps with models to reduce casting (#11913)

This commit is contained in:
Oleh Kurpiak 2022-03-24 18:48:41 +02:00 committed by GitHub
parent eea5260208
commit 85df431ebf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
137 changed files with 1037 additions and 962 deletions

View File

@ -37,7 +37,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4; import static org.apache.commons.text.StringEscapeUtils.escapeHtml4;
import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.apache.commons.lang3.StringUtils.isEmpty;
@SuppressWarnings({"unused","java:S106", "java:S1192"}) @SuppressWarnings({"unused","java:S106", "java:S1192"})

View File

@ -24,7 +24,7 @@ import io.swagger.parser.OpenAPIParser;
import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.parser.core.models.ParseOptions; import io.swagger.v3.parser.core.models.ParseOptions;
import io.swagger.v3.parser.core.models.SwaggerParseResult; import io.swagger.v3.parser.core.models.SwaggerParseResult;
import org.apache.commons.lang3.text.WordUtils; import org.apache.commons.text.WordUtils;
import org.openapitools.codegen.validation.ValidationResult; import org.openapitools.codegen.validation.ValidationResult;
import org.openapitools.codegen.validations.oas.OpenApiEvaluator; import org.openapitools.codegen.validations.oas.OpenApiEvaluator;
import org.openapitools.codegen.validations.oas.RuleConfiguration; import org.openapitools.codegen.validations.oas.RuleConfiguration;

View File

@ -27,6 +27,8 @@ import io.swagger.v3.oas.models.servers.ServerVariable;
import org.openapitools.codegen.api.TemplatingEngineAdapter; import org.openapitools.codegen.api.TemplatingEngineAdapter;
import org.openapitools.codegen.meta.FeatureSet; import org.openapitools.codegen.meta.FeatureSet;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
@ -184,15 +186,15 @@ public interface CodegenConfig {
void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations); void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations);
Map<String, Object> updateAllModels(Map<String, Object> objs); Map<String, ModelsMap> updateAllModels(Map<String, ModelsMap> objs);
void postProcess(); void postProcess();
Map<String, Object> postProcessAllModels(Map<String, Object> objs); Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs);
Map<String, Object> postProcessModels(Map<String, Object> objs); ModelsMap postProcessModels(ModelsMap objs);
Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels); Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels);
Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs); Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs);

View File

@ -27,7 +27,7 @@ import com.samskivert.mustache.Mustache.Compiler;
import com.samskivert.mustache.Mustache.Lambda; import com.samskivert.mustache.Mustache.Lambda;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.text.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.openapitools.codegen.CodegenDiscriminator.MappedModel; import org.openapitools.codegen.CodegenDiscriminator.MappedModel;
@ -38,6 +38,8 @@ import org.openapitools.codegen.meta.FeatureSet;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.serializer.SerializerUtils; import org.openapitools.codegen.serializer.SerializerUtils;
import org.openapitools.codegen.templating.MustacheEngineAdapter; import org.openapitools.codegen.templating.MustacheEngineAdapter;
import org.openapitools.codegen.templating.mustache.*; import org.openapitools.codegen.templating.mustache.*;
@ -429,19 +431,19 @@ public class DefaultCodegen implements CodegenConfig {
// override with any special post-processing for all models // override with any special post-processing for all models
@Override @Override
@SuppressWarnings({"static-method", "unchecked"}) @SuppressWarnings("static-method")
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
if (this.useOneOfInterfaces) { if (this.useOneOfInterfaces) {
// First, add newly created oneOf interfaces // First, add newly created oneOf interfaces
for (CodegenModel cm : addOneOfInterfaces) { for (CodegenModel cm : addOneOfInterfaces) {
Map<String, Object> modelValue = new HashMap<>(additionalProperties()); ModelMap modelMapValue = new ModelMap(additionalProperties());
modelValue.put("model", cm); modelMapValue.setModel(cm);
List<Map<String, String>> importsValue = new ArrayList<>(); List<Map<String, String>> importsValue = new ArrayList<>();
Map<String, Object> objsValue = new HashMap<>(); ModelsMap objsValue = new ModelsMap();
objsValue.put("models", Collections.singletonList(modelValue)); objsValue.setModels(Collections.singletonList(modelMapValue));
objsValue.put("package", modelPackage()); objsValue.put("package", modelPackage());
objsValue.put("imports", importsValue); objsValue.setImports(importsValue);
objsValue.put("classname", cm.classname); objsValue.put("classname", cm.classname);
objsValue.putAll(additionalProperties); objsValue.putAll(additionalProperties);
objs.put(cm.name, objsValue); objs.put(cm.name, objsValue);
@ -450,13 +452,10 @@ public class DefaultCodegen implements CodegenConfig {
// Gather data from all the models that contain oneOf into OneOfImplementorAdditionalData classes // Gather data from all the models that contain oneOf into OneOfImplementorAdditionalData classes
// (see docstring of that class to find out what information is gathered and why) // (see docstring of that class to find out what information is gathered and why)
Map<String, OneOfImplementorAdditionalData> additionalDataMap = new HashMap<>(); Map<String, OneOfImplementorAdditionalData> additionalDataMap = new HashMap<>();
for (Map.Entry<String, Object> modelsEntry : objs.entrySet()) { for (ModelsMap modelsAttrs : objs.values()) {
Map<String, Object> modelsAttrs = (Map<String, Object>) modelsEntry.getValue(); List<Map<String, String>> modelsImports = modelsAttrs.getImportsOrEmpty();
List<Object> models = (List<Object>) modelsAttrs.get("models"); for (ModelMap mo : modelsAttrs.getModels()) {
List<Map<String, String>> modelsImports = (List<Map<String, String>>) modelsAttrs.getOrDefault("imports", new ArrayList<Map<String, String>>()); CodegenModel cm = mo.getModel();
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
if (cm.oneOf.size() > 0) { if (cm.oneOf.size() > 0) {
cm.vendorExtensions.put("x-is-one-of-interface", true); cm.vendorExtensions.put("x-is-one-of-interface", true);
for (String one : cm.oneOf) { for (String one : cm.oneOf) {
@ -472,13 +471,11 @@ public class DefaultCodegen implements CodegenConfig {
} }
// Add all the data from OneOfImplementorAdditionalData classes to the implementing models // Add all the data from OneOfImplementorAdditionalData classes to the implementing models
for (Map.Entry<String, Object> modelsEntry : objs.entrySet()) { for (Map.Entry<String, ModelsMap> modelsEntry : objs.entrySet()) {
Map<String, Object> modelsAttrs = (Map<String, Object>) modelsEntry.getValue(); ModelsMap modelsAttrs = modelsEntry.getValue();
List<Object> models = (List<Object>) modelsAttrs.get("models"); List<Map<String, String>> imports = modelsAttrs.getImports();
List<Map<String, String>> imports = (List<Map<String, String>>) modelsAttrs.get("imports"); for (ModelMap implmo : modelsAttrs.getModels()) {
for (Object _implmo : models) { CodegenModel implcm = implmo.getModel();
Map<String, Object> implmo = (Map<String, Object>) _implmo;
CodegenModel implcm = (CodegenModel) implmo.get("model");
String modelName = toModelName(implcm.name); String modelName = toModelName(implcm.name);
if (additionalDataMap.containsKey(modelName)) { if (additionalDataMap.containsKey(modelName)) {
additionalDataMap.get(modelName).addToImplementor(this, implcm, imports, addOneOfInterfaceImports); additionalDataMap.get(modelName).addToImplementor(this, implcm, imports, addOneOfInterfaceImports);
@ -511,14 +508,13 @@ public class DefaultCodegen implements CodegenConfig {
* @param objs Map of models * @param objs Map of models
* @return map of all models indexed by names * @return map of all models indexed by names
*/ */
public Map<String, CodegenModel> getAllModels(Map<String, Object> objs) { public Map<String, CodegenModel> getAllModels(Map<String, ModelsMap> objs) {
Map<String, CodegenModel> allModels = new HashMap<>(); Map<String, CodegenModel> allModels = new HashMap<>();
for (Entry<String, Object> entry : objs.entrySet()) { for (Entry<String, ModelsMap> entry : objs.entrySet()) {
String modelName = toModelName(entry.getKey()); String modelName = toModelName(entry.getKey());
Map<String, Object> inner = (Map<String, Object>) entry.getValue(); List<ModelMap> models = entry.getValue().getModels();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models"); for (ModelMap mo : models) {
for (Map<String, Object> mo : models) { CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
allModels.put(modelName, cm); allModels.put(modelName, cm);
} }
} }
@ -532,7 +528,7 @@ public class DefaultCodegen implements CodegenConfig {
* @return maps of models with various updates * @return maps of models with various updates
*/ */
@Override @Override
public Map<String, Object> updateAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> updateAllModels(Map<String, ModelsMap> objs) {
Map<String, CodegenModel> allModels = getAllModels(objs); Map<String, CodegenModel> allModels = getAllModels(objs);
// Fix up all parent and interface CodegenModel references. // Fix up all parent and interface CodegenModel references.
@ -577,11 +573,9 @@ public class DefaultCodegen implements CodegenConfig {
} }
// loop through properties of each model to detect self-reference // loop through properties of each model to detect self-reference
for (Map.Entry<String, Object> entry : objs.entrySet()) { for (ModelsMap entry : objs.values()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue(); for (ModelMap mo : entry.getModels()) {
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models"); CodegenModel cm = mo.getModel();
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
removeSelfReferenceImports(cm); removeSelfReferenceImports(cm);
} }
} }
@ -660,7 +654,7 @@ public class DefaultCodegen implements CodegenConfig {
// override with any special post-processing // override with any special post-processing
@Override @Override
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
return objs; return objs;
} }
@ -670,11 +664,9 @@ public class DefaultCodegen implements CodegenConfig {
* @param objs Map of models * @param objs Map of models
* @return maps of models with better enum support * @return maps of models with better enum support
*/ */
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
@ -816,7 +808,7 @@ public class DefaultCodegen implements CodegenConfig {
// override with any special post-processing // override with any special post-processing
@Override @Override
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
return objs; return objs;
} }

View File

@ -44,6 +44,8 @@ import org.openapitools.codegen.languages.PythonClientCodegen;
import org.openapitools.codegen.languages.PythonExperimentalClientCodegen; import org.openapitools.codegen.languages.PythonExperimentalClientCodegen;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.serializer.SerializerUtils; import org.openapitools.codegen.serializer.SerializerUtils;
import org.openapitools.codegen.templating.CommonTemplateContentLocator; import org.openapitools.codegen.templating.CommonTemplateContentLocator;
import org.openapitools.codegen.templating.GeneratorTemplateContentLocator; import org.openapitools.codegen.templating.GeneratorTemplateContentLocator;
@ -395,8 +397,7 @@ public class DefaultGenerator implements Generator {
} }
} }
@SuppressWarnings("unchecked") void generateModels(List<File> files, List<ModelMap> allModels, List<String> unusedModels) {
void generateModels(List<File> files, List<Object> allModels, List<String> unusedModels) {
if (!generateModels) { if (!generateModels) {
// TODO: Process these anyway and add to dryRun info // TODO: Process these anyway and add to dryRun info
LOGGER.info("Skipping generation of models."); LOGGER.info("Skipping generation of models.");
@ -428,7 +429,7 @@ public class DefaultGenerator implements Generator {
} }
// store all processed models // store all processed models
Map<String, Object> allProcessedModels = new TreeMap<>((o1, o2) -> ObjectUtils.compare(config.toModelName(o1), config.toModelName(o2))); Map<String, ModelsMap> allProcessedModels = new TreeMap<>((o1, o2) -> ObjectUtils.compare(config.toModelName(o1), config.toModelName(o2)));
Boolean skipFormModel = GlobalSettings.getProperty(CodegenConstants.SKIP_FORM_MODEL) != null ? Boolean skipFormModel = GlobalSettings.getProperty(CodegenConstants.SKIP_FORM_MODEL) != null ?
Boolean.valueOf(GlobalSettings.getProperty(CodegenConstants.SKIP_FORM_MODEL)) : Boolean.valueOf(GlobalSettings.getProperty(CodegenConstants.SKIP_FORM_MODEL)) :
@ -484,7 +485,7 @@ public class DefaultGenerator implements Generator {
Map<String, Schema> schemaMap = new HashMap<>(); Map<String, Schema> schemaMap = new HashMap<>();
schemaMap.put(name, schema); schemaMap.put(name, schema);
Map<String, Object> models = processModels(config, schemaMap); ModelsMap models = processModels(config, schemaMap);
models.put("classname", config.toModelName(name)); models.put("classname", config.toModelName(name));
models.putAll(config.additionalProperties()); models.putAll(config.additionalProperties());
allProcessedModels.put(name, models); allProcessedModels.put(name, models);
@ -501,15 +502,15 @@ public class DefaultGenerator implements Generator {
// generate files based on processed models // generate files based on processed models
for (String modelName : allProcessedModels.keySet()) { for (String modelName : allProcessedModels.keySet()) {
Map<String, Object> models = (Map<String, Object>) allProcessedModels.get(modelName); ModelsMap models = allProcessedModels.get(modelName);
models.put("modelPackage", config.modelPackage()); models.put("modelPackage", config.modelPackage());
try { try {
// TODO revise below as we've already performed unaliasing so that the isAlias check may be removed // TODO revise below as we've already performed unaliasing so that the isAlias check may be removed
List<Object> modelList = (List<Object>) models.get("models"); List<ModelMap> modelList = models.getModels();
if (modelList != null && !modelList.isEmpty()) { if (modelList != null && !modelList.isEmpty()) {
Map<String, Object> modelTemplate = (Map<String, Object>) modelList.get(0); ModelMap modelTemplate = modelList.get(0);
if (modelTemplate != null && modelTemplate.containsKey("model")) { if (modelTemplate != null && modelTemplate.getModel() != null) {
CodegenModel m = (CodegenModel) modelTemplate.get("model"); CodegenModel m = modelTemplate.getModel();
if (m.isAlias && !((config instanceof PythonClientCodegen) || (config instanceof PythonExperimentalClientCodegen))) { if (m.isAlias && !((config instanceof PythonClientCodegen) || (config instanceof PythonExperimentalClientCodegen))) {
// alias to number, string, enum, etc, which should not be generated as model // alias to number, string, enum, etc, which should not be generated as model
// for PythonClientCodegen, all aliases are generated as models // for PythonClientCodegen, all aliases are generated as models
@ -540,7 +541,7 @@ public class DefaultGenerator implements Generator {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
void generateApis(List<File> files, List<Object> allOperations, List<Object> allModels) { void generateApis(List<File> files, List<Object> allOperations, List<ModelMap> allModels) {
if (!generateApis) { if (!generateApis) {
// TODO: Process these anyway and present info via dryRun? // TODO: Process these anyway and present info via dryRun?
LOGGER.info("Skipping generation of APIs."); LOGGER.info("Skipping generation of APIs.");
@ -746,7 +747,7 @@ public class DefaultGenerator implements Generator {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> buildSupportFileBundle(List<Object> allOperations, List<Object> allModels) { Map<String, Object> buildSupportFileBundle(List<Object> allOperations, List<ModelMap> allModels) {
Map<String, Object> bundle = new HashMap<>(config.additionalProperties()); Map<String, Object> bundle = new HashMap<>(config.additionalProperties());
bundle.put("apiPackage", config.apiPackage()); bundle.put("apiPackage", config.apiPackage());
@ -787,8 +788,7 @@ public class DefaultGenerator implements Generator {
} }
for (int i = 0; i < allModels.size() - 1; i++) { for (int i = 0; i < allModels.size() - 1; i++) {
HashMap<String, CodegenModel> cm = (HashMap<String, CodegenModel>) allModels.get(i); CodegenModel m = allModels.get(i).getModel();
CodegenModel m = cm.get("model");
m.hasMoreModels = true; m.hasMoreModels = true;
} }
@ -884,7 +884,7 @@ public class DefaultGenerator implements Generator {
List<File> files = new ArrayList<>(); List<File> files = new ArrayList<>();
// models // models
List<String> filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); List<String> filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI);
List<Object> allModels = new ArrayList<>(); List<ModelMap> allModels = new ArrayList<>();
generateModels(files, allModels, filteredSchemas); generateModels(files, allModels, filteredSchemas);
// apis // apis
List<Object> allOperations = new ArrayList<>(); List<Object> allOperations = new ArrayList<>();
@ -1170,8 +1170,7 @@ public class DefaultGenerator implements Generator {
return parameter.getName() + ":" + parameter.getIn(); return parameter.getName() + ":" + parameter.getIn();
} }
@SuppressWarnings("unchecked") private Map<String, Object> processOperations(CodegenConfig config, String tag, List<CodegenOperation> ops, List<ModelMap> allModels) {
private Map<String, Object> processOperations(CodegenConfig config, String tag, List<CodegenOperation> ops, List<Object> allModels) {
Map<String, Object> operations = new HashMap<>(); Map<String, Object> operations = new HashMap<>();
Map<String, Object> objs = new HashMap<>(); Map<String, Object> objs = new HashMap<>();
objs.put("classname", config.toApiName(tag)); objs.put("classname", config.toApiName(tag));
@ -1257,10 +1256,10 @@ public class DefaultGenerator implements Generator {
return result; return result;
} }
private Map<String, Object> processModels(CodegenConfig config, Map<String, Schema> definitions) { private ModelsMap processModels(CodegenConfig config, Map<String, Schema> definitions) {
Map<String, Object> objs = new HashMap<>(); ModelsMap objs = new ModelsMap();
objs.put("package", config.modelPackage()); objs.put("package", config.modelPackage());
List<Object> models = new ArrayList<>(); List<ModelMap> modelMaps = new ArrayList<>();
Set<String> allImports = new LinkedHashSet<>(); Set<String> allImports = new LinkedHashSet<>();
for (Map.Entry<String, Schema> definitionsEntry : definitions.entrySet()) { for (Map.Entry<String, Schema> definitionsEntry : definitions.entrySet()) {
String key = definitionsEntry.getKey(); String key = definitionsEntry.getKey();
@ -1268,16 +1267,16 @@ public class DefaultGenerator implements Generator {
if (schema == null) if (schema == null)
throw new RuntimeException("schema cannot be null in processModels"); throw new RuntimeException("schema cannot be null in processModels");
CodegenModel cm = config.fromModel(key, schema); CodegenModel cm = config.fromModel(key, schema);
Map<String, Object> mo = new HashMap<>(); ModelMap mo = new ModelMap();
mo.put("model", cm); mo.setModel(cm);
mo.put("importPath", config.toModelImport(cm.classname)); mo.put("importPath", config.toModelImport(cm.classname));
models.add(mo); modelMaps.add(mo);
cm.removeSelfReferenceImport(); cm.removeSelfReferenceImport();
allImports.addAll(cm.imports); allImports.addAll(cm.imports);
} }
objs.put("models", models); objs.setModels(modelMaps);
Set<String> importSet = new ConcurrentSkipListSet<>(); Set<String> importSet = new ConcurrentSkipListSet<>();
for (String nextImport : allImports) { for (String nextImport : allImports) {
String mapping = config.importMapping().get(nextImport); String mapping = config.importMapping().get(nextImport);
@ -1299,7 +1298,7 @@ public class DefaultGenerator implements Generator {
item.put("import", s); item.put("import", s);
imports.add(item); imports.add(item);
} }
objs.put("imports", imports); objs.setImports(imports);
config.postProcessModels(objs); config.postProcessModels(objs);
return objs; return objs;
} }

View File

@ -34,6 +34,8 @@ import org.openapitools.codegen.meta.features.GlobalFeature;
import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.meta.features.SchemaSupportFeature;
import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -50,7 +52,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
protected String packageName = "defaultPackage"; protected String packageName = "defaultPackage";
protected String projectName = "defaultProject"; protected String projectName = "defaultProject";
protected List<Map<String, Object>> orderedModels; protected List<ModelMap> orderedModels;
protected final Map<String, List<String>> modelDepends; protected final Map<String, List<String>> modelDepends;
protected final Map<String, String> nullableTypeMapping; protected final Map<String, String> nullableTypeMapping;
protected final Map<String, String> operationsScopes; protected final Map<String, String> operationsScopes;
@ -605,7 +607,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
@ -676,43 +678,39 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// Collect the model dependencies. // Collect the model dependencies.
List<Map<String, Object>> models = (List<Map<String, Object>>) objs.get("models"); for (ModelMap model : objs.getModels()) {
for (Map<String, Object> model : models) { CodegenModel m = model.getModel();
Object v = model.get("model"); List<String> d = new ArrayList<>();
if (v instanceof CodegenModel) { for (CodegenProperty p : m.vars) {
CodegenModel m = (CodegenModel) v; boolean isModel = false;
List<String> d = new ArrayList<>(); CodegenProperty item = p;
for (CodegenProperty p : m.vars) { if (p.isContainer) {
boolean isModel = false; item = p.items;
CodegenProperty item = p; }
if (p.isContainer) { if (item != null && !item.isString && !item.isPrimitiveType && !item.isContainer && !item.isInteger) {
item = p.items; if (!d.contains(item.dataType)) {
} // LOGGER.info("Model " + m.name + " uses " + p.datatype);
if (item != null && !item.isString && !item.isPrimitiveType && !item.isContainer && !item.isInteger) { d.add(item.dataType);
if (!d.contains(item.dataType)) { }
// LOGGER.info("Model " + m.name + " uses " + p.datatype); isModel = true;
d.add(item.dataType); }
} p.vendorExtensions.put("x-is-model-type", isModel);
isModel = true; p.vendorExtensions.put("x-is-stream-type", isStreamType(p));
} Boolean required = p.getRequired();
p.vendorExtensions.put("x-is-model-type", isModel);
p.vendorExtensions.put("x-is-stream-type", isStreamType(p)); // Convert optional members to use the Nullable_<T> type.
Boolean required = p.getRequired(); if (!Boolean.TRUE.equals(required) && nullableTypeMapping.containsKey(p.dataType)) {
p.dataType = nullableTypeMapping.get(p.dataType);
// Convert optional members to use the Nullable_<T> type. p.vendorExtensions.put("x-is-required", false);
if (!Boolean.TRUE.equals(required) && nullableTypeMapping.containsKey(p.dataType)) { } else {
p.dataType = nullableTypeMapping.get(p.dataType); p.vendorExtensions.put("x-is-required", true);
p.vendorExtensions.put("x-is-required", false);
} else {
p.vendorExtensions.put("x-is-required", true);
}
} }
// let us work with fully qualified names only
modelDepends.put(modelPackage + ".Models." + m.classname, d);
orderedModels.add(model);
} }
// let us work with fully qualified names only
modelDepends.put(modelPackage + ".Models." + m.classname, d);
orderedModels.add(model);
} }
// Sort models using dependencies: // Sort models using dependencies:
@ -722,15 +720,15 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
// if I find a model that has no dependencies, or all of its dependencies are in revisedOrderedModels, consider it the independentModel // if I find a model that has no dependencies, or all of its dependencies are in revisedOrderedModels, consider it the independentModel
// put the independentModel at the end of revisedOrderedModels, and remove it from orderedModels // put the independentModel at the end of revisedOrderedModels, and remove it from orderedModels
// //
List<Map<String, Object>> revisedOrderedModels = new ArrayList<>(); List<ModelMap> revisedOrderedModels = new ArrayList<>();
List<String> collectedModelNames = new ArrayList<>(); List<String> collectedModelNames = new ArrayList<>();
int sizeOrderedModels = orderedModels.size(); int sizeOrderedModels = orderedModels.size();
for (int i = 0; i < sizeOrderedModels; i++) { for (int i = 0; i < sizeOrderedModels; i++) {
Map<String, Object> independentModel = null; ModelMap independentModel = null;
String independentModelName = null; String independentModelName = null;
for (Map<String, Object> model : orderedModels) { for (ModelMap model : orderedModels) {
// let us work with fully qualified names only // let us work with fully qualified names only
String modelName = modelPackage + ".Models." + ((CodegenModel) model.get("model")).classname; String modelName = modelPackage + ".Models." + model.getModel().classname;
boolean dependent = false; boolean dependent = false;
for (String dependency : modelDepends.get(modelName)) { for (String dependency : modelDepends.get(modelName)) {
if (!collectedModelNames.contains(dependency)) { if (!collectedModelNames.contains(dependency)) {

View File

@ -26,6 +26,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -476,7 +477,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }

View File

@ -20,12 +20,13 @@ package org.openapitools.codegen.languages;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.samskivert.mustache.Mustache.Lambda; import com.samskivert.mustache.Mustache.Lambda;
import io.swagger.v3.core.util.Json;
import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.templating.mustache.*; import org.openapitools.codegen.templating.mustache.*;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -413,11 +414,9 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
for (CodegenProperty var : cm.vars) { for (CodegenProperty var : cm.vars) {
// check to see if model name is same as the property name // check to see if model name is same as the property name
// which will result in compilation error // which will result in compilation error
@ -438,8 +437,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
* @return An in-place modified state of the codegen object model. * @return An in-place modified state of the codegen object model.
*/ */
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
final Map<String, Object> processed = super.postProcessAllModels(objs); final Map<String, ModelsMap> processed = super.postProcessAllModels(objs);
postProcessEnumRefs(processed); postProcessEnumRefs(processed);
updateValueTypeProperty(processed); updateValueTypeProperty(processed);
updateNullableTypeProperty(processed); updateNullableTypeProperty(processed);
@ -472,18 +471,16 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
* *
* @param models processed models to be further processed for enum references * @param models processed models to be further processed for enum references
*/ */
@SuppressWarnings("unchecked") private void postProcessEnumRefs(final Map<String, ModelsMap> models) {
private void postProcessEnumRefs(final Map<String, Object> models) {
Map<String, CodegenModel> enumRefs = new HashMap<>(); Map<String, CodegenModel> enumRefs = new HashMap<>();
for (Map.Entry<String, Object> entry : models.entrySet()) { for (Map.Entry<String, ModelsMap> entry : models.entrySet()) {
CodegenModel model = ModelUtils.getModelByName(entry.getKey(), models); CodegenModel model = ModelUtils.getModelByName(entry.getKey(), models);
if (model.isEnum) { if (model.isEnum) {
enumRefs.put(entry.getKey(), model); enumRefs.put(entry.getKey(), model);
} }
} }
for (Map.Entry<String, Object> entry : models.entrySet()) { for (String openAPIName : models.keySet()) {
String openAPIName = entry.getKey();
CodegenModel model = ModelUtils.getModelByName(openAPIName, models); CodegenModel model = ModelUtils.getModelByName(openAPIName, models);
if (model != null) { if (model != null) {
for (CodegenProperty var : model.allVars) { for (CodegenProperty var : model.allVars) {
@ -636,9 +633,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
* *
* @param models list of all models * @param models list of all models
*/ */
protected void updateValueTypeProperty(Map<String, Object> models) { protected void updateValueTypeProperty(Map<String, ModelsMap> models) {
for (Map.Entry<String, Object> entry : models.entrySet()) { for (String openAPIName : models.keySet()) {
String openAPIName = entry.getKey();
CodegenModel model = ModelUtils.getModelByName(openAPIName, models); CodegenModel model = ModelUtils.getModelByName(openAPIName, models);
if (model != null) { if (model != null) {
for (CodegenProperty var : model.vars) { for (CodegenProperty var : model.vars) {
@ -653,9 +649,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
* *
* @param models list of all models * @param models list of all models
*/ */
protected void updateNullableTypeProperty(Map<String, Object> models) { protected void updateNullableTypeProperty(Map<String, ModelsMap> models) {
for (Map.Entry<String, Object> entry : models.entrySet()) { for (String openAPIName : models.keySet()) {
String openAPIName = entry.getKey();
CodegenModel model = ModelUtils.getModelByName(openAPIName, models); CodegenModel model = ModelUtils.getModelByName(openAPIName, models);
if (model != null) { if (model != null) {
for (CodegenProperty var : model.vars) { for (CodegenProperty var : model.vars) {
@ -668,7 +663,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
if (objs != null) { if (objs != null) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -732,8 +727,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
if (!isSupportNullable()) { if (!isSupportNullable()) {
for (CodegenParameter parameter : operation.allParams) { for (CodegenParameter parameter : operation.allParams) {
CodegenModel model = null; CodegenModel model = null;
for (Object modelHashMap : allModels) { for (ModelMap modelHashMap : allModels) {
CodegenModel codegenModel = ((HashMap<String, CodegenModel>) modelHashMap).get("model"); CodegenModel codegenModel = modelHashMap.getModel();
if (codegenModel.getClassname().equals(parameter.dataType)) { if (codegenModel.getClassname().equals(parameter.dataType)) {
model = codegenModel; model = codegenModel;
break; break;
@ -772,11 +767,11 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
// default noop // default noop
} }
private void updateCodegenParametersEnum(List<CodegenParameter> parameters, List<Object> allModels) { private void updateCodegenParametersEnum(List<CodegenParameter> parameters, List<ModelMap> allModels) {
for (CodegenParameter parameter : parameters) { for (CodegenParameter parameter : parameters) {
CodegenModel model = null; CodegenModel model = null;
for (Object modelHashMap : allModels) { for (ModelMap modelHashMap : allModels) {
CodegenModel codegenModel = ((HashMap<String, CodegenModel>) modelHashMap).get("model"); CodegenModel codegenModel = modelHashMap.getModel();
if (codegenModel.getClassname().equals(parameter.dataType)) { if (codegenModel.getClassname().equals(parameter.dataType)) {
model = codegenModel; model = codegenModel;
break; break;

View File

@ -28,6 +28,8 @@ import io.swagger.v3.oas.models.servers.ServerVariable;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.templating.mustache.IndentedLambda; import org.openapitools.codegen.templating.mustache.IndentedLambda;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
@ -379,12 +381,9 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg
} }
@Override @Override
@SuppressWarnings("unchecked") public ModelsMap postProcessModels(ModelsMap objs) {
public Map<String, Object> postProcessModels(Map<String, Object> objs) { for (ModelMap mo : objs.getModels()) {
List<Object> models = (List<Object>) objs.get("models"); CodegenModel cm = mo.getModel();
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// cannot handle inheritance from maps and arrays in C++ // cannot handle inheritance from maps and arrays in C++
if((cm.isArray || cm.isMap ) && (cm.parentModel == null)) { if((cm.isArray || cm.isMap ) && (cm.parentModel == null)) {
cm.parent = null; cm.parent = null;
@ -394,17 +393,17 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs){ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs){
Map<String, Object> models = super.postProcessAllModels(objs); Map<String, ModelsMap> models = super.postProcessAllModels(objs);
for (final Entry<String, Object> model : models.entrySet()) { for (final String key : models.keySet()) {
CodegenModel mo = ModelUtils.getModelByName(model.getKey(), models); CodegenModel mo = ModelUtils.getModelByName(key, models);
addForwardDeclarations(mo, models); addForwardDeclarations(mo, models);
} }
return models; return models;
} }
private void addForwardDeclarations(CodegenModel parentModel, Map<String, Object> objs) { private void addForwardDeclarations(CodegenModel parentModel, Map<String, ModelsMap> objs) {
List<String> forwardDeclarations = new ArrayList<String>(); List<String> forwardDeclarations = new ArrayList<>();
if(!parentModel.hasVars) { if(!parentModel.hasVars) {
return; return;
} }
@ -413,8 +412,8 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg
continue; continue;
} }
String childPropertyType = property.isContainer? property.mostInnerItems.baseType : property.baseType; String childPropertyType = property.isContainer? property.mostInnerItems.baseType : property.baseType;
for(final Entry<String, Object> mo : objs.entrySet()) { for(final String key : objs.keySet()) {
CodegenModel childModel = ModelUtils.getModelByName(mo.getKey(), objs); CodegenModel childModel = ModelUtils.getModelByName(key, objs);
if( !childPropertyType.equals(childModel.classname) || childPropertyType.equals(parentModel.classname) || !childModel.hasVars ){ if( !childPropertyType.equals(childModel.classname) || childPropertyType.equals(parentModel.classname) || !childModel.hasVars ){
continue; continue;
} }

View File

@ -1,6 +1,5 @@
package org.openapitools.codegen.languages; package org.openapitools.codegen.languages;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.ArraySchema;
@ -11,6 +10,8 @@ import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -500,7 +501,7 @@ public abstract class AbstractDartCodegen extends DefaultCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }
@ -559,7 +560,7 @@ public abstract class AbstractDartCodegen extends DefaultCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) { if (operations != null) {

View File

@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -360,7 +362,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -418,7 +420,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid error // remove model imports to avoid error
// List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); // List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
// final String prefix = modelPackage(); // final String prefix = modelPackage();
@ -451,14 +453,14 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessAllModels(final Map<String, Object> models) { public Map<String, ModelsMap> postProcessAllModels(final Map<String, ModelsMap> models) {
final Map<String, Object> processed = super.postProcessAllModels(models); final Map<String, ModelsMap> processed = super.postProcessAllModels(models);
postProcessParentModels(models); postProcessParentModels(models);
return processed; return processed;
} }
private void postProcessParentModels(final Map<String, Object> models) { private void postProcessParentModels(final Map<String, ModelsMap> models) {
for (final String parent : parentModels) { for (final String parent : parentModels) {
final CodegenModel parentModel = ModelUtils.getModelByName(parent, models); final CodegenModel parentModel = ModelUtils.getModelByName(parent, models);
final Collection<CodegenModel> childrenModels = childrenByParent.get(parent); final Collection<CodegenModel> childrenModels = childrenByParent.get(parent);

View File

@ -25,6 +25,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.templating.mustache.*; import org.openapitools.codegen.templating.mustache.*;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -312,12 +314,10 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
super.postProcessModels(objs); super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
for (CodegenProperty var : cm.vars) { for (CodegenProperty var : cm.vars) {
// check to see if model name is same as the property name // check to see if model name is same as the property name
// which will result in compilation error // which will result in compilation error
@ -338,8 +338,8 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
* @return (ew) modified state of the codegen object model. * @return (ew) modified state of the codegen object model.
*/ */
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
final Map<String, Object> processed = super.postProcessAllModels(objs); final Map<String, ModelsMap> processed = super.postProcessAllModels(objs);
postProcessEnumRefs(processed); postProcessEnumRefs(processed);
return postProcessDependencyOrders(processed); return postProcessDependencyOrders(processed);
} }
@ -349,8 +349,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
* Output of CodeGen models must therefore be in dependency order (rather than alphabetical order, which seems to be the default). * Output of CodeGen models must therefore be in dependency order (rather than alphabetical order, which seems to be the default).
* This could probably be made more efficient if absolutely needed. * This could probably be made more efficient if absolutely needed.
*/ */
@SuppressWarnings("unchecked") public Map<String, ModelsMap> postProcessDependencyOrders(final Map<String, ModelsMap> objs) {
public Map<String, Object> postProcessDependencyOrders(final Map<String, Object> objs) {
Map<String, Set<String>> dependencies = new HashMap<>(); Map<String, Set<String>> dependencies = new HashMap<>();
@ -381,7 +380,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
} }
} }
Map<String, Object> sorted = new LinkedHashMap<>(); Map<String, ModelsMap> sorted = new LinkedHashMap<>();
for (int i = sortedKeys.length - 1; i >= 0; i--) { for (int i = sortedKeys.length - 1; i >= 0; i--) {
Object k = sortedKeys[i]; Object k = sortedKeys[i];
sorted.put(k.toString(), objs.get(k)); sorted.put(k.toString(), objs.get(k));
@ -401,17 +400,16 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
* @param models processed models to be further processed for enum references * @param models processed models to be further processed for enum references
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void postProcessEnumRefs(final Map<String, Object> models) { private void postProcessEnumRefs(final Map<String, ModelsMap> models) {
Map<String, CodegenModel> enumRefs = new HashMap<>(); Map<String, CodegenModel> enumRefs = new HashMap<>();
for (Map.Entry<String, Object> entry : models.entrySet()) { for (String key : models.keySet()) {
CodegenModel model = ModelUtils.getModelByName(entry.getKey(), models); CodegenModel model = ModelUtils.getModelByName(key, models);
if (model.isEnum) { if (model.isEnum) {
enumRefs.put(entry.getKey(), model); enumRefs.put(key, model);
} }
} }
for (Map.Entry<String, Object> entry : models.entrySet()) { for (String openAPIName : models.keySet()) {
String openAPIName = entry.getKey();
CodegenModel model = ModelUtils.getModelByName(openAPIName, models); CodegenModel model = ModelUtils.getModelByName(openAPIName, models);
if (model != null) { if (model != null) {
for (CodegenProperty var : model.allVars) { for (CodegenProperty var : model.allVars) {
@ -514,7 +512,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
if (objs != null) { if (objs != null) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -565,8 +563,8 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
if (!isSupportNullable()) { if (!isSupportNullable()) {
for (CodegenParameter parameter : operation.allParams) { for (CodegenParameter parameter : operation.allParams) {
CodegenModel model = null; CodegenModel model = null;
for (Object modelHashMap : allModels) { for (ModelMap modelHashMap : allModels) {
CodegenModel codegenModel = ((HashMap<String, CodegenModel>) modelHashMap).get("model"); CodegenModel codegenModel = modelHashMap.getModel();
if (codegenModel.getClassname().equals(parameter.dataType)) { if (codegenModel.getClassname().equals(parameter.dataType)) {
model = codegenModel; model = codegenModel;
break; break;

View File

@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -460,7 +462,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -608,9 +610,9 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid error // remove model imports to avoid error
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
final String prefix = modelPackage(); final String prefix = modelPackage();
Iterator<Map<String, String>> iterator = imports.iterator(); Iterator<Map<String, String>> iterator = imports.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@ -621,42 +623,38 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
boolean addedTimeImport = false; boolean addedTimeImport = false;
boolean addedOSImport = false; boolean addedOSImport = false;
List<Map<String, Object>> models = (List<Map<String, Object>>) objs.get("models"); for (ModelMap m : objs.getModels()) {
for (Map<String, Object> m : models) { CodegenModel model = m.getModel();
Object v = m.get("model"); for (CodegenProperty param : model.vars) {
if (v instanceof CodegenModel) { if (!addedTimeImport
CodegenModel model = (CodegenModel) v; && ("time.Time".equals(param.dataType) || ("[]time.Time".equals(param.dataType)))) {
for (CodegenProperty param : model.vars) { imports.add(createMapping("import", "time"));
if (!addedTimeImport addedTimeImport = true;
&& ("time.Time".equals(param.dataType) || ("[]time.Time".equals(param.dataType)))) {
imports.add(createMapping("import", "time"));
addedTimeImport = true;
}
if (!addedOSImport && "*os.File".equals(param.baseType)) {
imports.add(createMapping("import", "os"));
addedOSImport = true;
}
} }
if (!addedOSImport && "*os.File".equals(param.baseType)) {
imports.add(createMapping("import", "os"));
addedOSImport = true;
}
}
if (this instanceof GoClientCodegen && model.isEnum) { if (this instanceof GoClientCodegen && model.isEnum) {
imports.add(createMapping("import", "fmt")); imports.add(createMapping("import", "fmt"));
} }
// if oneOf contains "null" type // if oneOf contains "null" type
if (model.oneOf != null && !model.oneOf.isEmpty() && model.oneOf.contains("nil")) { if (model.oneOf != null && !model.oneOf.isEmpty() && model.oneOf.contains("nil")) {
model.isNullable = true; model.isNullable = true;
model.oneOf.remove("nil"); model.oneOf.remove("nil");
} }
// if anyOf contains "null" type // if anyOf contains "null" type
if (model.anyOf != null && !model.anyOf.isEmpty() && model.anyOf.contains("nil")) { if (model.anyOf != null && !model.anyOf.isEmpty() && model.anyOf.contains("nil")) {
model.isNullable = true; model.isNullable = true;
model.anyOf.remove("nil"); model.anyOf.remove("nil");
}
} }
} }
// recursively add import for mapping one type to multiple imports // recursively add import for mapping one type to multiple imports
List<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null) if (recursiveImports == null)
return objs; return objs;

View File

@ -20,6 +20,7 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -420,7 +421,7 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); Map<String, Object> objs = (Map<String, Object>) operations.get("operations");
for (CodegenOperation op : (List<CodegenOperation>) objs.get("operation")) { for (CodegenOperation op : (List<CodegenOperation>) objs.get("operation")) {

View File

@ -34,6 +34,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.features.DocumentationProviderFeatures; import org.openapitools.codegen.languages.features.DocumentationProviderFeatures;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -644,7 +646,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
objs = super.postProcessAllModels(objs); objs = super.postProcessAllModels(objs);
objs = super.updateAllModels(objs); objs = super.updateAllModels(objs);
@ -1314,9 +1316,9 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// recursively add import for mapping one type to multiple imports // recursively add import for mapping one type to multiple imports
List<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null) if (recursiveImports == null)
return objs; return objs;
@ -1333,9 +1335,8 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
} }
// add x-implements for serializable to all models // add x-implements for serializable to all models
List<Map<String, Object>> models = (List<Map<String, Object>>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Map<String, Object> mo : models) { CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
if (this.serializableModel) { if (this.serializableModel) {
cm.getVendorExtensions().putIfAbsent("x-implements", new ArrayList<String>()); cm.getVendorExtensions().putIfAbsent("x-implements", new ArrayList<String>());
((ArrayList<String>) cm.getVendorExtensions().get("x-implements")).add("Serializable"); ((ArrayList<String>) cm.getVendorExtensions().get("x-implements")).add("Serializable");
@ -1346,7 +1347,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// Remove imports of List, ArrayList, Map and HashMap as they are // Remove imports of List, ArrayList, Map and HashMap as they are
// imported in the template already. // imported in the template already.
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");

View File

@ -24,6 +24,7 @@ import io.swagger.v3.oas.models.PathItem;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -168,7 +169,7 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> updatedObjs = jaxrsPostProcessOperations(objs); Map<String, Object> updatedObjs = jaxrsPostProcessOperations(objs);
Map<String, Object> operations = (Map<String, Object>) updatedObjs.get("operations"); Map<String, Object> operations = (Map<String, Object>) updatedObjs.get("operations");
if (operations != null) { if (operations != null) {

View File

@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.media.StringSchema;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -392,12 +394,10 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
if (cm.getDiscriminator() != null) { if (cm.getDiscriminator() != null) {
cm.vendorExtensions.put("x-has-data-class-body", true); cm.vendorExtensions.put("x-has-data-class-body", true);
break; break;

View File

@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.StringSchema;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -695,13 +697,13 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {

View File

@ -32,6 +32,8 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -40,7 +42,6 @@ import java.io.File;
import java.util.*; import java.util.*;
import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.camelize;
import static org.openapitools.codegen.utils.StringUtils.underscore;
public abstract class AbstractPythonConnexionServerCodegen extends AbstractPythonCodegen implements CodegenConfig { public abstract class AbstractPythonConnexionServerCodegen extends AbstractPythonCodegen implements CodegenConfig {
private final Logger LOGGER = LoggerFactory.getLogger(AbstractPythonConnexionServerCodegen.class); private final Logger LOGGER = LoggerFactory.getLogger(AbstractPythonConnexionServerCodegen.class);
@ -608,19 +609,17 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
Map<String, Object> result = super.postProcessAllModels(objs); Map<String, ModelsMap> result = super.postProcessAllModels(objs);
for (Map.Entry<String, Object> entry : result.entrySet()) { for (ModelsMap entry : result.values()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue(); for (ModelMap mo : entry.getModels()) {
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models"); CodegenModel cm = mo.getModel();
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
// Add additional filename information for imports // Add additional filename information for imports
mo.put("pyImports", toPyImports(cm, cm.imports)); mo.put("pyImports", toPyImports(cm, cm.imports));
} }
@ -646,7 +645,7 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

View File

@ -26,6 +26,7 @@ import io.swagger.v3.oas.models.media.StringSchema;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -473,9 +474,9 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid warnings for importing class in the same package in Scala // remove model imports to avoid warnings for importing class in the same package in Scala
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
final String prefix = modelPackage() + "."; final String prefix = modelPackage() + ".";
Iterator<Map<String, String>> iterator = imports.iterator(); Iterator<Map<String, String>> iterator = imports.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {

View File

@ -29,6 +29,8 @@ import org.openapitools.codegen.CodegenConstants.MODEL_PROPERTY_NAMING_TYPE;
import org.openapitools.codegen.CodegenConstants.PARAM_NAMING_TYPE; import org.openapitools.codegen.CodegenConstants.PARAM_NAMING_TYPE;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -765,13 +767,12 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
List<Object> models = (List<Object>) postProcessModelsEnum(objs).get("models"); List<ModelMap> models = postProcessModelsEnum(objs).getModels();
for (Object _mo : models) { for (ModelMap mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model"); cm.imports = new TreeSet<>(cm.imports);
cm.imports = new TreeSet(cm.imports);
// name enum with model name, e.g. StatusEnum => Pet.StatusEnum // name enum with model name, e.g. StatusEnum => Pet.StatusEnum
for (CodegenProperty var : cm.vars) { for (CodegenProperty var : cm.vars) {
if (Boolean.TRUE.equals(var.isEnum)) { if (Boolean.TRUE.equals(var.isEnum)) {
@ -792,14 +793,12 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
Map<String, Object> result = super.postProcessAllModels(objs); Map<String, ModelsMap> result = super.postProcessAllModels(objs);
for (Map.Entry<String, Object> entry : result.entrySet()) { for (ModelsMap entry : result.values()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue(); for (ModelMap mo : entry.getModels()) {
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models"); CodegenModel cm = mo.getModel();
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
if (cm.discriminator != null && cm.children != null) { if (cm.discriminator != null && cm.children != null) {
for (CodegenModel child : cm.children) { for (CodegenModel child : cm.children) {
this.setDiscriminatorValue(child, cm.discriminator.getPropertyName(), this.getDiscriminatorValue(child)); this.setDiscriminatorValue(child, cm.discriminator.getPropertyName(), this.getDiscriminatorValue(child));

View File

@ -19,6 +19,7 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -89,7 +90,7 @@ public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfi
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
List<CodegenOperation> newOpList = new ArrayList<CodegenOperation>(); List<CodegenOperation> newOpList = new ArrayList<CodegenOperation>();

View File

@ -23,6 +23,7 @@ import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.parser.util.SchemaTypeUtil; import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -461,7 +462,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
// We need to postprocess the operations to add proper consumes tags and fix form file handling // We need to postprocess the operations to add proper consumes tags and fix form file handling
if (objs != null) { if (objs != null) {

View File

@ -21,11 +21,12 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelsMap;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map;
import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.camelize;
@ -123,7 +124,7 @@ public class AvroSchemaCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }

View File

@ -26,7 +26,7 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.text.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;

View File

@ -23,6 +23,7 @@ import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -716,7 +717,7 @@ public class CLibcurlClientCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }

View File

@ -25,6 +25,8 @@ import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.servers.Server;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -42,7 +44,6 @@ import java.util.List;
import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.camelize;
import static org.openapitools.codegen.utils.StringUtils.underscore; import static org.openapitools.codegen.utils.StringUtils.underscore;
import static org.openapitools.codegen.CodegenDiscriminator.MappedModel;
@SuppressWarnings("Duplicates") @SuppressWarnings("Duplicates")
public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen {
@ -1327,16 +1328,13 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen {
} }
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
// add implements for serializable/parcelable to all models // add implements for serializable/parcelable to all models
for (Object _mo : models) { for (ModelMap mo : objs.getModels()) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.contains("Null")) { if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.contains("Null")) {
// if oneOf contains "null" type // if oneOf contains "null" type
@ -1416,7 +1414,7 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen {
* @return An in-place modified state of the codegen object model. * @return An in-place modified state of the codegen object model.
*/ */
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
objs = super.postProcessAllModels(objs); objs = super.postProcessAllModels(objs);
// other libraries probably want these fixes, but lets avoid breaking changes for now // other libraries probably want these fixes, but lets avoid breaking changes for now
@ -1424,9 +1422,9 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen {
return objs; return objs;
} }
ArrayList<CodegenModel> allModels = new ArrayList<CodegenModel>(); ArrayList<CodegenModel> allModels = new ArrayList<>();
for (Map.Entry<String, Object> entry : objs.entrySet()) { for (String key : objs.keySet()) {
CodegenModel model = ModelUtils.getModelByName(entry.getKey(), objs); CodegenModel model = ModelUtils.getModelByName(key, objs);
allModels.add(model); allModels.add(model);
} }

View File

@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.ComposedSchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -1084,16 +1086,13 @@ public class CSharpNetCoreReducedClientCodegen extends AbstractCSharpCodegen {
} }
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
// add implements for serializable/parcelable to all models // add implements for serializable/parcelable to all models
for (Object _mo : models) { for (ModelMap mo : objs.getModels()) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.contains("ModelNull")) { if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.contains("ModelNull")) {
// if oneOf contains "null" type // if oneOf contains "null" type

View File

@ -26,6 +26,7 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -353,7 +354,7 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); Map<String, Object> objs = (Map<String, Object>) operations.get("operations");
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation");
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {

View File

@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -115,7 +117,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
@ -125,7 +127,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }

View File

@ -25,6 +25,7 @@ import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -256,7 +257,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
String classname = (String) operations.get("classname"); String classname = (String) operations.get("classname");
operations.put("classnameSnakeUpperCase", underscore(classname).toUpperCase(Locale.ROOT)); operations.put("classnameSnakeUpperCase", underscore(classname).toUpperCase(Locale.ROOT));

View File

@ -6,6 +6,7 @@ import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -310,15 +311,15 @@ public abstract class CppQtAbstractCodegen extends AbstractCppCodegen implements
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation"); List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
Map<String, CodegenModel> codegenModels = new HashMap<>(); Map<String, CodegenModel> codegenModels = new HashMap<>();
for (Object moObj : allModels) { for (ModelMap moObj : allModels) {
CodegenModel mo = ((Map<String, CodegenModel>) moObj).get("model"); CodegenModel mo = moObj.getModel();
if (mo.isEnum) { if (mo.isEnum) {
codegenModels.put(mo.classname, mo); codegenModels.put(mo.classname, mo);
} }

View File

@ -27,6 +27,8 @@ import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import java.util.*; import java.util.*;
@ -322,7 +324,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
// override with any special post-processing // override with any special post-processing
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
@ -457,13 +459,13 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
} }
@Override @Override
public Map<String, Object> postProcessAllModels(final Map<String, Object> models) { public Map<String, ModelsMap> postProcessAllModels(final Map<String, ModelsMap> models) {
final Map<String, Object> processed = super.postProcessAllModels(models); final Map<String, ModelsMap> processed = super.postProcessAllModels(models);
postProcessParentModels(models); postProcessParentModels(models);
return processed; return processed;
} }
private void postProcessParentModels(final Map<String, Object> models) { private void postProcessParentModels(final Map<String, ModelsMap> models) {
for (final String parent : parentModels) { for (final String parent : parentModels) {
final CodegenModel parentModel = ModelUtils.getModelByName(parent, models); final CodegenModel parentModel = ModelUtils.getModelByName(parent, models);
final Collection<CodegenModel> childrenModels = childrenByParent.get(parent); final Collection<CodegenModel> childrenModels = childrenByParent.get(parent);

View File

@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import java.io.File; import java.io.File;
@ -122,7 +124,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
} }
@Override @Override
public Map<String, Object> updateAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> updateAllModels(Map<String, ModelsMap> objs) {
// Index all CodegenModels by model name. // Index all CodegenModels by model name.
Map<String, CodegenModel> allModels = getAllModels(objs); Map<String, CodegenModel> allModels = getAllModels(objs);
@ -282,7 +284,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
List<CodegenOperation> newOpList = new ArrayList<>(); List<CodegenOperation> newOpList = new ArrayList<>();

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.templating.mustache.PrefixWithHashLambda; import org.openapitools.codegen.templating.mustache.PrefixWithHashLambda;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -473,7 +475,7 @@ public class CrystalClientCodegen extends DefaultCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }
@ -554,15 +556,14 @@ public class CrystalClientCodegen extends DefaultCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<>(); HashMap<String, CodegenModel> modelMaps = new HashMap<>();
HashMap<String, Integer> processedModelMaps = new HashMap<>(); HashMap<String, Integer> processedModelMaps = new HashMap<>();
for (Object o : allModels) { for (ModelMap modelMap : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o; CodegenModel m = modelMap.getModel();
CodegenModel m = (CodegenModel) h.get("model");
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.parser.util.SchemaTypeUtil; import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -392,7 +393,7 @@ public class CsharpNetcoreFunctionsServerCodegen extends AbstractCSharpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
// We need to postprocess the operations to add proper consumes tags and fix form file handling // We need to postprocess the operations to add proper consumes tags and fix form file handling
if (objs != null) { if (objs != null) {

View File

@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.ClientModificationFeature; import org.openapitools.codegen.meta.features.ClientModificationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -207,14 +209,13 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models"); List<ModelMap> models = objs.getModels();
ProcessUtils.addIndexToProperties(models, 1); ProcessUtils.addIndexToProperties(models, 1);
for (Object _mo : models) { for (ModelMap mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
cm.imports = rewriteImports(cm.imports); cm.imports = rewriteImports(cm.imports);
cm.vendorExtensions.put("x-has-vars", !cm.vars.isEmpty()); cm.vendorExtensions.put("x-has-vars", !cm.vars.isEmpty());
} }
@ -263,7 +264,7 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.config.GlobalSettings;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.ClientModificationFeature; import org.openapitools.codegen.meta.features.ClientModificationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -253,14 +255,13 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models"); List<ModelMap> models = objs.getModels();
ProcessUtils.addIndexToProperties(models, 1); ProcessUtils.addIndexToProperties(models, 1);
for (Object _mo : models) { for (ModelMap mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
cm.imports = rewriteImports(cm.imports, true); cm.imports = rewriteImports(cm.imports, true);
cm.vendorExtensions.put("x-has-vars", !cm.vars.isEmpty()); cm.vendorExtensions.put("x-has-vars", !cm.vars.isEmpty());
} }
@ -294,7 +295,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

View File

@ -20,6 +20,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import io.swagger.v3.oas.models.media.*; import io.swagger.v3.oas.models.media.*;
@ -212,15 +214,14 @@ public class DartJaguarClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models"); List<ModelMap> models = objs.getModels();
ProcessUtils.addIndexToProperties(models, 1); ProcessUtils.addIndexToProperties(models, 1);
for (Object _mo : models) { for (ModelMap mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
Set<String> modelImports = new HashSet<>(); Set<String> modelImports = new HashSet<>();
CodegenModel cm = (CodegenModel) mo.get("model"); CodegenModel cm = mo.getModel();
for (String modelImport : cm.imports) { for (String modelImport : cm.imports) {
if (!modelToIgnore.contains(modelImport.toLowerCase(Locale.ROOT))) { if (!modelToIgnore.contains(modelImport.toLowerCase(Locale.ROOT))) {
modelImports.add(underscore(modelImport)); modelImports.add(underscore(modelImport));
@ -244,7 +245,7 @@ public class DartJaguarClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");

View File

@ -27,6 +27,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -297,7 +298,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) super.postProcessOperationsWithModels(objs, allModels).get("operations"); Map<String, Object> operations = (Map<String, Object>) super.postProcessOperationsWithModels(objs, allModels).get("operations");
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation");
List<ExtendedCodegenOperation> newOs = new ArrayList<>(); List<ExtendedCodegenOperation> newOs = new ArrayList<>();

View File

@ -26,6 +26,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -270,20 +272,18 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@SuppressWarnings({"static-method", "unchecked"}) @SuppressWarnings({"static-method", "unchecked"})
public Map<String, Object> postProcessAllModels(final Map<String, Object> orgObjs) { public Map<String, ModelsMap> postProcessAllModels(final Map<String, ModelsMap> orgObjs) {
final Map<String, Object> objs = super.postProcessAllModels(orgObjs); final Map<String, ModelsMap> objs = super.postProcessAllModels(orgObjs);
// put all models in one file // put all models in one file
final Map<String, Object> objects = new HashMap<>(); final Map<String, ModelsMap> objects = new HashMap<>();
final Map<String, Object> dataObj = objs.values().stream() final ModelsMap dataObj = objs.values().stream()
.map(obj -> (Map<String, Object>) obj)
.findFirst() .findFirst()
.orElse(new HashMap<>()); .orElse(new ModelsMap());
final List<Map<String, Object>> models = objs.values().stream() final List<ModelMap> models = objs.values().stream()
.map(obj -> (Map<String, Object>) obj) .flatMap(obj -> obj.getModels().stream())
.flatMap(obj -> ((List<Map<String, Object>>) obj.get("models")).stream())
.flatMap(obj -> { .flatMap(obj -> {
final CodegenModel model = (CodegenModel) obj.get("model"); final CodegenModel model = obj.getModel();
// circular references // circular references
model.vars.forEach(var -> { model.vars.forEach(var -> {
var.isCircularReference = model.allVars.stream() var.isCircularReference = model.allVars.stream()
@ -319,16 +319,16 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
final boolean includeTime = anyVarMatches(models, prop -> prop.isDate || prop.isDateTime); final boolean includeTime = anyVarMatches(models, prop -> prop.isDate || prop.isDateTime);
final boolean includeUuid = anyVarMatches(models, prop -> prop.isUuid); final boolean includeUuid = anyVarMatches(models, prop -> prop.isUuid);
dataObj.put("models", models); dataObj.setModels(models);
dataObj.put("includeTime", includeTime); dataObj.put("includeTime", includeTime);
dataObj.put("includeUuid", includeUuid); dataObj.put("includeUuid", includeUuid);
objects.put("Data", dataObj); objects.put("Data", dataObj);
return objects; return objects;
} }
private boolean anyVarMatches(final List<Map<String, Object>> models, final Predicate<CodegenProperty> predicate) { private boolean anyVarMatches(final List<ModelMap> models, final Predicate<CodegenProperty> predicate) {
return models.stream() return models.stream()
.map(obj -> (CodegenModel) obj.get("model")) .map(ModelMap::getModel)
.flatMap(model -> model.vars.stream()).anyMatch(var -> { .flatMap(model -> model.vars.stream()).anyMatch(var -> {
CodegenProperty prop = var; CodegenProperty prop = var;
while (prop != null) { while (prop != null) {
@ -342,29 +342,25 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }
private static boolean anyOperationParam(final List<CodegenOperation> operations, final Predicate<CodegenParameter> predicate) { private static boolean anyOperationParam(final List<CodegenOperation> operations, final Predicate<CodegenParameter> predicate) {
return operations.stream() return operations.stream()
.flatMap(operation -> operation.allParams.stream()) .flatMap(operation -> operation.allParams.stream())
.filter(predicate) .anyMatch(predicate);
.findAny()
.isPresent();
} }
private static boolean anyOperationResponse(final List<CodegenOperation> operations, final Predicate<CodegenResponse> predicate) { private static boolean anyOperationResponse(final List<CodegenOperation> operations, final Predicate<CodegenResponse> predicate) {
return operations.stream() return operations.stream()
.flatMap(operation -> operation.responses.stream()) .flatMap(operation -> operation.responses.stream())
.filter(predicate) .anyMatch(predicate);
.findAny()
.isPresent();
} }
@Override @Override
@SuppressWarnings({"static-method", "unchecked"}) @SuppressWarnings({"static-method", "unchecked"})
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); Map<String, Object> objs = (Map<String, Object>) operations.get("operations");
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation");
ops.forEach(op -> { ops.forEach(op -> {

View File

@ -22,6 +22,7 @@ import com.samskivert.mustache.Template;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.templating.mustache.JoinWithCommaLambda; import org.openapitools.codegen.templating.mustache.JoinWithCommaLambda;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -308,7 +309,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation");
List<ExtendedCodegenOperation> newOs = new ArrayList<ExtendedCodegenOperation>(); List<ExtendedCodegenOperation> newOs = new ArrayList<ExtendedCodegenOperation>();

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -367,7 +368,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation");
List<ExtendedCodegenOperation> newOs = new ArrayList<>(); List<ExtendedCodegenOperation> newOs = new ArrayList<>();

View File

@ -19,6 +19,7 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -269,7 +270,7 @@ public class ErlangServerCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {

View File

@ -27,6 +27,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -400,74 +402,68 @@ public class GoClientCodegen extends AbstractGoCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// The superclass determines the list of required golang imports. The actual list of imports // The superclass determines the list of required golang imports. The actual list of imports
// depends on which types are used, some of which are changed in the code below (but then preserved // depends on which types are used, some of which are changed in the code below (but then preserved
// and used through x-go-base-type in templates). So super.postProcessModels // and used through x-go-base-type in templates). So super.postProcessModels
// must be invoked at the beginning of this method. // must be invoked at the beginning of this method.
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Map<String, Object>> models = (List<Map<String, Object>>) objs.get("models"); for (ModelMap m : objs.getModels()) {
for (Map<String, Object> m : models) { CodegenModel model = m.getModel();
Object v = m.get("model"); if (model.isEnum) {
if (v instanceof CodegenModel) { continue;
CodegenModel model = (CodegenModel) v; }
if (model.isEnum) {
for (CodegenProperty param : Iterables.concat(model.vars, model.allVars, model.requiredVars, model.optionalVars)) {
param.vendorExtensions.put("x-go-base-type", param.dataType);
if (!param.isNullable || param.isContainer || param.isFreeFormObject
|| (param.isAnyType && !param.isModel)) {
continue; continue;
} }
if (param.isDateTime) {
for (CodegenProperty param : Iterables.concat(model.vars, model.allVars, model.requiredVars, model.optionalVars)) { // Note this could have been done by adding the following line in processOpts(),
param.vendorExtensions.put("x-go-base-type", param.dataType); // however, we only want to represent the DateTime object as NullableTime if
if (!param.isNullable || param.isContainer || param.isFreeFormObject // it's marked as nullable in the spec.
|| (param.isAnyType && !param.isModel)) { // typeMapping.put("DateTime", "NullableTime");
continue; param.dataType = "NullableTime";
} } else {
if (param.isDateTime) { param.dataType = "Nullable" + Character.toUpperCase(param.dataType.charAt(0))
// Note this could have been done by adding the following line in processOpts(), + param.dataType.substring(1);
// however, we only want to represent the DateTime object as NullableTime if
// it's marked as nullable in the spec.
// typeMapping.put("DateTime", "NullableTime");
param.dataType = "NullableTime";
} else {
param.dataType = "Nullable" + Character.toUpperCase(param.dataType.charAt(0))
+ param.dataType.substring(1);
}
} }
}
// additional import for different cases // additional import for different cases
// oneOf // oneOf
if (model.oneOf != null && !model.oneOf.isEmpty()) { if (model.oneOf != null && !model.oneOf.isEmpty()) {
imports.add(createMapping("import", "fmt")); imports.add(createMapping("import", "fmt"));
} }
// anyOf // anyOf
if (model.anyOf != null && !model.anyOf.isEmpty()) { if (model.anyOf != null && !model.anyOf.isEmpty()) {
imports.add(createMapping("import", "fmt")); imports.add(createMapping("import", "fmt"));
} }
// additionalProperties: true and parent
if (model.isAdditionalPropertiesTrue && model.parent != null && Boolean.FALSE.equals(model.isMap)) {
imports.add(createMapping("import", "reflect"));
imports.add(createMapping("import", "strings"));
}
// additionalProperties: true and parent
if (model.isAdditionalPropertiesTrue && model.parent != null && Boolean.FALSE.equals(model.isMap)) {
imports.add(createMapping("import", "reflect"));
imports.add(createMapping("import", "strings"));
} }
} }
return objs; return objs;
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>(); HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>();
HashMap<String, Integer> processedModelMaps = new HashMap<String, Integer>(); HashMap<String, Integer> processedModelMaps = new HashMap<String, Integer>();
for (Object o : allModels) { for (ModelMap modelMap : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o; CodegenModel m = modelMap.getModel();
CodegenModel m = (CodegenModel) h.get("model");
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }

View File

@ -20,6 +20,7 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
@ -106,7 +107,7 @@ public class GoEchoServerCodegen extends AbstractGoCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");

View File

@ -22,6 +22,7 @@ import org.openapitools.codegen.CodegenOperation;
import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -121,7 +122,7 @@ public class GoGinServerCodegen extends AbstractGoCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");

View File

@ -21,6 +21,7 @@ import io.swagger.v3.oas.models.media.ComposedSchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -285,7 +286,7 @@ public class GoServerCodegen extends AbstractGoCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");

View File

@ -32,6 +32,7 @@ import org.openapitools.codegen.meta.features.ParameterFeature;
import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.meta.features.SchemaSupportFeature;
import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap;
public class GroovyClientCodegen extends AbstractJavaCodegen { public class GroovyClientCodegen extends AbstractJavaCodegen {
@ -125,7 +126,7 @@ public class GroovyClientCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); Map<String, Object> objs = (Map<String, Object>) operations.get("operations");
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation");
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {

View File

@ -23,11 +23,13 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.security.SecurityScheme;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.text.StringEscapeUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -777,7 +779,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
updateGlobalAdditionalProps(); updateGlobalAdditionalProps();
return super.postProcessAllModels(objs); return super.postProcessAllModels(objs);
} }
@ -807,7 +809,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> ret = super.postProcessOperationsWithModels(objs, allModels); Map<String, Object> ret = super.postProcessOperationsWithModels(objs, allModels);
HashMap<String, Object> pathOps = (HashMap<String, Object>) ret.get("operations"); HashMap<String, Object> pathOps = (HashMap<String, Object>) ret.get("operations");
ArrayList<CodegenOperation> ops = (ArrayList<CodegenOperation>) pathOps.get("operation"); ArrayList<CodegenOperation> ops = (ArrayList<CodegenOperation>) pathOps.get("operation");
@ -817,9 +819,8 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
updateGlobalAdditionalProps(); updateGlobalAdditionalProps();
for (Object o : allModels) { for (ModelMap modelMap : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o; CodegenModel m = modelMap.getModel();
CodegenModel m = (CodegenModel) h.get("model");
if (modelMimeTypes.containsKey(m.classname)) { if (modelMimeTypes.containsKey(m.classname)) {
Set<String> mimeTypes = modelMimeTypes.get(m.classname); Set<String> mimeTypes = modelMimeTypes.get(m.classname);
@ -1269,12 +1270,9 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
CodegenModel cm = mo.getModel();
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
cm.isEnum = genEnums && cm.isEnum; cm.isEnum = genEnums && cm.isEnum;
if (cm.isAlias) { if (cm.isAlias) {
String dataType = cm.dataType; String dataType = cm.dataType;
@ -1302,13 +1300,11 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
Map<String, Object> objsEnum = super.postProcessModelsEnum(objs); ModelsMap objsEnum = super.postProcessModelsEnum(objs);
if (genEnums) { if (genEnums) {
List<Object> models = (List<Object>) objsEnum.get("models"); for (ModelMap mo : objsEnum.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
if (cm.isEnum && cm.allowableValues != null) { if (cm.isEnum && cm.allowableValues != null) {
updateAllowableValuesNames(cm.classname, cm.allowableValues); updateAllowableValuesNames(cm.classname, cm.allowableValues);
addEnumToUniques(cm.classname, cm.dataType, cm.allowableValues.values().toString(), cm.allowableValues, cm.description); addEnumToUniques(cm.classname, cm.dataType, cm.allowableValues.values().toString(), cm.allowableValues, cm.description);

View File

@ -23,6 +23,7 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.languages.features.GzipTestFeatures; import org.openapitools.codegen.languages.features.GzipTestFeatures;
import org.openapitools.codegen.languages.features.LoggingTestFeatures; import org.openapitools.codegen.languages.features.LoggingTestFeatures;
import org.openapitools.codegen.languages.features.UseGenericResponseFeatures; import org.openapitools.codegen.languages.features.UseGenericResponseFeatures;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -165,7 +166,7 @@ public class JavaCXFClientCodegen extends AbstractJavaCodegen
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
return AbstractJavaJAXRSServerCodegen.jaxrsPostProcessOperations(objs); return AbstractJavaJAXRSServerCodegen.jaxrsPostProcessOperations(objs);
} }

View File

@ -27,7 +27,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.text.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.CliOption; import org.openapitools.codegen.CliOption;
import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenModel;
@ -36,6 +36,8 @@ import org.openapitools.codegen.CodegenParameter;
import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.CodegenProperty;
import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.languages.features.CXFExtServerFeatures; import org.openapitools.codegen.languages.features.CXFExtServerFeatures;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.JsonCache; import org.openapitools.codegen.utils.JsonCache;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.JsonCache.CacheException; import org.openapitools.codegen.utils.JsonCache.CacheException;
@ -1118,18 +1120,14 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
objs = super.postProcessAllModels(objs); objs = super.postProcessAllModels(objs);
// When populating operation bodies we need to import enum types, which requires the class that defines them. // When populating operation bodies we need to import enum types, which requires the class that defines them.
if (generateOperationBody) { if (generateOperationBody) {
for (Object value : objs.values()) { for (ModelsMap value : objs.values()) {
@SuppressWarnings("unchecked") for (ModelMap mo : value.getModels())
Map<String, Object> inner = (Map<String, Object>) value; postProcessModel(mo.getModel());
@SuppressWarnings("unchecked")
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> mo : models)
postProcessModel((CodegenModel) mo.get("model"));
} }
} }
@ -1163,7 +1161,7 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> result = super.postProcessOperationsWithModels(objs, allModels); Map<String, Object> result = super.postProcessOperationsWithModels(objs, allModels);
if (generateOperationBody) { if (generateOperationBody) {
@ -1177,9 +1175,8 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF
// Map the models so we can look them up by name. // Map the models so we can look them up by name.
Map<String, CodegenModel> models = new HashMap<>(); Map<String, CodegenModel> models = new HashMap<>();
for (Object model : allModels) { for (ModelMap model : allModels) {
@SuppressWarnings("unchecked") CodegenModel cgModel = model.getModel();
CodegenModel cgModel = ((Map<String, CodegenModel>) model).get("model");
models.put(cgModel.classname, cgModel); models.put(cgModel.classname, cgModel);
} }

View File

@ -27,6 +27,8 @@ import org.openapitools.codegen.languages.features.GzipFeatures;
import org.openapitools.codegen.languages.features.PerformBeanValidationFeatures; import org.openapitools.codegen.languages.features.PerformBeanValidationFeatures;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.meta.features.GlobalFeature; import org.openapitools.codegen.meta.features.GlobalFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.templating.mustache.CaseFormatLambda; import org.openapitools.codegen.templating.mustache.CaseFormatLambda;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -608,7 +610,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
if (RETROFIT_2.equals(getLibrary())) { if (RETROFIT_2.equals(getLibrary())) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -797,15 +799,13 @@ public class JavaClientCodegen extends AbstractJavaCodegen
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
//Needed import for Gson based libraries //Needed import for Gson based libraries
if (additionalProperties.containsKey(SERIALIZATION_LIBRARY_GSON)) { if (additionalProperties.containsKey(SERIALIZATION_LIBRARY_GSON)) {
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(importMapping.get("SerializedName")); cm.imports.add(importMapping.get("SerializedName"));
@ -820,15 +820,14 @@ public class JavaClientCodegen extends AbstractJavaCodegen
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models"); List<ModelMap> models = objs.getModels();
if (additionalProperties.containsKey(SERIALIZATION_LIBRARY_JACKSON) && !JERSEY1.equals(getLibrary())) { if (additionalProperties.containsKey(SERIALIZATION_LIBRARY_JACKSON) && !JERSEY1.equals(getLibrary())) {
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
for (Object _mo : models) { for (ModelMap mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
boolean addImports = false; boolean addImports = false;
for (CodegenProperty var : cm.vars) { for (CodegenProperty var : cm.vars) {
@ -855,10 +854,10 @@ public class JavaClientCodegen extends AbstractJavaCodegen
// add import for Set, HashSet // add import for Set, HashSet
cm.imports.add("Set"); cm.imports.add("Set");
Map<String, String> importsSet = new HashMap<String, String>(); Map<String, String> importsSet = new HashMap<>();
importsSet.put("import", "java.util.Set"); importsSet.put("import", "java.util.Set");
imports.add(importsSet); imports.add(importsSet);
Map<String, String> importsHashSet = new HashMap<String, String>(); Map<String, String> importsHashSet = new HashMap<>();
importsHashSet.put("import", "java.util.HashSet"); importsHashSet.put("import", "java.util.HashSet");
imports.add(importsHashSet); imports.add(importsHashSet);
} }
@ -872,7 +871,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen
imports2Classnames.put("JsonIgnore", "com.fasterxml.jackson.annotation.JsonIgnore"); imports2Classnames.put("JsonIgnore", "com.fasterxml.jackson.annotation.JsonIgnore");
for (Map.Entry<String, String> entry : imports2Classnames.entrySet()) { for (Map.Entry<String, String> entry : imports2Classnames.entrySet()) {
cm.imports.add(entry.getKey()); cm.imports.add(entry.getKey());
Map<String, String> importsItem = new HashMap<String, String>(); Map<String, String> importsItem = new HashMap<>();
importsItem.put("import", entry.getValue()); importsItem.put("import", entry.getValue());
imports.add(importsItem); imports.add(importsItem);
} }
@ -881,9 +880,8 @@ public class JavaClientCodegen extends AbstractJavaCodegen
} }
// add implements for serializable/parcelable to all models // add implements for serializable/parcelable to all models
for (Object _mo : models) { for (ModelMap mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
cm.getVendorExtensions().putIfAbsent("x-implements", new ArrayList<String>()); cm.getVendorExtensions().putIfAbsent("x-implements", new ArrayList<String>());
if (JERSEY2.equals(getLibrary()) || NATIVE.equals(getLibrary()) || OKHTTP_GSON.equals(getLibrary())) { if (JERSEY2.equals(getLibrary()) || NATIVE.equals(getLibrary()) || OKHTTP_GSON.equals(getLibrary())) {

View File

@ -23,6 +23,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.config.GlobalSettings; import org.openapitools.codegen.config.GlobalSettings;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -136,7 +138,7 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
@ -185,19 +187,17 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson //Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(importMapping.get("JsonValue")); cm.imports.add(importMapping.get("JsonValue"));
Map<String, String> item = new HashMap<String, String>(); Map<String, String> item = new HashMap<>();
item.put("import", importMapping.get("JsonValue")); item.put("import", importMapping.get("JsonValue"));
imports.add(item); imports.add(item);
} }

View File

@ -21,6 +21,8 @@ import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import java.util.*; import java.util.*;
@ -133,15 +135,13 @@ public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen {
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson //Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(importMapping.get("JsonValue")); cm.imports.add(importMapping.get("JsonValue"));

View File

@ -21,6 +21,8 @@ import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -121,15 +123,13 @@ public class JavaMSF4JServerCodegen extends AbstractJavaJAXRSServerCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson //Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(importMapping.get("JsonValue")); cm.imports.add(importMapping.get("JsonValue"));

View File

@ -5,6 +5,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -316,11 +318,11 @@ public abstract class JavaMicronautAbstractCodegen extends AbstractJavaCodegen i
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, CodegenModel> models = allModels.stream() Map<String, CodegenModel> models = allModels.stream()
.map(v -> ((Map<String, CodegenModel>) v).get("model")) .map(ModelMap::getModel)
.collect(Collectors.toMap(v -> v.classname, v -> v)); .collect(Collectors.toMap(v -> v.classname, v -> v));
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
@ -389,12 +391,11 @@ public abstract class JavaMicronautAbstractCodegen extends AbstractJavaCodegen i
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
objs = super.postProcessAllModels(objs); objs = super.postProcessAllModels(objs);
for (String modelName: objs.keySet()) { for (ModelsMap models: objs.values()) {
CodegenModel model = ((Map<String, List<Map<String, CodegenModel>>>) objs.get(modelName)) CodegenModel model = models.getModels().get(0).getModel();
.get("models").get(0).get("model");
if (model.getParentModel() != null) { if (model.getParentModel() != null) {
model.vendorExtensions.put("requiredParentVars", model.getParentModel().requiredVars); model.vendorExtensions.put("requiredParentVars", model.getParentModel().requiredVars);
} }

View File

@ -3,6 +3,7 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.StringUtils; import org.openapitools.codegen.utils.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -175,7 +176,7 @@ public class JavaMicronautServerCodegen extends JavaMicronautAbstractCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
// Add the controller classname to operations // Add the controller classname to operations

View File

@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.PathItem;
import io.swagger.v3.oas.models.tags.Tag; import io.swagger.v3.oas.models.tags.Tag;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import java.io.File; import java.io.File;
@ -311,7 +313,7 @@ public class JavaPKMSTServerCodegen extends AbstractJavaCodegen {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
@ -407,21 +409,18 @@ public class JavaPKMSTServerCodegen extends AbstractJavaCodegen {
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
// Add imports for Jackson // Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(this.importMapping.get("JsonValue")); cm.imports.add(this.importMapping.get("JsonValue"));
Map<String, String> item = new HashMap<String, String>(); Map<String, String> item = new HashMap<>();
item.put("import", this.importMapping.get("JsonValue")); item.put("import", this.importMapping.get("JsonValue"));
imports.add(item); imports.add(item);
} }

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -304,7 +305,7 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) { if (operations != null) {

View File

@ -23,6 +23,8 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.languages.features.JbossFeature; import org.openapitools.codegen.languages.features.JbossFeature;
import org.openapitools.codegen.languages.features.SwaggerFeatures; import org.openapitools.codegen.languages.features.SwaggerFeatures;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
@ -131,15 +133,13 @@ public class JavaResteasyEapServerCodegen extends AbstractJavaJAXRSServerCodegen
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
// Add imports for Jackson // Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(importMapping.get("JsonValue")); cm.imports.add(importMapping.get("JsonValue"));

View File

@ -21,6 +21,8 @@ import org.apache.commons.lang3.BooleanUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.features.JbossFeature; import org.openapitools.codegen.languages.features.JbossFeature;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
@ -142,19 +144,17 @@ public class JavaResteasyServerCodegen extends AbstractJavaJAXRSServerCodegen im
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson //Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(importMapping.get("JsonValue")); cm.imports.add(importMapping.get("JsonValue"));
Map<String, String> item = new HashMap<String, String>(); Map<String, String> item = new HashMap<>();
item.put("import", importMapping.get("JsonValue")); item.put("import", importMapping.get("JsonValue"));
imports.add(item); imports.add(item);
} }

View File

@ -21,6 +21,8 @@ import org.apache.commons.lang3.BooleanUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.config.GlobalSettings; import org.openapitools.codegen.config.GlobalSettings;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -118,7 +120,7 @@ public class JavaUndertowServerCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
@ -167,19 +169,17 @@ public class JavaUndertowServerCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson //Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(importMapping.get("JsonValue")); cm.imports.add(importMapping.get("JsonValue"));
Map<String, String> item = new HashMap<String, String>(); Map<String, String> item = new HashMap<>();
item.put("import", importMapping.get("JsonValue")); item.put("import", importMapping.get("JsonValue"));
imports.add(item); imports.add(item);
} }

View File

@ -27,6 +27,7 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -190,7 +191,7 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> newObjs = super.postProcessOperationsWithModels(objs, allModels); Map<String, Object> newObjs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) newObjs.get("operations"); Map<String, Object> operations = (Map<String, Object>) newObjs.get("operations");
if (operations != null) { if (operations != null) {

View File

@ -20,6 +20,7 @@ import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
@ -127,7 +128,7 @@ public class JavaVertXWebServerCodegen extends AbstractJavaCodegen {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> newObjs = super.postProcessOperationsWithModels(objs, allModels); Map<String, Object> newObjs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) newObjs.get("operations"); Map<String, Object> operations = (Map<String, Object>) newObjs.get("operations");
if (operations != null) { if (operations != null) {

View File

@ -27,6 +27,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -906,7 +908,7 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// Generate and store argument list string of each operation into // Generate and store argument list string of each operation into
// vendor-extension: x-codegen-argList. // vendor-extension: x-codegen-argList.
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -954,15 +956,12 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod
return objs; return objs;
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) { for (ModelMap mo : objs.getModels()) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
// Collect each model's required property names in *document order*. // Collect each model's required property names in *document order*.
// NOTE: can't use 'mandatory' as it is built from ModelImpl.getRequired(), which sorts names // NOTE: can't use 'mandatory' as it is built from ModelImpl.getRequired(), which sorts names

View File

@ -26,6 +26,8 @@ import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -988,7 +990,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// Generate and store argument list string of each operation into // Generate and store argument list string of each operation into
// vendor-extension: x-codegen-argList. // vendor-extension: x-codegen-argList.
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -1039,15 +1041,12 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
return objs; return objs;
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) { for (ModelMap mo : objs.getModels()) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
// Collect each model's required property names in *document order*. // Collect each model's required property names in *document order*.
// NOTE: can't use 'mandatory' as it is built from ModelImpl.getRequired(), which sorts names // NOTE: can't use 'mandatory' as it is built from ModelImpl.getRequired(), which sorts names

View File

@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -255,13 +257,10 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
for (ModelMap mo : objs.getModels()) {
List<Object> models = (List<Object>) objs.get("models"); CodegenModel cm = mo.getModel();
for (Object _mo : models) { cm.imports = new TreeSet<>(cm.imports);
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
cm.imports = new TreeSet(cm.imports);
for (CodegenProperty var : cm.vars) { for (CodegenProperty var : cm.vars) {
// handle default value for enum, e.g. available => StatusEnum.available // handle default value for enum, e.g. available => StatusEnum.available
if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) { if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) {
@ -273,7 +272,7 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
if (objs.get("imports") instanceof List) { if (objs.get("imports") instanceof List) {
List<Map<String, String>> imports = (ArrayList<Map<String, String>>)objs.get("imports"); List<Map<String, String>> imports = (ArrayList<Map<String, String>>)objs.get("imports");
Collections.sort(imports, new Comparator<Map<String, String>>() { Collections.sort(imports, new Comparator<Map<String, String>>() {

View File

@ -23,6 +23,9 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import java.util.*; import java.util.*;
import static org.openapitools.codegen.utils.StringUtils.dashize; import static org.openapitools.codegen.utils.StringUtils.dashize;
@ -163,13 +166,12 @@ public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCo
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
List<Object> models = (List<Object>) postProcessModelsEnum(objs).get("models"); List<ModelMap> models = postProcessModelsEnum(objs).getModels();
for (Object _mo : models) { for (ModelMap mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model"); cm.imports = new TreeSet<>(cm.imports);
cm.imports = new TreeSet(cm.imports);
// name enum with model name, e.g. StatusEnum => Pet.StatusEnum // name enum with model name, e.g. StatusEnum => Pet.StatusEnum
for (CodegenProperty var : cm.vars) { for (CodegenProperty var : cm.vars) {
if (Boolean.TRUE.equals(var.isEnum)) { if (Boolean.TRUE.equals(var.isEnum)) {

View File

@ -33,6 +33,8 @@ import org.openapitools.codegen.meta.features.ParameterFeature;
import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.meta.features.SchemaSupportFeature;
import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -730,13 +732,11 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
Map<String, Object> objects = super.postProcessModels(objs); ModelsMap objects = super.postProcessModels(objs);
@SuppressWarnings("unchecked") List<Object> models = (List<Object>) objs.get("models");
for (Object model : models) { for (ModelMap mo : objects.getModels()) {
@SuppressWarnings("unchecked") Map<String, Object> mo = (Map<String, Object>) model; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
if (getGenerateRoomModels()) { if (getGenerateRoomModels()) {
cm.vendorExtensions.put("x-has-data-class-body", true); cm.vendorExtensions.put("x-has-data-class-body", true);
} }
@ -768,7 +768,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) { if (operations != null) {

View File

@ -24,6 +24,8 @@ import com.samskivert.mustache.Template;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -552,16 +554,14 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson //Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
List<Object> models = (List<Object>) objs.get("models");
models.stream() objs.getModels().stream()
.map(mo -> (Map<String, Object>) mo) .map(ModelMap::getModel)
.map(mo -> (CodegenModel) mo.get("model"))
.filter(cm -> Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) .filter(cm -> Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null)
.forEach(cm -> { .forEach(cm -> {
cm.imports.add(importMapping.get("JsonValue")); cm.imports.add(importMapping.get("JsonValue"));
@ -578,7 +578,7 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");

View File

@ -20,6 +20,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -282,19 +284,17 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel model = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel model = (CodegenModel) mo.get("model");
String modelName = model.getName(); String modelName = model.getName();
String tableName = toTableName(modelName); String tableName = toTableName(modelName);
String modelDescription = model.getDescription(); String modelDescription = model.getDescription();
Map<String, Object> modelVendorExtensions = model.getVendorExtensions(); Map<String, Object> modelVendorExtensions = model.getVendorExtensions();
Map<String, Object> ktormSchema = new HashMap<String, Object>(); Map<String, Object> ktormSchema = new HashMap<>();
Map<String, Object> tableDefinition = new HashMap<String, Object>(); Map<String, Object> tableDefinition = new HashMap<>();
if (getIdentifierNamingConvention().equals("snake_case") && !modelName.equals(tableName)) { if (getIdentifierNamingConvention().equals("snake_case") && !modelName.equals(tableName)) {
// add original name in table comment // add original name in table comment

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -418,7 +420,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -449,9 +451,9 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid error // remove model imports to avoid error
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
final String prefix = modelPackage(); final String prefix = modelPackage();
Iterator<Map<String, String>> iterator = imports.iterator(); Iterator<Map<String, String>> iterator = imports.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@ -461,7 +463,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
// recursively add import for mapping one type to multiple imports // recursively add import for mapping one type to multiple imports
List<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null) if (recursiveImports == null)
return objs; return objs;

View File

@ -18,6 +18,8 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -252,13 +254,11 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel model = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel model = (CodegenModel) mo.get("model");
String modelName = model.getName(); String modelName = model.getName();
String tableName = this.toTableName(modelName); String tableName = this.toTableName(modelName);
String modelDescription = model.getDescription(); String modelDescription = model.getDescription();

View File

@ -23,6 +23,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.StringUtils; import org.openapitools.codegen.utils.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -169,7 +171,7 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }
@ -256,7 +258,7 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@ -31,6 +31,7 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -237,7 +238,7 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@ -25,6 +25,8 @@ import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -189,16 +191,14 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> superobjs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> superobjs) {
List<String> toRemove = new ArrayList<>(); List<String> toRemove = new ArrayList<>();
for (Map.Entry<String, Object> modelEntry : superobjs.entrySet()) { for (Map.Entry<String, ModelsMap> modelEntry : superobjs.entrySet()) {
Map<String, Object> objs = (Map<String, Object>) modelEntry.getValue();
// process enum in models // process enum in models
List<Object> models = (List<Object>) objs.get("models"); List<ModelMap> models = modelEntry.getValue().getModels();
for (Object _mo : models) { for (ModelMap mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
@ -705,15 +705,15 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig
return m; return m;
} }
private Map<String, Object> buildEnumModelWrapper(String enumName, String values) { private ModelMap buildEnumModelWrapper(String enumName, String values) {
Map<String, Object> m = new HashMap<>(); ModelMap m = new ModelMap();
m.put("importPath", packageName + "." + enumName); m.put("importPath", packageName + "." + enumName);
m.put("model", buildEnumModel(enumName, values)); m.setModel(buildEnumModel(enumName, values));
return m; return m;
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -651,7 +652,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) { if (operations != null) {

View File

@ -21,6 +21,7 @@ import org.openapitools.codegen.CodegenOperation;
import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
@ -233,7 +234,7 @@ public class PhpLaravelServerCodegen extends AbstractPhpCodegen {
// override with any special post-processing // override with any special post-processing
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@ -21,6 +21,7 @@ import org.openapitools.codegen.CodegenOperation;
import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
@ -165,7 +166,7 @@ public class PhpLumenServerCodegen extends AbstractPhpCodegen {
// override with any special post-processing // override with any special post-processing
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@ -30,6 +30,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.responses.ApiResponses; import io.swagger.v3.oas.models.responses.ApiResponses;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -415,7 +416,7 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
@ -259,7 +260,7 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {

View File

@ -19,7 +19,7 @@ package org.openapitools.codegen.languages;
import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.text.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenOperation;
@ -30,6 +30,7 @@ import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -253,7 +254,7 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
addUserClassnameToOperations(operations); addUserClassnameToOperations(operations);

View File

@ -20,12 +20,13 @@ package org.openapitools.codegen.languages;
import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.text.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -156,7 +157,7 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
addUserClassnameToOperations(operations); addUserClassnameToOperations(operations);

View File

@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -389,7 +391,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -447,12 +449,11 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs); objs = super.postProcessModels(objs);
ArrayList<Object> modelsArray = (ArrayList<Object>) objs.get("models"); ModelMap models = objs.getModels().get(0);
Map<String, Object> models = (Map<String, Object>) modelsArray.get(0); CodegenModel model = models.getModel();
CodegenModel model = (CodegenModel) models.get("model");
// Simplify model var type // Simplify model var type
for (CodegenProperty var : model.vars) { for (CodegenProperty var : model.vars) {

View File

@ -19,6 +19,7 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -58,11 +59,9 @@ public class PlantumlDocumentationCodegen extends DefaultCodegen implements Code
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) { public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
Object models = objs.get("models"); List<ModelMap> models = (List<ModelMap>) objs.get("models");
List<Object> modelsList = (List<Object>) models; List<CodegenModel> codegenModelList = models.stream()
List<CodegenModel> codegenModelList = modelsList.stream() .map(ModelMap::getModel)
.filter(listItem -> listItem instanceof HashMap<?, ?>)
.map(listItem -> (CodegenModel) ((HashMap<?, ?>) listItem).get("model"))
.collect(Collectors.toList()); .collect(Collectors.toList());
List<CodegenModel> inlineAllOfCodegenModelList = codegenModelList.stream() List<CodegenModel> inlineAllOfCodegenModelList = codegenModelList.stream()

View File

@ -19,12 +19,14 @@ package org.openapitools.codegen.languages;
import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.text.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -1010,14 +1012,13 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<>(); HashMap<String, CodegenModel> modelMaps = new HashMap<>();
HashMap<String, Integer> processedModelMaps = new HashMap<>(); HashMap<String, Integer> processedModelMaps = new HashMap<>();
for (Object o : allModels) { for (ModelMap modelMap : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o; CodegenModel m = modelMap.getModel();
CodegenModel m = (CodegenModel) h.get("model");
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }
@ -1086,15 +1087,14 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
List<Object> models = (List<Object>) objs.get("models"); List<ModelMap> models = objs.getModels();
// add x-index to properties // add x-index to properties
ProcessUtils.addIndexToProperties(models); ProcessUtils.addIndexToProperties(models);
// add x-data-type to store powershell type // add x-data-type to store powershell type
for (Object _mo : models) { for (ModelMap _model : models) {
Map<String, Object> _model = (Map<String, Object>) _mo; CodegenModel model = _model.getModel();
CodegenModel model = (CodegenModel) _model.get("model");
CodegenProperty lastWritableProperty = null; CodegenProperty lastWritableProperty = null;
for (CodegenProperty cp : model.allVars) { for (CodegenProperty cp : model.allVars) {

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -274,13 +276,11 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
objs = postProcessModelsEnum(objs); objs = postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) { for (ModelMap mo : objs.getModels()) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
if(cm.isEnum) { if(cm.isEnum) {
Map<String, Object> allowableValues = cm.getAllowableValues(); Map<String, Object> allowableValues = cm.getAllowableValues();
@ -344,7 +344,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
super.postProcessAllModels(objs); super.postProcessAllModels(objs);
Map<String, CodegenModel> allModels = this.getAllModels(objs); Map<String, CodegenModel> allModels = this.getAllModels(objs);
@ -368,22 +368,22 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
return objs; return objs;
} }
public void addImport(Map<String, Object> objs, CodegenModel cm, String importValue) { public void addImport(Map<String, ModelsMap> objs, CodegenModel cm, String importValue) {
String modelFileName = this.toModelFilename(importValue); String modelFileName = this.toModelFilename(importValue);
boolean skipImport = isImportAlreadyPresentInModel(objs, cm, modelFileName); boolean skipImport = isImportAlreadyPresentInModel(objs, cm, modelFileName);
if (!skipImport) { if (!skipImport) {
this.addImport(cm, importValue); this.addImport(cm, importValue);
Map<String, Object> importItem = new HashMap<>(); Map<String, String> importItem = new HashMap<>();
importItem.put(IMPORT, modelFileName); importItem.put(IMPORT, modelFileName);
((List<Map<String, Object>>) ((Map<String, Object>) objs.get(cm.getName())).get(IMPORTS)).add(importItem); objs.get(cm.getName()).getImports().add(importItem);
} }
} }
private boolean isImportAlreadyPresentInModel(Map<String, Object> objs, CodegenModel cm, String importValue) { private boolean isImportAlreadyPresentInModel(Map<String, ModelsMap> objs, CodegenModel cm, String importValue) {
boolean skipImport = false; boolean skipImport = false;
List<Map<String, Object>> cmImports = ((List<Map<String, Object>>) ((Map<String, Object>) objs.get(cm.getName())).get(IMPORTS)); List<Map<String, String>> cmImports = objs.get(cm.getName()).getImports();
for (Map<String, Object> cmImportItem : cmImports) { for (Map<String, String> cmImportItem : cmImports) {
for (Entry<String, Object> cmImportItemEntry : cmImportItem.entrySet()) { for (Entry<String, String> cmImportItemEntry : cmImportItem.entrySet()) {
if (importValue.equals(cmImportItemEntry.getValue())) { if (importValue.equals(cmImportItemEntry.getValue())) {
skipImport = true; skipImport = true;
break; break;
@ -541,7 +541,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {

View File

@ -29,6 +29,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.CodegenDiscriminator.MappedModel; import org.openapitools.codegen.CodegenDiscriminator.MappedModel;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
@ -355,7 +357,7 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen {
@Override @Override
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// fix the imports that each model has, add the module reference to the model // fix the imports that each model has, add the module reference to the model
// loops through imports and converts them all // loops through imports and converts them all
// from 'Pet' to 'from petstore_api.model.pet import Pet' // from 'Pet' to 'from petstore_api.model.pet import Pet'
@ -388,7 +390,7 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen {
* @return the updated objs * @return the updated objs
*/ */
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
super.postProcessAllModels(objs); super.postProcessAllModels(objs);
List<String> modelsToRemove = new ArrayList<>(); List<String> modelsToRemove = new ArrayList<>();
@ -400,11 +402,10 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen {
if (unaliasedSchema.get$ref() == null) { if (unaliasedSchema.get$ref() == null) {
modelsToRemove.add(modelName); modelsToRemove.add(modelName);
} else { } else {
HashMap<String, Object> objModel = (HashMap<String, Object>) objs.get(modelName); ModelsMap objModel = objs.get(modelName);
if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true) if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true)
List<Map<String, Object>> models = (List<Map<String, Object>>) objModel.get("models"); for (ModelMap model : objModel.getModels()) {
for (Map<String, Object> model : models) { CodegenModel cm = model.getModel();
CodegenModel cm = (CodegenModel) model.get("model");
String[] importModelNames = cm.imports.toArray(new String[0]); String[] importModelNames = cm.imports.toArray(new String[0]);
cm.imports.clear(); cm.imports.clear();
for (String importModelName : importModelNames) { for (String importModelName : importModelNames) {

View File

@ -21,8 +21,11 @@ import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.servers.Server;
import io.swagger.v3.oas.models.tags.Tag; import io.swagger.v3.oas.models.tags.Tag;
import org.openapitools.codegen.api.TemplatePathLocator; import org.openapitools.codegen.api.TemplatePathLocator;
import org.openapitools.codegen.ignore.CodegenIgnoreProcessor; import org.openapitools.codegen.ignore.CodegenIgnoreProcessor;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.templating.*; import org.openapitools.codegen.templating.*;
import io.swagger.v3.core.util.Json; import io.swagger.v3.core.util.Json;
import io.swagger.v3.oas.models.media.*; import io.swagger.v3.oas.models.media.*;
@ -667,7 +670,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
@Override @Override
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// fix the imports that each model has, add the module reference to the model // fix the imports that each model has, add the module reference to the model
// loops through imports and converts them all // loops through imports and converts them all
// from 'Pet' to 'from petstore_api.model.pet import Pet' // from 'Pet' to 'from petstore_api.model.pet import Pet'
@ -702,7 +705,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
* @return the updated objs * @return the updated objs
*/ */
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
super.postProcessAllModels(objs); super.postProcessAllModels(objs);
Map<String, Schema> allDefinitions = ModelUtils.getSchemas(this.openAPI); Map<String, Schema> allDefinitions = ModelUtils.getSchemas(this.openAPI);
@ -713,11 +716,10 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
if (unaliasedSchema.get$ref() == null) { if (unaliasedSchema.get$ref() == null) {
continue; continue;
} else { } else {
HashMap<String, Object> objModel = (HashMap<String, Object>) objs.get(modelName); ModelsMap objModel = objs.get(modelName);
if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true) if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true)
List<Map<String, Object>> models = (List<Map<String, Object>>) objModel.get("models"); for (ModelMap model : objModel.getModels()) {
for (Map<String, Object> model : models) { CodegenModel cm = model.getModel();
CodegenModel cm = (CodegenModel) model.get("model");
String[] importModelNames = cm.imports.toArray(new String[0]); String[] importModelNames = cm.imports.toArray(new String[0]);
cm.imports.clear(); cm.imports.clear();
for (String importModelName : importModelNames) { for (String importModelName : importModelNames) {
@ -2013,7 +2015,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }

View File

@ -28,7 +28,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -187,7 +188,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
// Set will make sure that no duplicated items are used. // Set will make sure that no duplicated items are used.
Set<String> securityImports = new HashSet<>(); Set<String> securityImports = new HashSet<>();
@ -235,13 +236,11 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
Map<String, Object> result = super.postProcessAllModels(objs); Map<String, ModelsMap> result = super.postProcessAllModels(objs);
for (Map.Entry<String, Object> entry : result.entrySet()) { for (Map.Entry<String, ModelsMap> entry : result.entrySet()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue(); for (ModelMap mo : entry.getValue().getModels()) {
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models"); CodegenModel cm = mo.getModel();
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
// Add additional filename information for imports // Add additional filename information for imports
mo.put("pyImports", toPyImports(cm, cm.imports)); mo.put("pyImports", toPyImports(cm, cm.imports));
} }

View File

@ -20,6 +20,7 @@ package org.openapitools.codegen.languages;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -292,7 +293,7 @@ public class PythonLegacyClientCodegen extends AbstractPythonCodegen implements
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }

View File

@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.parameters.Parameter;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -412,9 +414,9 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid error // remove model imports to avoid error
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
final String prefix = modelPackage(); final String prefix = modelPackage();
Iterator<Map<String, String>> iterator = imports.iterator(); Iterator<Map<String, String>> iterator = imports.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@ -424,7 +426,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
// recursively add import for mapping one type to multiple imports // recursively add import for mapping one type to multiple imports
List<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null) if (recursiveImports == null)
return objs; return objs;
@ -687,13 +689,12 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>(); HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>();
for (Object o : allModels) { for (ModelMap modelMap : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o; CodegenModel m = modelMap.getModel();
CodegenModel m = (CodegenModel) h.get("model");
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }

View File

@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -486,7 +488,7 @@ public class RubyClientCodegen extends AbstractRubyCodegen {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }
@ -571,15 +573,14 @@ public class RubyClientCodegen extends AbstractRubyCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>(); HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>();
HashMap<String, Integer> processedModelMaps = new HashMap<String, Integer>(); HashMap<String, Integer> processedModelMaps = new HashMap<String, Integer>();
for (Object o : allModels) { for (ModelMap modelMap : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o; CodegenModel m = modelMap.getModel();
CodegenModel m = (CodegenModel) h.get("model");
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }

View File

@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.parser.util.SchemaTypeUtil; import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.StringUtils; import org.openapitools.codegen.utils.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -197,31 +199,29 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models // process enum in models
return postProcessModelsEnum(objs); return postProcessModelsEnum(objs);
} }
@SuppressWarnings({"static-method", "unchecked"}) @SuppressWarnings("static-method")
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
// Index all CodegenModels by model name. // Index all CodegenModels by model name.
Map<String, CodegenModel> allModels = new HashMap<>(); Map<String, CodegenModel> allModels = new HashMap<>();
for (Map.Entry<String, Object> entry : objs.entrySet()) { for (Map.Entry<String, ModelsMap> entry : objs.entrySet()) {
String modelName = toModelName(entry.getKey()); String modelName = toModelName(entry.getKey());
Map<String, Object> inner = (Map<String, Object>) entry.getValue(); List<ModelMap> models = entry.getValue().getModels();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models"); for (ModelMap mo : models) {
for (Map<String, Object> mo : models) { CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
allModels.put(modelName, cm); allModels.put(modelName, cm);
} }
} }
for (Map.Entry<String, Object> entry : objs.entrySet()) { for (Map.Entry<String, ModelsMap> entry : objs.entrySet()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue(); List<ModelMap> models = entry.getValue().getModels();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models"); for (ModelMap mo : models) {
for (Map<String, Object> mo : models) { CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
if (cm.discriminator != null) { if (cm.discriminator != null) {
List<Object> discriminatorVars = new ArrayList<>(); List<Object> discriminatorVars = new ArrayList<>();
for (CodegenDiscriminator.MappedModel mappedModel : cm.discriminator.getMappedModels()) { for (CodegenDiscriminator.MappedModel mappedModel : cm.discriminator.getMappedModels()) {
@ -525,7 +525,7 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@ -33,6 +33,8 @@ import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -966,7 +968,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
@ -977,7 +979,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
return objs; return objs;
} }
private void postProcessOperationWithModels(CodegenOperation op, List<Object> allModels) { private void postProcessOperationWithModels(CodegenOperation op, List<ModelMap> allModels) {
boolean consumesPlainText = false; boolean consumesPlainText = false;
boolean consumesXml = false; boolean consumesXml = false;
@ -1263,23 +1265,20 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
Map<String, Object> newObjs = super.postProcessAllModels(objs); Map<String, ModelsMap> newObjs = super.postProcessAllModels(objs);
//Index all CodegenModels by model name. //Index all CodegenModels by model name.
HashMap<String, CodegenModel> allModels = new HashMap<String, CodegenModel>(); HashMap<String, CodegenModel> allModels = new HashMap<>();
for (Entry<String, Object> entry : objs.entrySet()) { for (Entry<String, ModelsMap> entry : objs.entrySet()) {
String modelName = toModelName(entry.getKey()); String modelName = toModelName(entry.getKey());
Map<String, Object> inner = (Map<String, Object>) entry.getValue(); List<ModelMap> models = entry.getValue().getModels();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models"); for (ModelMap mo : models) {
for (Map<String, Object> mo : models) { allModels.put(modelName, mo.getModel());
CodegenModel cm = (CodegenModel) mo.get("model");
allModels.put(modelName, cm);
} }
} }
for (Entry<String, CodegenModel> entry : allModels.entrySet()) { for (Entry<String, CodegenModel> entry : allModels.entrySet()) {
String modelName = entry.getKey();
CodegenModel model = entry.getValue(); CodegenModel model = entry.getValue();
if (uuidType.equals(model.dataType)) { if (uuidType.equals(model.dataType)) {
@ -1558,12 +1557,9 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public ModelsMap postProcessModels(ModelsMap objs) {
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
CodegenModel cm = mo.getModel();
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
LOGGER.trace("Post processing model: {}", cm); LOGGER.trace("Post processing model: {}", cm);

View File

@ -25,6 +25,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -211,7 +212,7 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
if (registerNonStandardStatusCodes) { if (registerNonStandardStatusCodes) {
try { try {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@ -25,6 +25,7 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -281,7 +282,7 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> baseObjs = super.postProcessOperationsWithModels(objs, allModels); Map<String, Object> baseObjs = super.postProcessOperationsWithModels(objs, allModels);
pathMatcherPatternsPostProcessor(baseObjs); pathMatcherPatternsPostProcessor(baseObjs);
marshallingPostProcessor(baseObjs); marshallingPostProcessor(baseObjs);

View File

@ -21,6 +21,7 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -230,7 +231,7 @@ public class ScalaFinchServerCodegen extends DefaultCodegen implements CodegenCo
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {

View File

@ -20,6 +20,8 @@ package org.openapitools.codegen.languages;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -163,12 +165,10 @@ public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements Cod
} }
@Override @Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) { public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs); objs = super.postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models"); for (ModelMap mo : objs.getModels()) {
for (Object _mo : models) { CodegenModel cm = mo.getModel();
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
for (CodegenProperty var : cm.vars) { for (CodegenProperty var : cm.vars) {
if (var.isEnum) { if (var.isEnum) {
@ -186,9 +186,8 @@ public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements Cod
if (additionalProperties.containsKey("gson")) { if (additionalProperties.containsKey("gson")) {
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
for (Object _mo : models) { for (ModelMap mo : objs.getModels()) {
Map<String, Object> mo = (Map<String, Object>) _mo; CodegenModel cm = mo.getModel();
CodegenModel cm = (CodegenModel) mo.get("model");
// for enum model // for enum model
if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) {
cm.imports.add(importMapping.get("SerializedName")); cm.imports.add(importMapping.get("SerializedName"));
@ -203,7 +202,7 @@ public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements Cod
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
ArrayList<CodegenOperation> oplist = (ArrayList<CodegenOperation>) operations.get("operation"); ArrayList<CodegenOperation> oplist = (ArrayList<CodegenOperation>) operations.get("operation");

Some files were not shown because too many files have changed in this diff Show More