diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java index c1e4d2dd495..29247f4256d 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java @@ -37,7 +37,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; 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; @SuppressWarnings({"unused","java:S106", "java:S1192"}) diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java index d0517d94415..726aaf300d6 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java @@ -24,7 +24,7 @@ import io.swagger.parser.OpenAPIParser; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.parser.core.models.ParseOptions; 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.validations.oas.OpenApiEvaluator; import org.openapitools.codegen.validations.oas.RuleConfiguration; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java index 995ceb09675..1de4db324a6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java @@ -27,6 +27,8 @@ import io.swagger.v3.oas.models.servers.ServerVariable; import org.openapitools.codegen.api.TemplatingEngineAdapter; import org.openapitools.codegen.meta.FeatureSet; import org.openapitools.codegen.meta.GeneratorMetadata; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import java.io.File; import java.util.List; @@ -184,15 +186,15 @@ public interface CodegenConfig { void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map> operations); - Map updateAllModels(Map objs); + Map updateAllModels(Map objs); void postProcess(); - Map postProcessAllModels(Map objs); + Map postProcessAllModels(Map objs); - Map postProcessModels(Map objs); + ModelsMap postProcessModels(ModelsMap objs); - Map postProcessOperationsWithModels(Map objs, List allModels); + Map postProcessOperationsWithModels(Map objs, List allModels); Map postProcessSupportingFileData(Map objs); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index a7711fde695..32bd7b6207c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -27,7 +27,7 @@ import com.samskivert.mustache.Mustache.Compiler; import com.samskivert.mustache.Mustache.Lambda; 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.tuple.Pair; 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.Stability; 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.templating.MustacheEngineAdapter; 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 - @SuppressWarnings({"static-method", "unchecked"}) - public Map postProcessAllModels(Map objs) { + @SuppressWarnings("static-method") + public Map postProcessAllModels(Map objs) { if (this.useOneOfInterfaces) { // First, add newly created oneOf interfaces for (CodegenModel cm : addOneOfInterfaces) { - Map modelValue = new HashMap<>(additionalProperties()); - modelValue.put("model", cm); + ModelMap modelMapValue = new ModelMap(additionalProperties()); + modelMapValue.setModel(cm); List> importsValue = new ArrayList<>(); - Map objsValue = new HashMap<>(); - objsValue.put("models", Collections.singletonList(modelValue)); + ModelsMap objsValue = new ModelsMap(); + objsValue.setModels(Collections.singletonList(modelMapValue)); objsValue.put("package", modelPackage()); - objsValue.put("imports", importsValue); + objsValue.setImports(importsValue); objsValue.put("classname", cm.classname); objsValue.putAll(additionalProperties); 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 // (see docstring of that class to find out what information is gathered and why) Map additionalDataMap = new HashMap<>(); - for (Map.Entry modelsEntry : objs.entrySet()) { - Map modelsAttrs = (Map) modelsEntry.getValue(); - List models = (List) modelsAttrs.get("models"); - List> modelsImports = (List>) modelsAttrs.getOrDefault("imports", new ArrayList>()); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelsMap modelsAttrs : objs.values()) { + List> modelsImports = modelsAttrs.getImportsOrEmpty(); + for (ModelMap mo : modelsAttrs.getModels()) { + CodegenModel cm = mo.getModel(); if (cm.oneOf.size() > 0) { cm.vendorExtensions.put("x-is-one-of-interface", true); 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 - for (Map.Entry modelsEntry : objs.entrySet()) { - Map modelsAttrs = (Map) modelsEntry.getValue(); - List models = (List) modelsAttrs.get("models"); - List> imports = (List>) modelsAttrs.get("imports"); - for (Object _implmo : models) { - Map implmo = (Map) _implmo; - CodegenModel implcm = (CodegenModel) implmo.get("model"); + for (Map.Entry modelsEntry : objs.entrySet()) { + ModelsMap modelsAttrs = modelsEntry.getValue(); + List> imports = modelsAttrs.getImports(); + for (ModelMap implmo : modelsAttrs.getModels()) { + CodegenModel implcm = implmo.getModel(); String modelName = toModelName(implcm.name); if (additionalDataMap.containsKey(modelName)) { additionalDataMap.get(modelName).addToImplementor(this, implcm, imports, addOneOfInterfaceImports); @@ -511,14 +508,13 @@ public class DefaultCodegen implements CodegenConfig { * @param objs Map of models * @return map of all models indexed by names */ - public Map getAllModels(Map objs) { + public Map getAllModels(Map objs) { Map allModels = new HashMap<>(); - for (Entry entry : objs.entrySet()) { + for (Entry entry : objs.entrySet()) { String modelName = toModelName(entry.getKey()); - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + List models = entry.getValue().getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); allModels.put(modelName, cm); } } @@ -532,7 +528,7 @@ public class DefaultCodegen implements CodegenConfig { * @return maps of models with various updates */ @Override - public Map updateAllModels(Map objs) { + public Map updateAllModels(Map objs) { Map allModels = getAllModels(objs); // 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 - for (Map.Entry entry : objs.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelsMap entry : objs.values()) { + for (ModelMap mo : entry.getModels()) { + CodegenModel cm = mo.getModel(); removeSelfReferenceImports(cm); } } @@ -660,7 +654,7 @@ public class DefaultCodegen implements CodegenConfig { // override with any special post-processing @Override @SuppressWarnings("static-method") - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { return objs; } @@ -670,11 +664,9 @@ public class DefaultCodegen implements CodegenConfig { * @param objs Map of models * @return maps of models with better enum support */ - public Map postProcessModelsEnum(Map objs) { - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + public ModelsMap postProcessModelsEnum(ModelsMap objs) { + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model 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 @SuppressWarnings("static-method") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index b316b55ef9d..fbccba22f1a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -44,6 +44,8 @@ import org.openapitools.codegen.languages.PythonClientCodegen; import org.openapitools.codegen.languages.PythonExperimentalClientCodegen; import org.openapitools.codegen.meta.GeneratorMetadata; 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.templating.CommonTemplateContentLocator; import org.openapitools.codegen.templating.GeneratorTemplateContentLocator; @@ -395,8 +397,7 @@ public class DefaultGenerator implements Generator { } } - @SuppressWarnings("unchecked") - void generateModels(List files, List allModels, List unusedModels) { + void generateModels(List files, List allModels, List unusedModels) { if (!generateModels) { // TODO: Process these anyway and add to dryRun info LOGGER.info("Skipping generation of models."); @@ -428,7 +429,7 @@ public class DefaultGenerator implements Generator { } // store all processed models - Map allProcessedModels = new TreeMap<>((o1, o2) -> ObjectUtils.compare(config.toModelName(o1), config.toModelName(o2))); + Map allProcessedModels = new TreeMap<>((o1, o2) -> ObjectUtils.compare(config.toModelName(o1), config.toModelName(o2))); Boolean skipFormModel = GlobalSettings.getProperty(CodegenConstants.SKIP_FORM_MODEL) != null ? Boolean.valueOf(GlobalSettings.getProperty(CodegenConstants.SKIP_FORM_MODEL)) : @@ -484,7 +485,7 @@ public class DefaultGenerator implements Generator { Map schemaMap = new HashMap<>(); schemaMap.put(name, schema); - Map models = processModels(config, schemaMap); + ModelsMap models = processModels(config, schemaMap); models.put("classname", config.toModelName(name)); models.putAll(config.additionalProperties()); allProcessedModels.put(name, models); @@ -501,15 +502,15 @@ public class DefaultGenerator implements Generator { // generate files based on processed models for (String modelName : allProcessedModels.keySet()) { - Map models = (Map) allProcessedModels.get(modelName); + ModelsMap models = allProcessedModels.get(modelName); models.put("modelPackage", config.modelPackage()); try { // TODO revise below as we've already performed unaliasing so that the isAlias check may be removed - List modelList = (List) models.get("models"); + List modelList = models.getModels(); if (modelList != null && !modelList.isEmpty()) { - Map modelTemplate = (Map) modelList.get(0); - if (modelTemplate != null && modelTemplate.containsKey("model")) { - CodegenModel m = (CodegenModel) modelTemplate.get("model"); + ModelMap modelTemplate = modelList.get(0); + if (modelTemplate != null && modelTemplate.getModel() != null) { + CodegenModel m = modelTemplate.getModel(); if (m.isAlias && !((config instanceof PythonClientCodegen) || (config instanceof PythonExperimentalClientCodegen))) { // alias to number, string, enum, etc, which should not be generated as model // for PythonClientCodegen, all aliases are generated as models @@ -540,7 +541,7 @@ public class DefaultGenerator implements Generator { } @SuppressWarnings("unchecked") - void generateApis(List files, List allOperations, List allModels) { + void generateApis(List files, List allOperations, List allModels) { if (!generateApis) { // TODO: Process these anyway and present info via dryRun? LOGGER.info("Skipping generation of APIs."); @@ -746,7 +747,7 @@ public class DefaultGenerator implements Generator { } @SuppressWarnings("unchecked") - Map buildSupportFileBundle(List allOperations, List allModels) { + Map buildSupportFileBundle(List allOperations, List allModels) { Map bundle = new HashMap<>(config.additionalProperties()); bundle.put("apiPackage", config.apiPackage()); @@ -787,8 +788,7 @@ public class DefaultGenerator implements Generator { } for (int i = 0; i < allModels.size() - 1; i++) { - HashMap cm = (HashMap) allModels.get(i); - CodegenModel m = cm.get("model"); + CodegenModel m = allModels.get(i).getModel(); m.hasMoreModels = true; } @@ -884,7 +884,7 @@ public class DefaultGenerator implements Generator { List files = new ArrayList<>(); // models List filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); - List allModels = new ArrayList<>(); + List allModels = new ArrayList<>(); generateModels(files, allModels, filteredSchemas); // apis List allOperations = new ArrayList<>(); @@ -1170,8 +1170,7 @@ public class DefaultGenerator implements Generator { return parameter.getName() + ":" + parameter.getIn(); } - @SuppressWarnings("unchecked") - private Map processOperations(CodegenConfig config, String tag, List ops, List allModels) { + private Map processOperations(CodegenConfig config, String tag, List ops, List allModels) { Map operations = new HashMap<>(); Map objs = new HashMap<>(); objs.put("classname", config.toApiName(tag)); @@ -1257,10 +1256,10 @@ public class DefaultGenerator implements Generator { return result; } - private Map processModels(CodegenConfig config, Map definitions) { - Map objs = new HashMap<>(); + private ModelsMap processModels(CodegenConfig config, Map definitions) { + ModelsMap objs = new ModelsMap(); objs.put("package", config.modelPackage()); - List models = new ArrayList<>(); + List modelMaps = new ArrayList<>(); Set allImports = new LinkedHashSet<>(); for (Map.Entry definitionsEntry : definitions.entrySet()) { String key = definitionsEntry.getKey(); @@ -1268,16 +1267,16 @@ public class DefaultGenerator implements Generator { if (schema == null) throw new RuntimeException("schema cannot be null in processModels"); CodegenModel cm = config.fromModel(key, schema); - Map mo = new HashMap<>(); - mo.put("model", cm); + ModelMap mo = new ModelMap(); + mo.setModel(cm); mo.put("importPath", config.toModelImport(cm.classname)); - models.add(mo); + modelMaps.add(mo); cm.removeSelfReferenceImport(); allImports.addAll(cm.imports); } - objs.put("models", models); + objs.setModels(modelMaps); Set importSet = new ConcurrentSkipListSet<>(); for (String nextImport : allImports) { String mapping = config.importMapping().get(nextImport); @@ -1299,7 +1298,7 @@ public class DefaultGenerator implements Generator { item.put("import", s); imports.add(item); } - objs.put("imports", imports); + objs.setImports(imports); config.postProcessModels(objs); return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java index 9106d3bd02c..403c39edf22 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java @@ -34,6 +34,8 @@ import org.openapitools.codegen.meta.features.GlobalFeature; import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.meta.features.SecurityFeature; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,7 +52,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg protected String packageName = "defaultPackage"; protected String projectName = "defaultProject"; - protected List> orderedModels; + protected List orderedModels; protected final Map> modelDepends; protected final Map nullableTypeMapping; protected final Map operationsScopes; @@ -605,7 +607,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); @@ -676,43 +678,39 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // Collect the model dependencies. - List> models = (List>) objs.get("models"); - for (Map model : models) { - Object v = model.get("model"); - if (v instanceof CodegenModel) { - CodegenModel m = (CodegenModel) v; - List d = new ArrayList<>(); - for (CodegenProperty p : m.vars) { - boolean isModel = false; - CodegenProperty item = p; - if (p.isContainer) { - item = p.items; - } - if (item != null && !item.isString && !item.isPrimitiveType && !item.isContainer && !item.isInteger) { - if (!d.contains(item.dataType)) { - // LOGGER.info("Model " + m.name + " uses " + p.datatype); - d.add(item.dataType); - } - isModel = true; - } - p.vendorExtensions.put("x-is-model-type", isModel); - p.vendorExtensions.put("x-is-stream-type", isStreamType(p)); - Boolean required = p.getRequired(); - - // Convert optional members to use the Nullable_ type. - if (!Boolean.TRUE.equals(required) && nullableTypeMapping.containsKey(p.dataType)) { - p.dataType = nullableTypeMapping.get(p.dataType); - p.vendorExtensions.put("x-is-required", false); - } else { - p.vendorExtensions.put("x-is-required", true); - } + for (ModelMap model : objs.getModels()) { + CodegenModel m = model.getModel(); + List d = new ArrayList<>(); + for (CodegenProperty p : m.vars) { + boolean isModel = false; + CodegenProperty item = p; + if (p.isContainer) { + item = p.items; + } + if (item != null && !item.isString && !item.isPrimitiveType && !item.isContainer && !item.isInteger) { + if (!d.contains(item.dataType)) { + // LOGGER.info("Model " + m.name + " uses " + p.datatype); + d.add(item.dataType); + } + isModel = true; + } + p.vendorExtensions.put("x-is-model-type", isModel); + p.vendorExtensions.put("x-is-stream-type", isStreamType(p)); + Boolean required = p.getRequired(); + + // Convert optional members to use the Nullable_ type. + if (!Boolean.TRUE.equals(required) && nullableTypeMapping.containsKey(p.dataType)) { + p.dataType = nullableTypeMapping.get(p.dataType); + 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: @@ -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 // put the independentModel at the end of revisedOrderedModels, and remove it from orderedModels // - List> revisedOrderedModels = new ArrayList<>(); + List revisedOrderedModels = new ArrayList<>(); List collectedModelNames = new ArrayList<>(); int sizeOrderedModels = orderedModels.size(); for (int i = 0; i < sizeOrderedModels; i++) { - Map independentModel = null; + ModelMap independentModel = null; String independentModelName = null; - for (Map model : orderedModels) { + for (ModelMap model : orderedModels) { // 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; for (String dependency : modelDepends.get(modelName)) { if (!collectedModelNames.contains(dependency)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java index 278be7eada5..8f96a4bd34e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java @@ -26,6 +26,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.servers.Server; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -476,7 +477,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { return postProcessModelsEnum(objs); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index b346ab2fe1d..f8abc0ab79f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -20,12 +20,13 @@ package org.openapitools.codegen.languages; import com.google.common.collect.ImmutableMap; 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.Schema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; 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.utils.ModelUtils; import org.slf4j.Logger; @@ -413,11 +414,9 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + public ModelsMap postProcessModels(ModelsMap objs) { + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); for (CodegenProperty var : cm.vars) { // check to see if model name is same as the property name // 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. */ @Override - public Map postProcessAllModels(Map objs) { - final Map processed = super.postProcessAllModels(objs); + public Map postProcessAllModels(Map objs) { + final Map processed = super.postProcessAllModels(objs); postProcessEnumRefs(processed); updateValueTypeProperty(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 */ - @SuppressWarnings("unchecked") - private void postProcessEnumRefs(final Map models) { + private void postProcessEnumRefs(final Map models) { Map enumRefs = new HashMap<>(); - for (Map.Entry entry : models.entrySet()) { + for (Map.Entry entry : models.entrySet()) { CodegenModel model = ModelUtils.getModelByName(entry.getKey(), models); if (model.isEnum) { enumRefs.put(entry.getKey(), model); } } - for (Map.Entry entry : models.entrySet()) { - String openAPIName = entry.getKey(); + for (String openAPIName : models.keySet()) { CodegenModel model = ModelUtils.getModelByName(openAPIName, models); if (model != null) { for (CodegenProperty var : model.allVars) { @@ -636,9 +633,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co * * @param models list of all models */ - protected void updateValueTypeProperty(Map models) { - for (Map.Entry entry : models.entrySet()) { - String openAPIName = entry.getKey(); + protected void updateValueTypeProperty(Map models) { + for (String openAPIName : models.keySet()) { CodegenModel model = ModelUtils.getModelByName(openAPIName, models); if (model != null) { for (CodegenProperty var : model.vars) { @@ -653,9 +649,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co * * @param models list of all models */ - protected void updateNullableTypeProperty(Map models) { - for (Map.Entry entry : models.entrySet()) { - String openAPIName = entry.getKey(); + protected void updateNullableTypeProperty(Map models) { + for (String openAPIName : models.keySet()) { CodegenModel model = ModelUtils.getModelByName(openAPIName, models); if (model != null) { for (CodegenProperty var : model.vars) { @@ -668,7 +663,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); if (objs != null) { Map operations = (Map) objs.get("operations"); @@ -732,8 +727,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co if (!isSupportNullable()) { for (CodegenParameter parameter : operation.allParams) { CodegenModel model = null; - for (Object modelHashMap : allModels) { - CodegenModel codegenModel = ((HashMap) modelHashMap).get("model"); + for (ModelMap modelHashMap : allModels) { + CodegenModel codegenModel = modelHashMap.getModel(); if (codegenModel.getClassname().equals(parameter.dataType)) { model = codegenModel; break; @@ -772,11 +767,11 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co // default noop } - private void updateCodegenParametersEnum(List parameters, List allModels) { + private void updateCodegenParametersEnum(List parameters, List allModels) { for (CodegenParameter parameter : parameters) { CodegenModel model = null; - for (Object modelHashMap : allModels) { - CodegenModel codegenModel = ((HashMap) modelHashMap).get("model"); + for (ModelMap modelHashMap : allModels) { + CodegenModel codegenModel = modelHashMap.getModel(); if (codegenModel.getClassname().equals(parameter.dataType)) { model = codegenModel; break; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java index a82430bb4a4..a05999bd7ff 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java @@ -28,6 +28,8 @@ import io.swagger.v3.oas.models.servers.ServerVariable; import org.openapitools.codegen.*; import org.apache.commons.io.FilenameUtils; 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.utils.ModelUtils; import org.openapitools.codegen.utils.URLPathUtils; @@ -379,12 +381,9 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg } @Override - @SuppressWarnings("unchecked") - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + public ModelsMap postProcessModels(ModelsMap objs) { + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // cannot handle inheritance from maps and arrays in C++ if((cm.isArray || cm.isMap ) && (cm.parentModel == null)) { cm.parent = null; @@ -394,17 +393,17 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg } @Override - public Map postProcessAllModels(Map objs){ - Map models = super.postProcessAllModels(objs); - for (final Entry model : models.entrySet()) { - CodegenModel mo = ModelUtils.getModelByName(model.getKey(), models); + public Map postProcessAllModels(Map objs){ + Map models = super.postProcessAllModels(objs); + for (final String key : models.keySet()) { + CodegenModel mo = ModelUtils.getModelByName(key, models); addForwardDeclarations(mo, models); } return models; } - private void addForwardDeclarations(CodegenModel parentModel, Map objs) { - List forwardDeclarations = new ArrayList(); + private void addForwardDeclarations(CodegenModel parentModel, Map objs) { + List forwardDeclarations = new ArrayList<>(); if(!parentModel.hasVars) { return; } @@ -413,8 +412,8 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg continue; } String childPropertyType = property.isContainer? property.mostInnerItems.baseType : property.baseType; - for(final Entry mo : objs.entrySet()) { - CodegenModel childModel = ModelUtils.getModelByName(mo.getKey(), objs); + for(final String key : objs.keySet()) { + CodegenModel childModel = ModelUtils.getModelByName(key, objs); if( !childPropertyType.equals(childModel.classname) || childPropertyType.equals(parentModel.classname) || !childModel.hasVars ){ continue; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java index 7f509f60e5d..4cb893adc64 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java @@ -1,6 +1,5 @@ package org.openapitools.codegen.languages; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import io.swagger.v3.oas.models.Operation; 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.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -500,7 +501,7 @@ public abstract class AbstractDartCodegen extends DefaultCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { return postProcessModelsEnum(objs); } @@ -559,7 +560,7 @@ public abstract class AbstractDartCodegen extends DefaultCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); if (operations != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java index 26069c778bb..f4092be9441 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java @@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -360,7 +362,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") @@ -418,7 +420,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // remove model imports to avoid error // List> imports = (List>) objs.get("imports"); // final String prefix = modelPackage(); @@ -451,14 +453,14 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessAllModels(final Map models) { + public Map postProcessAllModels(final Map models) { - final Map processed = super.postProcessAllModels(models); + final Map processed = super.postProcessAllModels(models); postProcessParentModels(models); return processed; } - private void postProcessParentModels(final Map models) { + private void postProcessParentModels(final Map models) { for (final String parent : parentModels) { final CodegenModel parentModel = ModelUtils.getModelByName(parent, models); final Collection childrenModels = childrenByParent.get(parent); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java index b780186d65b..64f5e400fc3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java @@ -25,6 +25,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; 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.utils.ModelUtils; import org.slf4j.Logger; @@ -312,12 +314,10 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { super.postProcessModels(objs); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); for (CodegenProperty var : cm.vars) { // check to see if model name is same as the property name // 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. */ @Override - public Map postProcessAllModels(Map objs) { - final Map processed = super.postProcessAllModels(objs); + public Map postProcessAllModels(Map objs) { + final Map processed = super.postProcessAllModels(objs); postProcessEnumRefs(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). * This could probably be made more efficient if absolutely needed. */ - @SuppressWarnings("unchecked") - public Map postProcessDependencyOrders(final Map objs) { + public Map postProcessDependencyOrders(final Map objs) { Map> dependencies = new HashMap<>(); @@ -381,7 +380,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co } } - Map sorted = new LinkedHashMap<>(); + Map sorted = new LinkedHashMap<>(); for (int i = sortedKeys.length - 1; i >= 0; i--) { Object k = sortedKeys[i]; 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 */ @SuppressWarnings("unchecked") - private void postProcessEnumRefs(final Map models) { + private void postProcessEnumRefs(final Map models) { Map enumRefs = new HashMap<>(); - for (Map.Entry entry : models.entrySet()) { - CodegenModel model = ModelUtils.getModelByName(entry.getKey(), models); + for (String key : models.keySet()) { + CodegenModel model = ModelUtils.getModelByName(key, models); if (model.isEnum) { - enumRefs.put(entry.getKey(), model); + enumRefs.put(key, model); } } - for (Map.Entry entry : models.entrySet()) { - String openAPIName = entry.getKey(); + for (String openAPIName : models.keySet()) { CodegenModel model = ModelUtils.getModelByName(openAPIName, models); if (model != null) { for (CodegenProperty var : model.allVars) { @@ -514,7 +512,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); if (objs != null) { Map operations = (Map) objs.get("operations"); @@ -565,8 +563,8 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co if (!isSupportNullable()) { for (CodegenParameter parameter : operation.allParams) { CodegenModel model = null; - for (Object modelHashMap : allModels) { - CodegenModel codegenModel = ((HashMap) modelHashMap).get("model"); + for (ModelMap modelHashMap : allModels) { + CodegenModel codegenModel = modelHashMap.getModel(); if (codegenModel.getClassname().equals(parameter.dataType)) { model = codegenModel; break; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index 353c5f3a2db..6c8fd53858c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -460,7 +462,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") @@ -608,9 +610,9 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // remove model imports to avoid error - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); final String prefix = modelPackage(); Iterator> iterator = imports.iterator(); while (iterator.hasNext()) { @@ -621,42 +623,38 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege boolean addedTimeImport = false; boolean addedOSImport = false; - List> models = (List>) objs.get("models"); - for (Map m : models) { - Object v = m.get("model"); - if (v instanceof CodegenModel) { - CodegenModel model = (CodegenModel) v; - for (CodegenProperty param : model.vars) { - if (!addedTimeImport - && ("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; - } + for (ModelMap m : objs.getModels()) { + CodegenModel model = m.getModel(); + for (CodegenProperty param : model.vars) { + if (!addedTimeImport + && ("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 (this instanceof GoClientCodegen && model.isEnum) { - imports.add(createMapping("import", "fmt")); - } + if (this instanceof GoClientCodegen && model.isEnum) { + imports.add(createMapping("import", "fmt")); + } - // if oneOf contains "null" type - if (model.oneOf != null && !model.oneOf.isEmpty() && model.oneOf.contains("nil")) { - model.isNullable = true; - model.oneOf.remove("nil"); - } + // if oneOf contains "null" type + if (model.oneOf != null && !model.oneOf.isEmpty() && model.oneOf.contains("nil")) { + model.isNullable = true; + model.oneOf.remove("nil"); + } - // if anyOf contains "null" type - if (model.anyOf != null && !model.anyOf.isEmpty() && model.anyOf.contains("nil")) { - model.isNullable = true; - model.anyOf.remove("nil"); - } + // if anyOf contains "null" type + if (model.anyOf != null && !model.anyOf.isEmpty() && model.anyOf.contains("nil")) { + model.isNullable = true; + model.anyOf.remove("nil"); } } // recursively add import for mapping one type to multiple imports - List> recursiveImports = (List>) objs.get("imports"); + List> recursiveImports = objs.getImports(); if (recursiveImports == null) return objs; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java index bc9914a2b00..ecc1f032950 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java @@ -20,6 +20,7 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -420,7 +421,7 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); for (CodegenOperation op : (List) objs.get("operation")) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 04ed3d1ff18..5882e019152 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -34,6 +34,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.DocumentationProviderFeatures; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -644,7 +646,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { objs = super.postProcessAllModels(objs); objs = super.updateAllModels(objs); @@ -1314,9 +1316,9 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // recursively add import for mapping one type to multiple imports - List> recursiveImports = (List>) objs.get("imports"); + List> recursiveImports = objs.getImports(); if (recursiveImports == null) return objs; @@ -1333,9 +1335,8 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } // add x-implements for serializable to all models - List> models = (List>) objs.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); if (this.serializableModel) { cm.getVendorExtensions().putIfAbsent("x-implements", new ArrayList()); ((ArrayList) cm.getVendorExtensions().get("x-implements")).add("Serializable"); @@ -1346,7 +1347,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { // Remove imports of List, ArrayList, Map and HashMap as they are // imported in the template already. List> imports = (List>) objs.get("imports"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java index 85d6de7e78a..857092972ed 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java @@ -24,6 +24,7 @@ import io.swagger.v3.oas.models.PathItem; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.BeanValidationFeatures; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -168,7 +169,7 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen @Override @SuppressWarnings("unchecked") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map updatedObjs = jaxrsPostProcessOperations(objs); Map operations = (Map) updatedObjs.get("operations"); if (operations != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index bb9ff71f0e6..f66de36b3ed 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.media.StringSchema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -392,12 +394,10 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); if (cm.getDiscriminator() != null) { cm.vendorExtensions.put("x-has-data-class-body", true); break; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java index bfbeb59452a..c157529aad8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java @@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.StringSchema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -695,13 +697,13 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models return postProcessModelsEnum(objs); } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java index dc265c91540..f2b588f8412 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java @@ -32,6 +32,8 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +42,6 @@ import java.io.File; import java.util.*; import static org.openapitools.codegen.utils.StringUtils.camelize; -import static org.openapitools.codegen.utils.StringUtils.underscore; public abstract class AbstractPythonConnexionServerCodegen extends AbstractPythonCodegen implements CodegenConfig { private final Logger LOGGER = LoggerFactory.getLogger(AbstractPythonConnexionServerCodegen.class); @@ -608,19 +609,17 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models return postProcessModelsEnum(objs); } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); + for (ModelsMap entry : result.values()) { + for (ModelMap mo : entry.getModels()) { + CodegenModel cm = mo.getModel(); // Add additional filename information for imports mo.put("pyImports", toPyImports(cm, cm.imports)); } @@ -646,7 +645,7 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java index 68ed111f964..10ddac83e56 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java @@ -26,6 +26,7 @@ import io.swagger.v3.oas.models.media.StringSchema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -473,9 +474,9 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // remove model imports to avoid warnings for importing class in the same package in Scala - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); final String prefix = modelPackage() + "."; Iterator> iterator = imports.iterator(); while (iterator.hasNext()) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index ee69893ecf7..ab7cd031b02 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -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.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -765,13 +767,12 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models - List models = (List) postProcessModelsEnum(objs).get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - cm.imports = new TreeSet(cm.imports); + List models = postProcessModelsEnum(objs).getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); + cm.imports = new TreeSet<>(cm.imports); // name enum with model name, e.g. StatusEnum => Pet.StatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { @@ -792,14 +793,12 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelsMap entry : result.values()) { + for (ModelMap mo : entry.getModels()) { + CodegenModel cm = mo.getModel(); if (cm.discriminator != null && cm.children != null) { for (CodegenModel child : cm.children) { this.setDiscriminatorValue(child, cm.discriminator.getPropertyName(), this.getDiscriminatorValue(child)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java index 50efc04b72e..26fbb18827e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java @@ -19,6 +19,7 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -89,7 +90,7 @@ public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfi @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); List newOpList = new ArrayList(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java index 58eea7e9a55..a4b1927828d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java @@ -23,6 +23,7 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; @@ -461,7 +462,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); // We need to postprocess the operations to add proper consumes tags and fix form file handling if (objs != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AvroSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AvroSchemaCodegen.java index 0caf7dc85db..8918cd88fe0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AvroSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AvroSchemaCodegen.java @@ -21,11 +21,12 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelsMap; + import java.io.File; import java.util.Arrays; import java.util.EnumSet; import java.util.HashSet; -import java.util.Map; import static org.openapitools.codegen.utils.StringUtils.camelize; @@ -123,7 +124,7 @@ public class AvroSchemaCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { return postProcessModelsEnum(objs); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java index 5cc50db1415..65efb273c70 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java @@ -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.parameters.Parameter; 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.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java index da9b8d200be..a2bdc183207 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java @@ -23,6 +23,7 @@ import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -716,7 +717,7 @@ public class CLibcurlClientCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models return postProcessModelsEnum(objs); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index e4d2b3fdd84..59623640e8c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -25,6 +25,8 @@ import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.servers.Server; import org.openapitools.codegen.*; 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.ProcessUtils; import org.slf4j.Logger; @@ -42,7 +44,6 @@ import java.util.List; import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; -import static org.openapitools.codegen.CodegenDiscriminator.MappedModel; @SuppressWarnings("Duplicates") public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { @@ -1327,16 +1328,13 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { } } - @SuppressWarnings("unchecked") @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - List models = (List) objs.get("models"); // add implements for serializable/parcelable to all models - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.contains("Null")) { // 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. */ @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { objs = super.postProcessAllModels(objs); // other libraries probably want these fixes, but lets avoid breaking changes for now @@ -1424,9 +1422,9 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { return objs; } - ArrayList allModels = new ArrayList(); - for (Map.Entry entry : objs.entrySet()) { - CodegenModel model = ModelUtils.getModelByName(entry.getKey(), objs); + ArrayList allModels = new ArrayList<>(); + for (String key : objs.keySet()) { + CodegenModel model = ModelUtils.getModelByName(key, objs); allModels.add(model); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreReducedClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreReducedClientCodegen.java index d0447bd6968..4d4495fda4d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreReducedClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreReducedClientCodegen.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.ComposedSchema; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; 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.ProcessUtils; import org.slf4j.Logger; @@ -1084,16 +1086,13 @@ public class CSharpNetCoreReducedClientCodegen extends AbstractCSharpCodegen { } } - @SuppressWarnings("unchecked") @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - List models = (List) objs.get("models"); // add implements for serializable/parcelable to all models - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.contains("ModelNull")) { // if oneOf contains "null" type diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java index 8527aba03f6..269a2b9df00 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java @@ -26,6 +26,7 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -353,7 +354,7 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); List ops = (List) objs.get("operation"); for (CodegenOperation op : ops) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java index 815286a7378..444617cc14f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java @@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; 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.apache.commons.lang3.StringUtils; @@ -115,7 +117,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { @@ -125,7 +127,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { return postProcessModelsEnum(objs); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index 886060e702c..df5c40d6dc9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -25,6 +25,7 @@ import io.swagger.v3.oas.models.servers.Server; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -256,7 +257,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); String classname = (String) operations.get("classname"); operations.put("classnameSnakeUpperCase", underscore(classname).toUpperCase(Locale.ROOT)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java index cef3b403961..bf8161d5cfa 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java @@ -6,6 +6,7 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -310,15 +311,15 @@ public abstract class CppQtAbstractCodegen extends AbstractCppCodegen implements @Override @SuppressWarnings("unchecked") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map objectMap = (Map) objs.get("operations"); List operations = (List) objectMap.get("operation"); List> imports = (List>) objs.get("imports"); Map codegenModels = new HashMap<>(); - for (Object moObj : allModels) { - CodegenModel mo = ((Map) moObj).get("model"); + for (ModelMap moObj : allModels) { + CodegenModel mo = moObj.getModel(); if (mo.isEnum) { codegenModels.put(mo.classname, mo); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java index 881b3cc8c47..927ad85550b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java @@ -27,6 +27,8 @@ import io.swagger.v3.oas.models.servers.Server; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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 java.util.*; @@ -322,7 +324,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { // override with any special post-processing @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { @@ -457,13 +459,13 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { } @Override - public Map postProcessAllModels(final Map models) { - final Map processed = super.postProcessAllModels(models); + public Map postProcessAllModels(final Map models) { + final Map processed = super.postProcessAllModels(models); postProcessParentModels(models); return processed; } - private void postProcessParentModels(final Map models) { + private void postProcessParentModels(final Map models) { for (final String parent : parentModels) { final CodegenModel parentModel = ModelUtils.getModelByName(parent, models); final Collection childrenModels = childrenByParent.get(parent); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java index 3f21f4adf14..cc8e47b70d2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java @@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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 java.io.File; @@ -122,7 +124,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { } @Override - public Map updateAllModels(Map objs) { + public Map updateAllModels(Map objs) { // Index all CodegenModels by model name. Map allModels = getAllModels(objs); @@ -282,7 +284,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); List newOpList = new ArrayList<>(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java index 19fa27e7acf..e7ffaf51aee 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java @@ -24,6 +24,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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.templating.mustache.PrefixWithHashLambda; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -473,7 +475,7 @@ public class CrystalClientCodegen extends DefaultCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models return postProcessModelsEnum(objs); } @@ -554,15 +556,14 @@ public class CrystalClientCodegen extends DefaultCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); HashMap modelMaps = new HashMap<>(); HashMap processedModelMaps = new HashMap<>(); - for (Object o : allModels) { - HashMap h = (HashMap) o; - CodegenModel m = (CodegenModel) h.get("model"); + for (ModelMap modelMap : allModels) { + CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpNetcoreFunctionsServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpNetcoreFunctionsServerCodegen.java index 632d2c1e7aa..e6390f6bcec 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpNetcoreFunctionsServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpNetcoreFunctionsServerCodegen.java @@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; @@ -392,7 +393,7 @@ public class CsharpNetcoreFunctionsServerCodegen extends AbstractCSharpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); // We need to postprocess the operations to add proper consumes tags and fix form file handling if (objs != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java index 517d1023b98..335f955b45f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.ProcessUtils; import org.slf4j.Logger; @@ -207,14 +209,13 @@ public class DartDioClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - List models = (List) objs.get("models"); + List models = objs.getModels(); ProcessUtils.addIndexToProperties(models, 1); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); cm.imports = rewriteImports(cm.imports); cm.vendorExtensions.put("x-has-vars", !cm.vars.isEmpty()); } @@ -263,7 +264,7 @@ public class DartDioClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java index 5b9f96a2162..802df62a0ed 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java @@ -24,6 +24,8 @@ import org.openapitools.codegen.config.GlobalSettings; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; 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.ProcessUtils; import org.slf4j.Logger; @@ -253,14 +255,13 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - List models = (List) objs.get("models"); + List models = objs.getModels(); ProcessUtils.addIndexToProperties(models, 1); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); cm.imports = rewriteImports(cm.imports, true); cm.vendorExtensions.put("x-has-vars", !cm.vars.isEmpty()); } @@ -294,7 +295,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java index a767bbd33d8..752bd29667e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java @@ -20,6 +20,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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 io.swagger.v3.oas.models.media.*; @@ -212,15 +214,14 @@ public class DartJaguarClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - List models = (List) objs.get("models"); + List models = objs.getModels(); ProcessUtils.addIndexToProperties(models, 1); - for (Object _mo : models) { - Map mo = (Map) _mo; + for (ModelMap mo : models) { Set modelImports = new HashSet<>(); - CodegenModel cm = (CodegenModel) mo.get("model"); + CodegenModel cm = mo.getModel(); for (String modelImport : cm.imports) { if (!modelToIgnore.contains(modelImport.toLowerCase(Locale.ROOT))) { modelImports.add(underscore(modelImport)); @@ -244,7 +245,7 @@ public class DartJaguarClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java index e3291df8611..aca6fdb9163 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java @@ -27,6 +27,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -297,7 +298,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) super.postProcessOperationsWithModels(objs, allModels).get("operations"); List os = (List) operations.get("operation"); List newOs = new ArrayList<>(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java index 78241218e21..2d56f44c1c7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java @@ -26,6 +26,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -270,20 +272,18 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { } @SuppressWarnings({"static-method", "unchecked"}) - public Map postProcessAllModels(final Map orgObjs) { - final Map objs = super.postProcessAllModels(orgObjs); + public Map postProcessAllModels(final Map orgObjs) { + final Map objs = super.postProcessAllModels(orgObjs); // put all models in one file - final Map objects = new HashMap<>(); - final Map dataObj = objs.values().stream() - .map(obj -> (Map) obj) + final Map objects = new HashMap<>(); + final ModelsMap dataObj = objs.values().stream() .findFirst() - .orElse(new HashMap<>()); - final List> models = objs.values().stream() - .map(obj -> (Map) obj) - .flatMap(obj -> ((List>) obj.get("models")).stream()) + .orElse(new ModelsMap()); + final List models = objs.values().stream() + .flatMap(obj -> obj.getModels().stream()) .flatMap(obj -> { - final CodegenModel model = (CodegenModel) obj.get("model"); + final CodegenModel model = obj.getModel(); // circular references model.vars.forEach(var -> { 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 includeUuid = anyVarMatches(models, prop -> prop.isUuid); - dataObj.put("models", models); + dataObj.setModels(models); dataObj.put("includeTime", includeTime); dataObj.put("includeUuid", includeUuid); objects.put("Data", dataObj); return objects; } - private boolean anyVarMatches(final List> models, final Predicate predicate) { + private boolean anyVarMatches(final List models, final Predicate predicate) { return models.stream() - .map(obj -> (CodegenModel) obj.get("model")) + .map(ModelMap::getModel) .flatMap(model -> model.vars.stream()).anyMatch(var -> { CodegenProperty prop = var; while (prop != null) { @@ -342,29 +342,25 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { return postProcessModelsEnum(objs); } private static boolean anyOperationParam(final List operations, final Predicate predicate) { return operations.stream() .flatMap(operation -> operation.allParams.stream()) - .filter(predicate) - .findAny() - .isPresent(); + .anyMatch(predicate); } private static boolean anyOperationResponse(final List operations, final Predicate predicate) { return operations.stream() .flatMap(operation -> operation.responses.stream()) - .filter(predicate) - .findAny() - .isPresent(); + .anyMatch(predicate); } @Override @SuppressWarnings({"static-method", "unchecked"}) - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); List ops = (List) objs.get("operation"); ops.forEach(op -> { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java index 3ba5232be16..037f695b762 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java @@ -22,6 +22,7 @@ import com.samskivert.mustache.Template; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.templating.mustache.JoinWithCommaLambda; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -308,7 +309,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List os = (List) operations.get("operation"); List newOs = new ArrayList(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java index e065ca217ee..67a8c506082 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java @@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -367,7 +368,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List os = (List) operations.get("operation"); List newOs = new ArrayList<>(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java index 05e488e5354..39ab803a6ff 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java @@ -19,6 +19,7 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -269,7 +270,7 @@ public class ErlangServerCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java index 5a59c3f6fef..cfa851ba9b2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java @@ -27,6 +27,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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.ProcessUtils; import org.slf4j.Logger; @@ -400,74 +402,68 @@ public class GoClientCodegen extends AbstractGoCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // 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 // and used through x-go-base-type in templates). So super.postProcessModels // must be invoked at the beginning of this method. objs = super.postProcessModels(objs); - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); - List> models = (List>) objs.get("models"); - for (Map m : models) { - Object v = m.get("model"); - if (v instanceof CodegenModel) { - CodegenModel model = (CodegenModel) v; - if (model.isEnum) { + for (ModelMap m : objs.getModels()) { + CodegenModel model = m.getModel(); + if (model.isEnum) { + continue; + } + + 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; } - - 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; - } - if (param.isDateTime) { - // Note this could have been done by adding the following line in processOpts(), - // 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); - } + if (param.isDateTime) { + // Note this could have been done by adding the following line in processOpts(), + // 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 - // oneOf - if (model.oneOf != null && !model.oneOf.isEmpty()) { - imports.add(createMapping("import", "fmt")); - } + // additional import for different cases + // oneOf + if (model.oneOf != null && !model.oneOf.isEmpty()) { + imports.add(createMapping("import", "fmt")); + } - // anyOf - if (model.anyOf != null && !model.anyOf.isEmpty()) { - 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")); - } + // anyOf + if (model.anyOf != null && !model.anyOf.isEmpty()) { + 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")); } } return objs; } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); HashMap modelMaps = new HashMap(); HashMap processedModelMaps = new HashMap(); - for (Object o : allModels) { - HashMap h = (HashMap) o; - CodegenModel m = (CodegenModel) h.get("model"); + for (ModelMap modelMap : allModels) { + CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoEchoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoEchoServerCodegen.java index 2089bd15bf3..5c97dc8b52e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoEchoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoEchoServerCodegen.java @@ -20,6 +20,7 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import java.io.File; import java.util.Arrays; @@ -106,7 +107,7 @@ public class GoEchoServerCodegen extends AbstractGoCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java index 857bfa2a45b..facd3e2bae1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java @@ -22,6 +22,7 @@ import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -121,7 +122,7 @@ public class GoGinServerCodegen extends AbstractGoCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java index 80d4db5916c..ca8c3776768 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java @@ -21,6 +21,7 @@ import io.swagger.v3.oas.models.media.ComposedSchema; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -285,7 +286,7 @@ public class GoServerCodegen extends AbstractGoCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GroovyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GroovyClientCodegen.java index c12ce839375..3728d8c1a20 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GroovyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GroovyClientCodegen.java @@ -32,6 +32,7 @@ import org.openapitools.codegen.meta.features.ParameterFeature; import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.WireFormatFeature; +import org.openapitools.codegen.model.ModelMap; public class GroovyClientCodegen extends AbstractJavaCodegen { @@ -125,7 +126,7 @@ public class GroovyClientCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); List ops = (List) objs.get("operation"); for (CodegenOperation op : ops) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java index 3f7845bfa7c..b54817cb271 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java @@ -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.security.SecurityScheme; import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; +import org.apache.commons.text.StringEscapeUtils; import org.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -777,7 +779,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC } @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { updateGlobalAdditionalProps(); return super.postProcessAllModels(objs); } @@ -807,7 +809,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map ret = super.postProcessOperationsWithModels(objs, allModels); HashMap pathOps = (HashMap) ret.get("operations"); ArrayList ops = (ArrayList) pathOps.get("operation"); @@ -817,9 +819,8 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC updateGlobalAdditionalProps(); - for (Object o : allModels) { - HashMap h = (HashMap) o; - CodegenModel m = (CodegenModel) h.get("model"); + for (ModelMap modelMap : allModels) { + CodegenModel m = modelMap.getModel(); if (modelMimeTypes.containsKey(m.classname)) { Set mimeTypes = modelMimeTypes.get(m.classname); @@ -1269,12 +1270,9 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC } @Override - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); - - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + public ModelsMap postProcessModels(ModelsMap objs) { + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); cm.isEnum = genEnums && cm.isEnum; if (cm.isAlias) { String dataType = cm.dataType; @@ -1302,13 +1300,11 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC } @Override - public Map postProcessModelsEnum(Map objs) { - Map objsEnum = super.postProcessModelsEnum(objs); + public ModelsMap postProcessModelsEnum(ModelsMap objs) { + ModelsMap objsEnum = super.postProcessModelsEnum(objs); if (genEnums) { - List models = (List) objsEnum.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objsEnum.getModels()) { + CodegenModel cm = mo.getModel(); if (cm.isEnum && cm.allowableValues != null) { updateAllowableValuesNames(cm.classname, cm.allowableValues); addEnumToUniques(cm.classname, cm.dataType, cm.allowableValues.values().toString(), cm.allowableValues, cm.description); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java index a47161d8460..d478d4e2dab 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java @@ -23,6 +23,7 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.GzipTestFeatures; import org.openapitools.codegen.languages.features.LoggingTestFeatures; import org.openapitools.codegen.languages.features.UseGenericResponseFeatures; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -165,7 +166,7 @@ public class JavaCXFClientCodegen extends AbstractJavaCodegen } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); return AbstractJavaJAXRSServerCodegen.jaxrsPostProcessOperations(objs); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java index 82dbc6a26ed..ba2362e0230 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java @@ -27,7 +27,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; -import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.text.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CliOption; import org.openapitools.codegen.CodegenModel; @@ -36,6 +36,8 @@ import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.SupportingFile; 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.ModelUtils; import org.openapitools.codegen.utils.JsonCache.CacheException; @@ -1118,18 +1120,14 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF } @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { objs = super.postProcessAllModels(objs); // When populating operation bodies we need to import enum types, which requires the class that defines them. if (generateOperationBody) { - for (Object value : objs.values()) { - @SuppressWarnings("unchecked") - Map inner = (Map) value; - @SuppressWarnings("unchecked") - List> models = (List>) inner.get("models"); - for (Map mo : models) - postProcessModel((CodegenModel) mo.get("model")); + for (ModelsMap value : objs.values()) { + for (ModelMap mo : value.getModels()) + postProcessModel(mo.getModel()); } } @@ -1163,7 +1161,7 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map result = super.postProcessOperationsWithModels(objs, allModels); 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 models = new HashMap<>(); - for (Object model : allModels) { - @SuppressWarnings("unchecked") - CodegenModel cgModel = ((Map) model).get("model"); + for (ModelMap model : allModels) { + CodegenModel cgModel = model.getModel(); models.put(cgModel.classname, cgModel); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index e78223fee47..51e949656f7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -27,6 +27,8 @@ import org.openapitools.codegen.languages.features.GzipFeatures; import org.openapitools.codegen.languages.features.PerformBeanValidationFeatures; import org.openapitools.codegen.meta.features.DocumentationFeature; 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.utils.ProcessUtils; import org.slf4j.Logger; @@ -608,7 +610,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); if (RETROFIT_2.equals(getLibrary())) { Map operations = (Map) objs.get("operations"); @@ -797,15 +799,13 @@ public class JavaClientCodegen extends AbstractJavaCodegen } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); //Needed import for Gson based libraries if (additionalProperties.containsKey(SERIALIZATION_LIBRARY_GSON)) { - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("SerializedName")); @@ -820,15 +820,14 @@ public class JavaClientCodegen extends AbstractJavaCodegen @SuppressWarnings("unchecked") @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - List models = (List) objs.get("models"); + List models = objs.getModels(); if (additionalProperties.containsKey(SERIALIZATION_LIBRARY_JACKSON) && !JERSEY1.equals(getLibrary())) { - List> imports = (List>) objs.get("imports"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); boolean addImports = false; for (CodegenProperty var : cm.vars) { @@ -855,10 +854,10 @@ public class JavaClientCodegen extends AbstractJavaCodegen // add import for Set, HashSet cm.imports.add("Set"); - Map importsSet = new HashMap(); + Map importsSet = new HashMap<>(); importsSet.put("import", "java.util.Set"); imports.add(importsSet); - Map importsHashSet = new HashMap(); + Map importsHashSet = new HashMap<>(); importsHashSet.put("import", "java.util.HashSet"); imports.add(importsHashSet); } @@ -872,7 +871,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen imports2Classnames.put("JsonIgnore", "com.fasterxml.jackson.annotation.JsonIgnore"); for (Map.Entry entry : imports2Classnames.entrySet()) { cm.imports.add(entry.getKey()); - Map importsItem = new HashMap(); + Map importsItem = new HashMap<>(); importsItem.put("import", entry.getValue()); imports.add(importsItem); } @@ -881,9 +880,8 @@ public class JavaClientCodegen extends AbstractJavaCodegen } // add implements for serializable/parcelable to all models - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); cm.getVendorExtensions().putIfAbsent("x-implements", new ArrayList()); if (JERSEY2.equals(getLibrary()) || NATIVE.equals(getLibrary()) || OKHTTP_GSON.equals(getLibrary())) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java index 5bc602fc9aa..0d3c52998ba 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java @@ -23,6 +23,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.config.GlobalSettings; 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.LoggerFactory; @@ -136,7 +138,7 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); if (operations != null) { List ops = (List) operations.get("operation"); @@ -185,19 +187,17 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); //Add imports for Jackson - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("JsonValue")); - Map item = new HashMap(); + Map item = new HashMap<>(); item.put("import", importMapping.get("JsonValue")); imports.add(item); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJerseyServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJerseyServerCodegen.java index 57ad135e867..9f92940ae97 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJerseyServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJerseyServerCodegen.java @@ -21,6 +21,8 @@ import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import java.util.*; @@ -133,15 +135,13 @@ public class JavaJerseyServerCodegen extends AbstractJavaJAXRSServerCodegen { @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); //Add imports for Jackson - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("JsonValue")); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMSF4JServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMSF4JServerCodegen.java index be13c533ebd..80aebea562e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMSF4JServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMSF4JServerCodegen.java @@ -21,6 +21,8 @@ import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.List; @@ -121,15 +123,13 @@ public class JavaMSF4JServerCodegen extends AbstractJavaJAXRSServerCodegen { } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); //Add imports for Jackson - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("JsonValue")); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java index 1148e7850e6..ba77a54ca07 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java @@ -5,6 +5,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.meta.features.DocumentationFeature; 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.stream.Collectors; @@ -316,11 +318,11 @@ public abstract class JavaMicronautAbstractCodegen extends AbstractJavaCodegen i } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map models = allModels.stream() - .map(v -> ((Map) v).get("model")) + .map(ModelMap::getModel) .collect(Collectors.toMap(v -> v.classname, v -> v)); Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); @@ -389,12 +391,11 @@ public abstract class JavaMicronautAbstractCodegen extends AbstractJavaCodegen i } @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { objs = super.postProcessAllModels(objs); - for (String modelName: objs.keySet()) { - CodegenModel model = ((Map>>) objs.get(modelName)) - .get("models").get(0).get("model"); + for (ModelsMap models: objs.values()) { + CodegenModel model = models.getModels().get(0).getModel(); if (model.getParentModel() != null) { model.vendorExtensions.put("requiredParentVars", model.getParentModel().requiredVars); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautServerCodegen.java index 0c6b6f2ce64..43123c6a97a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautServerCodegen.java @@ -3,6 +3,7 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -175,7 +176,7 @@ public class JavaMicronautServerCodegen extends JavaMicronautAbstractCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); // Add the controller classname to operations diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPKMSTServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPKMSTServerCodegen.java index eab42e0db77..f951e0e5b34 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPKMSTServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPKMSTServerCodegen.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.PathItem; import io.swagger.v3.oas.models.tags.Tag; import org.openapitools.codegen.*; 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 java.io.File; @@ -311,7 +313,7 @@ public class JavaPKMSTServerCodegen extends AbstractJavaCodegen { @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); if (operations != null) { List ops = (List) operations.get("operation"); @@ -407,21 +409,18 @@ public class JavaPKMSTServerCodegen extends AbstractJavaCodegen { } - @SuppressWarnings("unchecked") @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); // Add imports for Jackson - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(this.importMapping.get("JsonValue")); - Map item = new HashMap(); + Map item = new HashMap<>(); item.put("import", this.importMapping.get("JsonValue")); imports.add(item); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java index 400ed76f95a..00daf661d00 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java @@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -304,7 +305,7 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); if (operations != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaResteasyEapServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaResteasyEapServerCodegen.java index 527e38d699e..223b4c48429 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaResteasyEapServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaResteasyEapServerCodegen.java @@ -23,6 +23,8 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.JbossFeature; import org.openapitools.codegen.languages.features.SwaggerFeatures; 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.util.HashMap; @@ -131,15 +133,13 @@ public class JavaResteasyEapServerCodegen extends AbstractJavaJAXRSServerCodegen } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); // Add imports for Jackson - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("JsonValue")); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaResteasyServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaResteasyServerCodegen.java index 2608d603b4c..69f99eaa9a5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaResteasyServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaResteasyServerCodegen.java @@ -21,6 +21,8 @@ import org.apache.commons.lang3.BooleanUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.JbossFeature; 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.util.HashMap; @@ -142,19 +144,17 @@ public class JavaResteasyServerCodegen extends AbstractJavaJAXRSServerCodegen im } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); //Add imports for Jackson - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("JsonValue")); - Map item = new HashMap(); + Map item = new HashMap<>(); item.put("import", importMapping.get("JsonValue")); imports.add(item); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java index fe6e26a230d..e73e6ea2d83 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java @@ -21,6 +21,8 @@ import org.apache.commons.lang3.BooleanUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.config.GlobalSettings; 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.LoggerFactory; @@ -118,7 +120,7 @@ public class JavaUndertowServerCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); if (operations != null) { List ops = (List) operations.get("operation"); @@ -167,19 +169,17 @@ public class JavaUndertowServerCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); //Add imports for Jackson - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("JsonValue")); - Map item = new HashMap(); + Map item = new HashMap<>(); item.put("import", importMapping.get("JsonValue")); imports.add(item); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java index e2fc4de08d6..6943342279a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java @@ -27,6 +27,7 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; @@ -190,7 +191,7 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map newObjs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) newObjs.get("operations"); if (operations != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXWebServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXWebServerCodegen.java index b498ec02cfe..dafa810b322 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXWebServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXWebServerCodegen.java @@ -20,6 +20,7 @@ import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.model.ModelMap; import java.io.File; import java.util.*; @@ -127,7 +128,7 @@ public class JavaVertXWebServerCodegen extends AbstractJavaCodegen { @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map newObjs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) newObjs.get("operations"); if (operations != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java index 27649495346..de7511ebe71 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java @@ -27,6 +27,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -906,7 +908,7 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { // Generate and store argument list string of each operation into // vendor-extension: x-codegen-argList. Map operations = (Map) objs.get("operations"); @@ -954,15 +956,12 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod return objs; } - @SuppressWarnings("unchecked") @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // 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 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java index 1f8f973e029..cd9e8094d5d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java @@ -26,6 +26,8 @@ import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -988,7 +990,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { // Generate and store argument list string of each operation into // vendor-extension: x-codegen-argList. Map operations = (Map) objs.get("operations"); @@ -1039,15 +1041,12 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo return objs; } - @SuppressWarnings("unchecked") @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // 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 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java index 8744934020a..b175596f249 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java @@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -255,13 +257,10 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem } @Override - public Map postProcessModels(Map objs) { - - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - cm.imports = new TreeSet(cm.imports); + public ModelsMap postProcessModels(ModelsMap objs) { + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); + cm.imports = new TreeSet<>(cm.imports); for (CodegenProperty var : cm.vars) { // handle default value for enum, e.g. available => StatusEnum.available if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) { @@ -273,7 +272,7 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { if (objs.get("imports") instanceof List) { List> imports = (ArrayList>)objs.get("imports"); Collections.sort(imports, new Comparator>() { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptFlowtypedClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptFlowtypedClientCodegen.java index cf344c8281c..c459232438b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptFlowtypedClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptFlowtypedClientCodegen.java @@ -23,6 +23,9 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; + import java.util.*; import static org.openapitools.codegen.utils.StringUtils.dashize; @@ -163,13 +166,12 @@ public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCo } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models - List models = (List) postProcessModelsEnum(objs).get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - cm.imports = new TreeSet(cm.imports); + List models = postProcessModelsEnum(objs).getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); + cm.imports = new TreeSet<>(cm.imports); // name enum with model name, e.g. StatusEnum => Pet.StatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index 1f232042942..ce65a6bcd85 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -33,6 +33,8 @@ import org.openapitools.codegen.meta.features.ParameterFeature; import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.meta.features.SecurityFeature; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -730,13 +732,11 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { } @Override - public Map postProcessModels(Map objs) { - Map objects = super.postProcessModels(objs); - @SuppressWarnings("unchecked") List models = (List) objs.get("models"); + public ModelsMap postProcessModels(ModelsMap objs) { + ModelsMap objects = super.postProcessModels(objs); - for (Object model : models) { - @SuppressWarnings("unchecked") Map mo = (Map) model; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objects.getModels()) { + CodegenModel cm = mo.getModel(); if (getGenerateRoomModels()) { cm.vendorExtensions.put("x-has-data-class-body", true); } @@ -768,7 +768,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { @Override @SuppressWarnings("unchecked") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); if (operations != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java index 6adf38be358..61b4f39c9c0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java @@ -24,6 +24,8 @@ import com.samskivert.mustache.Template; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.BeanValidationFeatures; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -552,16 +554,14 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); //Add imports for Jackson - List> imports = (List>) objs.get("imports"); - List models = (List) objs.get("models"); + List> imports = objs.getImports(); - models.stream() - .map(mo -> (Map) mo) - .map(mo -> (CodegenModel) mo.get("model")) + objs.getModels().stream() + .map(ModelMap::getModel) .filter(cm -> Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) .forEach(cm -> { cm.imports.add(importMapping.get("JsonValue")); @@ -578,7 +578,7 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); if (operations != null) { List ops = (List) operations.get("operation"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java index b4f1b12081d..adfef4bf3c8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java @@ -20,6 +20,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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.LoggerFactory; @@ -282,19 +284,17 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel model = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel model = mo.getModel(); String modelName = model.getName(); String tableName = toTableName(modelName); String modelDescription = model.getDescription(); Map modelVendorExtensions = model.getVendorExtensions(); - Map ktormSchema = new HashMap(); - Map tableDefinition = new HashMap(); + Map ktormSchema = new HashMap<>(); + Map tableDefinition = new HashMap<>(); if (getIdentifierNamingConvention().equals("snake_case") && !modelName.equals(tableName)) { // add original name in table comment diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java index 84af5454e0d..4508ca631ee 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java @@ -24,6 +24,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -418,7 +420,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") @@ -449,9 +451,9 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // remove model imports to avoid error - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); final String prefix = modelPackage(); Iterator> iterator = imports.iterator(); while (iterator.hasNext()) { @@ -461,7 +463,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig { } // recursively add import for mapping one type to multiple imports - List> recursiveImports = (List>) objs.get("imports"); + List> recursiveImports = objs.getImports(); if (recursiveImports == null) return objs; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java index d1f95897135..deb82787d0f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java @@ -18,6 +18,8 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; 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.LoggerFactory; import org.apache.commons.lang3.StringUtils; @@ -252,13 +254,11 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel model = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel model = mo.getModel(); String modelName = model.getName(); String tableName = this.toTableName(modelName); String modelDescription = model.getDescription(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java index 4db55bcb17e..7d8e79e2d8c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java @@ -23,6 +23,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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.StringUtils; import org.slf4j.Logger; @@ -169,7 +171,7 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { return postProcessModelsEnum(objs); } @@ -256,7 +258,7 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java index 774df093e1d..0fadd7cc7b0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java @@ -31,6 +31,7 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -237,7 +238,7 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java index c9319b48ea4..c780c26f074 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java @@ -25,6 +25,8 @@ import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -189,16 +191,14 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessAllModels(Map superobjs) { + public Map postProcessAllModels(Map superobjs) { List toRemove = new ArrayList<>(); - for (Map.Entry modelEntry : superobjs.entrySet()) { - Map objs = (Map) modelEntry.getValue(); + for (Map.Entry modelEntry : superobjs.entrySet()) { // process enum in models - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + List models = modelEntry.getValue().getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { @@ -705,15 +705,15 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig return m; } - private Map buildEnumModelWrapper(String enumName, String values) { - Map m = new HashMap<>(); + private ModelMap buildEnumModelWrapper(String enumName, String values) { + ModelMap m = new ModelMap(); m.put("importPath", packageName + "." + enumName); - m.put("model", buildEnumModel(enumName, values)); + m.setModel(buildEnumModel(enumName, values)); return m; } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java index 5667e3e2918..4c0c0b9a2d7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java @@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -651,7 +652,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); if (operations != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java index 5dbaec3bbdd..06277a748cc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java @@ -21,6 +21,7 @@ import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import java.io.File; import java.util.*; @@ -233,7 +234,7 @@ public class PhpLaravelServerCodegen extends AbstractPhpCodegen { // override with any special post-processing @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java index 5d68510e9ae..2c0c16a07bc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java @@ -21,6 +21,7 @@ import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import java.io.File; import java.util.*; @@ -165,7 +166,7 @@ public class PhpLumenServerCodegen extends AbstractPhpCodegen { // override with any special post-processing @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java index c45a8af07ca..c3d575dbda5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java @@ -30,6 +30,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.responses.ApiResponses; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -415,7 +416,7 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSilexServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSilexServerCodegen.java index 212459d8d34..38b30105495 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSilexServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSilexServerCodegen.java @@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; @@ -259,7 +260,7 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java index 52e7f4ec507..c3e79f35e18 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java @@ -19,7 +19,7 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.security.SecurityScheme; 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.openapitools.codegen.CodegenType; 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.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -253,7 +254,7 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); addUserClassnameToOperations(operations); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java index cd955144fda..211de3349be 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java @@ -20,12 +20,13 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.security.SecurityScheme; 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.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -156,7 +157,7 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); addUserClassnameToOperations(operations); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java index 7ffaf723136..90c36216331 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java @@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -389,7 +391,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); @@ -447,12 +449,11 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); - ArrayList modelsArray = (ArrayList) objs.get("models"); - Map models = (Map) modelsArray.get(0); - CodegenModel model = (CodegenModel) models.get("model"); + ModelMap models = objs.getModels().get(0); + CodegenModel model = models.getModel(); // Simplify model var type for (CodegenProperty var : model.vars) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java index 8df3f2a3c4d..6212b7929b5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java @@ -19,6 +19,7 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -58,11 +59,9 @@ public class PlantumlDocumentationCodegen extends DefaultCodegen implements Code @SuppressWarnings("unchecked") @Override public Map postProcessSupportingFileData(Map objs) { - Object models = objs.get("models"); - List modelsList = (List) models; - List codegenModelList = modelsList.stream() - .filter(listItem -> listItem instanceof HashMap) - .map(listItem -> (CodegenModel) ((HashMap) listItem).get("model")) + List models = (List) objs.get("models"); + List codegenModelList = models.stream() + .map(ModelMap::getModel) .collect(Collectors.toList()); List inlineAllOfCodegenModelList = codegenModelList.stream() diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java index 91435a81a56..ceabdd28d40 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java @@ -19,12 +19,14 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; 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.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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.ProcessUtils; import org.slf4j.Logger; @@ -1010,14 +1012,13 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); HashMap modelMaps = new HashMap<>(); HashMap processedModelMaps = new HashMap<>(); - for (Object o : allModels) { - HashMap h = (HashMap) o; - CodegenModel m = (CodegenModel) h.get("model"); + for (ModelMap modelMap : allModels) { + CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } @@ -1086,15 +1087,14 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo } @Override - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); + public ModelsMap postProcessModels(ModelsMap objs) { + List models = objs.getModels(); // add x-index to properties ProcessUtils.addIndexToProperties(models); // add x-data-type to store powershell type - for (Object _mo : models) { - Map _model = (Map) _mo; - CodegenModel model = (CodegenModel) _model.get("model"); + for (ModelMap _model : models) { + CodegenModel model = _model.getModel(); CodegenProperty lastWritableProperty = null; for (CodegenProperty cp : model.allVars) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java index 4d8e4657e74..7b2a83175db 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.SecurityFeature; 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.apache.commons.lang3.StringUtils; @@ -274,13 +276,11 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { objs = postProcessModelsEnum(objs); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); if(cm.isEnum) { Map allowableValues = cm.getAllowableValues(); @@ -344,7 +344,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf * {@inheritDoc} */ @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { super.postProcessAllModels(objs); Map allModels = this.getAllModels(objs); @@ -368,22 +368,22 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf return objs; } - public void addImport(Map objs, CodegenModel cm, String importValue) { + public void addImport(Map objs, CodegenModel cm, String importValue) { String modelFileName = this.toModelFilename(importValue); boolean skipImport = isImportAlreadyPresentInModel(objs, cm, modelFileName); if (!skipImport) { this.addImport(cm, importValue); - Map importItem = new HashMap<>(); + Map importItem = new HashMap<>(); importItem.put(IMPORT, modelFileName); - ((List>) ((Map) objs.get(cm.getName())).get(IMPORTS)).add(importItem); + objs.get(cm.getName()).getImports().add(importItem); } } - private boolean isImportAlreadyPresentInModel(Map objs, CodegenModel cm, String importValue) { + private boolean isImportAlreadyPresentInModel(Map objs, CodegenModel cm, String importValue) { boolean skipImport = false; - List> cmImports = ((List>) ((Map) objs.get(cm.getName())).get(IMPORTS)); - for (Map cmImportItem : cmImports) { - for (Entry cmImportItemEntry : cmImportItem.entrySet()) { + List> cmImports = objs.get(cm.getName()).getImports(); + for (Map cmImportItem : cmImports) { + for (Entry cmImportItemEntry : cmImportItem.entrySet()) { if (importValue.equals(cmImportItemEntry.getValue())) { skipImport = true; break; @@ -541,7 +541,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index 8409e2d7f8c..515e6c6891c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -29,6 +29,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.CodegenDiscriminator.MappedModel; 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.ProcessUtils; import org.openapitools.codegen.meta.GeneratorMetadata; @@ -355,7 +357,7 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen { @Override @SuppressWarnings("static-method") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { // fix the imports that each model has, add the module reference to the model // loops through imports and converts them all // from 'Pet' to 'from petstore_api.model.pet import Pet' @@ -388,7 +390,7 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen { * @return the updated objs */ @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { super.postProcessAllModels(objs); List modelsToRemove = new ArrayList<>(); @@ -400,11 +402,10 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen { if (unaliasedSchema.get$ref() == null) { modelsToRemove.add(modelName); } else { - HashMap objModel = (HashMap) objs.get(modelName); + ModelsMap objModel = objs.get(modelName); if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true) - List> models = (List>) objModel.get("models"); - for (Map model : models) { - CodegenModel cm = (CodegenModel) model.get("model"); + for (ModelMap model : objModel.getModels()) { + CodegenModel cm = model.getModel(); String[] importModelNames = cm.imports.toArray(new String[0]); cm.imports.clear(); for (String importModelName : importModelNames) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java index afcb4cae902..5b75b3c452c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java @@ -21,8 +21,11 @@ import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.tags.Tag; + import org.openapitools.codegen.api.TemplatePathLocator; import org.openapitools.codegen.ignore.CodegenIgnoreProcessor; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.templating.*; import io.swagger.v3.core.util.Json; import io.swagger.v3.oas.models.media.*; @@ -667,7 +670,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen { @Override @SuppressWarnings("static-method") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { // fix the imports that each model has, add the module reference to the model // loops through imports and converts them all // from 'Pet' to 'from petstore_api.model.pet import Pet' @@ -702,7 +705,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen { * @return the updated objs */ @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { super.postProcessAllModels(objs); Map allDefinitions = ModelUtils.getSchemas(this.openAPI); @@ -713,11 +716,10 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen { if (unaliasedSchema.get$ref() == null) { continue; } else { - HashMap objModel = (HashMap) objs.get(modelName); + ModelsMap objModel = objs.get(modelName); if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true) - List> models = (List>) objModel.get("models"); - for (Map model : models) { - CodegenModel cm = (CodegenModel) model.get("model"); + for (ModelMap model : objModel.getModels()) { + CodegenModel cm = model.getModel(); String[] importModelNames = cm.imports.toArray(new String[0]); cm.imports.clear(); for (String importModelName : importModelNames) { @@ -2013,7 +2015,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models return postProcessModelsEnum(objs); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java index 72001434c03..e1802196294 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java @@ -28,7 +28,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -187,7 +188,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); // Set will make sure that no duplicated items are used. Set securityImports = new HashSet<>(); @@ -235,13 +236,11 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); + for (Map.Entry entry : result.entrySet()) { + for (ModelMap mo : entry.getValue().getModels()) { + CodegenModel cm = mo.getModel(); // Add additional filename information for imports mo.put("pyImports", toPyImports(cm, cm.imports)); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java index 70b251e29b0..c088f3861a7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java @@ -20,6 +20,7 @@ package org.openapitools.codegen.languages; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -292,7 +293,7 @@ public class PythonLegacyClientCodegen extends AbstractPythonCodegen implements } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models return postProcessModelsEnum(objs); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java index 99294b06a15..8cecb235cd3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java @@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.parameters.Parameter; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -412,9 +414,9 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // remove model imports to avoid error - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); final String prefix = modelPackage(); Iterator> iterator = imports.iterator(); while (iterator.hasNext()) { @@ -424,7 +426,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { } // recursively add import for mapping one type to multiple imports - List> recursiveImports = (List>) objs.get("imports"); + List> recursiveImports = objs.getImports(); if (recursiveImports == null) return objs; @@ -687,13 +689,12 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map objectMap = (Map) objs.get("operations"); HashMap modelMaps = new HashMap(); - for (Object o : allModels) { - HashMap h = (HashMap) o; - CodegenModel m = (CodegenModel) h.get("model"); + for (ModelMap modelMap : allModels) { + CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java index d36f4ebca9e..f95ab1ea459 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java @@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.LoggerFactory; @@ -486,7 +488,7 @@ public class RubyClientCodegen extends AbstractRubyCodegen { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models return postProcessModelsEnum(objs); } @@ -571,15 +573,14 @@ public class RubyClientCodegen extends AbstractRubyCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); HashMap modelMaps = new HashMap(); HashMap processedModelMaps = new HashMap(); - for (Object o : allModels) { - HashMap h = (HashMap) o; - CodegenModel m = (CodegenModel) h.get("model"); + for (ModelMap modelMap : allModels) { + CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java index 42c0a695a27..82f6b012c79 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java @@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.media.StringSchema; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; 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.StringUtils; import org.slf4j.Logger; @@ -197,31 +199,29 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models return postProcessModelsEnum(objs); } - @SuppressWarnings({"static-method", "unchecked"}) - public Map postProcessAllModels(Map objs) { + @SuppressWarnings("static-method") + public Map postProcessAllModels(Map objs) { // Index all CodegenModels by model name. Map allModels = new HashMap<>(); - for (Map.Entry entry : objs.entrySet()) { + for (Map.Entry entry : objs.entrySet()) { String modelName = toModelName(entry.getKey()); - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + List models = entry.getValue().getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); allModels.put(modelName, cm); } } - for (Map.Entry entry : objs.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (Map.Entry entry : objs.entrySet()) { + List models = entry.getValue().getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); if (cm.discriminator != null) { List discriminatorVars = new ArrayList<>(); for (CodegenDiscriminator.MappedModel mappedModel : cm.discriminator.getMappedModels()) { @@ -525,7 +525,7 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { @SuppressWarnings("unchecked") Map objectMap = (Map) objs.get("operations"); @SuppressWarnings("unchecked") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java index e4eb0dc9d79..47e61ebe2fd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java @@ -33,6 +33,8 @@ import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.URLPathUtils; import org.slf4j.Logger; @@ -966,7 +968,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); @@ -977,7 +979,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { return objs; } - private void postProcessOperationWithModels(CodegenOperation op, List allModels) { + private void postProcessOperationWithModels(CodegenOperation op, List allModels) { boolean consumesPlainText = false; boolean consumesXml = false; @@ -1263,23 +1265,20 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessAllModels(Map objs) { - Map newObjs = super.postProcessAllModels(objs); + public Map postProcessAllModels(Map objs) { + Map newObjs = super.postProcessAllModels(objs); //Index all CodegenModels by model name. - HashMap allModels = new HashMap(); - for (Entry entry : objs.entrySet()) { + HashMap allModels = new HashMap<>(); + for (Entry entry : objs.entrySet()) { String modelName = toModelName(entry.getKey()); - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); - allModels.put(modelName, cm); + List models = entry.getValue().getModels(); + for (ModelMap mo : models) { + allModels.put(modelName, mo.getModel()); } } for (Entry entry : allModels.entrySet()) { - String modelName = entry.getKey(); CodegenModel model = entry.getValue(); if (uuidType.equals(model.dataType)) { @@ -1558,12 +1557,9 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); - - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + public ModelsMap postProcessModels(ModelsMap objs) { + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); LOGGER.trace("Post processing model: {}", cm); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java index 4139431faa0..fbcf40acc8d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java @@ -25,6 +25,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -211,7 +212,7 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { if (registerNonStandardStatusCodes) { try { @SuppressWarnings("unchecked") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java index ea4583aec17..480f9ccab4b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java @@ -25,6 +25,7 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -281,7 +282,7 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map baseObjs = super.postProcessOperationsWithModels(objs, allModels); pathMatcherPatternsPostProcessor(baseObjs); marshallingPostProcessor(baseObjs); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java index 7aa5bfcce97..45975268d62 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java @@ -21,6 +21,7 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -230,7 +231,7 @@ public class ScalaFinchServerCodegen extends DefaultCodegen implements CodegenCo @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java index 36ec66b3712..0d2ea418a1d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java @@ -20,6 +20,8 @@ package org.openapitools.codegen.languages; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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.LoggerFactory; @@ -163,12 +165,10 @@ public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements Cod } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); - List models = (List) objs.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); for (CodegenProperty var : cm.vars) { if (var.isEnum) { @@ -186,9 +186,8 @@ public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements Cod if (additionalProperties.containsKey("gson")) { List> imports = (List>) objs.get("imports"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("SerializedName")); @@ -203,7 +202,7 @@ public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements Cod } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); ArrayList oplist = (ArrayList) operations.get("operation"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java index d918994d3ec..1e752dad453 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.templating.mustache.IndentedLambda; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -223,12 +225,12 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map models = new HashMap<>(); - for (Object _mo : allModels) { - CodegenModel model = (CodegenModel) ((Map) _mo).get("model"); - models.put(model.classname, model); + for (ModelMap _mo : allModels) { + CodegenModel model = _mo.getModel(); + models.put(model.classname, _mo.getModel()); } Map operations = (Map) objs.get("operations"); @@ -252,18 +254,14 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem return objs; } - @SuppressWarnings("unchecked") @Override - public Map postProcessAllModels(Map objs) { + public Map postProcessAllModels(Map objs) { objs = super.postProcessAllModels(objs); Map modelsByClassName = new HashMap<>(); - for (Object _outer : objs.values()) { - Map outer = (Map) _outer; - List> models = (List>) outer.get("models"); - - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelsMap outer : objs.values()) { + for (ModelMap mo : outer.getModels()) { + CodegenModel cm = mo.getModel(); postProcessModelsEnum(outer); cm.classVarName = camelize(cm.classVarName, true); modelsByClassName.put(cm.classname, cm); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java index a31d41ff4a8..7e3e2d38357 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java @@ -28,6 +28,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -219,7 +221,7 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { return objs; } @@ -231,8 +233,8 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code * @return An in-place modified state of the codegen object model. */ @Override - public Map postProcessAllModels(Map objs) { - final Map processed = super.postProcessAllModels(objs); + public Map postProcessAllModels(Map objs) { + final Map processed = super.postProcessAllModels(objs); postProcessUpdateImports(processed); return processed; } @@ -246,26 +248,25 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code * @param models processed models to be further processed */ @SuppressWarnings("unchecked") - private void postProcessUpdateImports(final Map models) { + private void postProcessUpdateImports(final Map models) { final String prefix = modelPackage() + "."; - Map enumRefs = new HashMap(); - for (Map.Entry entry : models.entrySet()) { - CodegenModel model = ModelUtils.getModelByName(entry.getKey(), models); + Map enumRefs = new HashMap<>(); + for (String key : models.keySet()) { + CodegenModel model = ModelUtils.getModelByName(key, models); if (model.isEnum) { - Map objs = (Map)models.get(entry.getKey()); - enumRefs.put(entry.getKey(), objs); + ModelsMap objs = models.get(key); + enumRefs.put(key, objs); } } - for (Map.Entry entry : models.entrySet()) { - String openAPIName = entry.getKey(); + for (String openAPIName : models.keySet()) { CodegenModel model = ModelUtils.getModelByName(openAPIName, models); if (model == null) { - LOGGER.warn("Expected to retrieve model %s by name, but no model was found. Check your -Dmodels inclusions.", openAPIName); + LOGGER.warn("Expected to retrieve model {} by name, but no model was found. Check your -Dmodels inclusions.", openAPIName); continue; } - Map objs = (Map)models.get(openAPIName); - List> imports = (List>) objs.get("imports"); + ModelsMap objs = models.get(openAPIName); + List> imports = objs.getImports(); if (imports == null || imports.isEmpty()) { continue; } @@ -274,7 +275,7 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code while (iterator.hasNext()) { String importPath = iterator.next().get("import"); if (importPath.startsWith(prefix)) { - if (isEnumClass(importPath, (Map)enumRefs)) { + if (isEnumClass(importPath, enumRefs)) { Map item = new HashMap<>(); item.put("import", importPath.concat("._")); newImports.add(item); @@ -288,25 +289,21 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code } // reset imports - objs.put("imports", newImports); + objs.setImports(newImports); } } - @SuppressWarnings("unchecked") - private boolean isEnumClass(final String importPath, final Map enumModels) { + private boolean isEnumClass(final String importPath, final Map enumModels) { if (enumModels == null || enumModels.isEmpty()) { return false; } - for (Map.Entry entry : enumModels.entrySet()) { - String name = entry.getKey(); - Map objs = (Map)enumModels.get(name); - List> modles = (List>) objs.get("models"); + for (ModelsMap objs : enumModels.values()) { + List modles = objs.getModels(); if (modles == null || modles.isEmpty()) { continue; } - Iterator> iterator = modles.iterator(); - while (iterator.hasNext()) { - String enumImportPath = (String)iterator.next().get("importPath"); + for (final Map modle : modles) { + String enumImportPath = (String) modle.get("importPath"); if (enumImportPath != null && enumImportPath.equals(importPath)) { return true; } @@ -316,7 +313,7 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { if (registerNonStandardStatusCodes) { try { @SuppressWarnings("unchecked") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalatraServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalatraServerCodegen.java index f781e8dc817..44249acf2b4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalatraServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalatraServerCodegen.java @@ -19,6 +19,7 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import java.io.File; import java.util.*; @@ -166,7 +167,7 @@ public class ScalatraServerCodegen extends AbstractScalaCodegen implements Codeg } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index bcfb42a25a4..c9d9aaa0bc0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -60,6 +60,8 @@ import org.openapitools.codegen.meta.features.ParameterFeature; import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.WireFormatFeature; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.templating.mustache.SplitStringLambda; import org.openapitools.codegen.templating.mustache.TrimWhitespaceLambda; import org.openapitools.codegen.utils.URLPathUtils; @@ -620,7 +622,7 @@ public class SpringCodegen extends AbstractJavaCodegen } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { final Map operations = (Map) objs.get("operations"); if (operations != null) { final List ops = (List) operations.get("operation"); @@ -915,15 +917,13 @@ public class SpringCodegen extends AbstractJavaCodegen } @Override - public Map postProcessModelsEnum(Map objs) { + public ModelsMap postProcessModelsEnum(ModelsMap objs) { objs = super.postProcessModelsEnum(objs); // Add imports for Jackson - final List> imports = (List>) objs.get("imports"); - final List models = (List) objs.get("models"); - for (final Object _mo : models) { - final Map mo = (Map) _mo; - final CodegenModel cm = (CodegenModel) mo.get("model"); + final List> imports = objs.getImports(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); // for enum model if (Boolean.TRUE.equals(cm.isEnum) && cm.allowableValues != null) { cm.imports.add(importMapping.get("JsonValue")); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java index a6a2c81328f..4e5d92b6be6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java @@ -28,6 +28,7 @@ import io.swagger.v3.oas.models.servers.Server; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.Markdown; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -141,7 +142,7 @@ public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfi } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java index b3a34018238..d2fe4759c57 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java @@ -25,6 +25,7 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.Markdown; import org.openapitools.codegen.utils.ModelUtils; @@ -124,7 +125,7 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index ed0dc45e1b9..d4bd6237555 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -22,10 +22,12 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.text.WordUtils; +import org.apache.commons.text.WordUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,8 +35,6 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.time.OffsetDateTime; import java.time.Instant; import java.time.temporal.ChronoField; @@ -1084,8 +1084,8 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessModels(Map objs) { - Map postProcessedModelsEnum = postProcessModelsEnum(objs); + public ModelsMap postProcessModels(ModelsMap objs) { + ModelsMap postProcessedModelsEnum = postProcessModelsEnum(objs); // We iterate through the list of models, and also iterate through each of the // properties for each model. For each property, if: @@ -1100,10 +1100,8 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig // // CodegenModel.vendorExtensions["x-codegen-has-escaped-property-names"] = true // - List models = (List) postProcessedModelsEnum.get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : postProcessedModelsEnum.getModels()) { + CodegenModel cm = mo.getModel(); boolean modelHasPropertyWithEscapedName = false; for (CodegenProperty prop : cm.allVars) { if (!prop.name.equals(prop.baseName)) { @@ -1184,13 +1182,12 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { Map objectMap = (Map) objs.get("operations"); HashMap modelMaps = new HashMap(); - for (Object o : allModels) { - HashMap h = (HashMap) o; - CodegenModel m = (CodegenModel) h.get("model"); + for (ModelMap modelMap: allModels) { + CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java index 5e2dd688c1c..7b7a6102f1a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java @@ -20,6 +20,8 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; 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.SemVer; import org.slf4j.Logger; @@ -383,7 +385,7 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); // Add filename information for api imports @@ -471,19 +473,17 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode } @Override - public Map postProcessModels(Map objs) { - Map result = super.postProcessModels(objs); + public ModelsMap postProcessModels(ModelsMap objs) { + ModelsMap result = super.postProcessModels(objs); return postProcessModelsEnum(result); } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); + for (ModelsMap entry : result.values()) { + for (ModelMap mo : entry.getModels()) { + CodegenModel cm = mo.getModel(); if (taggedUnions) { mo.put(TAGGED_UNIONS, true); if (cm.discriminator != null && cm.children != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAureliaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAureliaClientCodegen.java index 544af6f3c68..e0479d1daad 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAureliaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAureliaClientCodegen.java @@ -18,6 +18,8 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import java.util.*; @@ -82,7 +84,7 @@ public class TypeScriptAureliaClientCodegen extends AbstractTypeScriptClientCode } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); HashSet modelImports = new HashSet<>(); @@ -109,13 +111,12 @@ public class TypeScriptAureliaClientCodegen extends AbstractTypeScriptClientCode } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models - List models = (List) postProcessModelsEnum(objs).get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - cm.imports = new TreeSet(cm.imports); + List models = postProcessModelsEnum(objs).getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); + cm.imports = new TreeSet<>(cm.imports); for (CodegenProperty var : cm.vars) { // name enum with model name, e.g. StatusEnum => PetStatusEnum if (Boolean.TRUE.equals(var.isEnum)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java index d76292d4741..a0083a1e4b1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java @@ -22,6 +22,8 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; 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 java.util.*; @@ -143,7 +145,7 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map vals = (Map) objs.getOrDefault("operations", new HashMap<>()); List operations = (List) vals.getOrDefault("operation", new ArrayList<>()); @@ -169,13 +171,11 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map model : models) { - CodegenModel codegenModel = (CodegenModel) model.get("model"); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); + for (ModelsMap entry : result.values()) { + for (ModelMap model : entry.getModels()) { + CodegenModel codegenModel = model.getModel(); model.put("hasAllOf", codegenModel.allOf.size() > 0); model.put("hasOneOf", codegenModel.oneOf.size() > 0); } @@ -192,24 +192,23 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege @Override @SuppressWarnings("unchecked") - public Map postProcessModels(Map objs) { - List models = (List) postProcessModelsEnum(objs).get("models"); + public ModelsMap postProcessModels(ModelsMap objs) { + List models = postProcessModelsEnum(objs).getModels(); boolean withoutPrefixEnums = false; if (additionalProperties.containsKey(WITHOUT_PREFIX_ENUMS)) { withoutPrefixEnums = Boolean.parseBoolean(additionalProperties.get(WITHOUT_PREFIX_ENUMS).toString()); } - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); // Deduce the model file name in kebab case cm.classFilename = cm.classname.replaceAll("([a-z0-9])([A-Z])", "$1-$2").toLowerCase(Locale.ROOT); //processed enum names if(!withoutPrefixEnums) { - cm.imports = new TreeSet(cm.imports); + cm.imports = new TreeSet<>(cm.imports); // name enum with model name, e.g. StatusEnum => PetStatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { @@ -229,7 +228,7 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege } // Apply the model file name to the imports as well - for (Map m : (List>) objs.get("imports")) { + for (Map m : objs.getImports()) { String javaImport = m.get("import").substring(modelPackage.length() + 1); String tsImport = tsModelPackage + "/" + javaImport; m.put("tsImport", tsImport); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index f6fa5c0050d..e60af80b95a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -23,7 +23,6 @@ import io.swagger.v3.core.util.Json; import io.swagger.v3.oas.models.media.*; import io.swagger.v3.oas.models.media.MediaType; import io.swagger.v3.oas.models.parameters.RequestBody; -import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.ComposedSchema; @@ -34,6 +33,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.CodegenDiscriminator.MappedModel; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -317,7 +318,7 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo } @Override - public Map postProcessOperationsWithModels(Map operations, List models) { + public Map postProcessOperationsWithModels(Map operations, List models) { // Add additional filename information for model imports in the apis List> imports = (List>) operations.get("imports"); @@ -693,13 +694,12 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models - List> models = (List>) postProcessModelsEnum(objs).get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - cm.imports = new TreeSet(cm.imports); + List models = postProcessModelsEnum(objs).getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); + cm.imports = new TreeSet<>(cm.imports); // name enum with model name, e.g. StatusEnum => Pet.StatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { @@ -715,8 +715,8 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo } } } - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); // Add additional filename information for imports mo.put("tsImports", toTsImports(cm, cm.imports)); } @@ -739,14 +739,12 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelsMap entry : result.values()) { + for (ModelMap mo : entry.getModels()) { + CodegenModel cm = mo.getModel(); if (cm.discriminator != null && cm.children != null) { for (CodegenModel child : cm.children) { this.setDiscriminatorValue(child, cm.discriminator.getPropertyName(), this.getDiscriminatorValue(child)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java index ccb273a6025..1f09e2f4628 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java @@ -28,6 +28,8 @@ import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.templating.mustache.IndentedLambda; import org.openapitools.codegen.utils.ModelUtils; @@ -306,13 +308,12 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } @Override - public Map postProcessModels(Map objs) { - List models = (List) postProcessModelsEnum(objs).get("models"); + public ModelsMap postProcessModels(ModelsMap objs) { + List models = postProcessModelsEnum(objs).getModels(); // process enum and custom properties in models - for (Object _mo : models) { - Map mo = (Map) _mo; - ExtendedCodegenModel cm = (ExtendedCodegenModel) mo.get("model"); + for (ModelMap mo : models) { + ExtendedCodegenModel cm = (ExtendedCodegenModel) mo.getModel(); cm.imports = new TreeSet<>(cm.imports); this.processCodeGenModel(cm); } @@ -329,16 +330,14 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } @Override - public Map postProcessAllModels(Map objs) { - List allModels = new ArrayList(); - List entityModelClassnames = new ArrayList(); + public Map postProcessAllModels(Map objs) { + List allModels = new ArrayList<>(); + List entityModelClassnames = new ArrayList<>(); - Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map model : models) { - ExtendedCodegenModel codegenModel = (ExtendedCodegenModel) model.get("model"); + Map result = super.postProcessAllModels(objs); + for (ModelsMap entry : result.values()) { + for (ModelMap model : entry.getModels()) { + ExtendedCodegenModel codegenModel = (ExtendedCodegenModel) model.getModel(); model.put("hasImports", codegenModel.imports.size() > 0); allModels.add(codegenModel); @@ -558,7 +557,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { // Add supporting file only if we plan to generate files in /apis if (operations.size() > 0 && !addedApiIndex) { addedApiIndex = true; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java index 378facf89f0..6f7ddbb3c5a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java @@ -23,6 +23,9 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; 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.util.*; @@ -194,7 +197,7 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); // Add filename information for api imports @@ -253,21 +256,19 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo } @Override - public Map postProcessModels(Map objs) { - Map result = super.postProcessModels(objs); + public ModelsMap postProcessModels(ModelsMap objs) { + ModelsMap result = super.postProcessModels(objs); return postProcessModelsEnum(result); } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelsMap entry : result.values()) { + for (ModelMap mo : entry.getModels()) { + CodegenModel cm = mo.getModel(); if (taggedUnions) { mo.put(TAGGED_UNIONS, true); if (cm.discriminator != null && cm.children != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java index 524b96209a4..a79d6627fca 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java @@ -20,6 +20,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.SemVer; import org.slf4j.Logger; @@ -265,7 +267,7 @@ public class TypeScriptNestjsClientCodegen extends AbstractTypeScriptClientCodeg } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); // Add filename information for api imports @@ -351,19 +353,17 @@ public class TypeScriptNestjsClientCodegen extends AbstractTypeScriptClientCodeg } @Override - public Map postProcessModels(Map objs) { - Map result = super.postProcessModels(objs); + public ModelsMap postProcessModels(ModelsMap objs) { + ModelsMap result = super.postProcessModels(objs); return postProcessModelsEnum(result); } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); + for (ModelsMap entry : result.values()) { + for (ModelMap mo : entry.getModels()) { + CodegenModel cm = mo.getModel(); if (taggedUnions) { mo.put(TAGGED_UNIONS, true); if (cm.discriminator != null && cm.children != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java index ad8947cb3ae..0046f1c98bc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.responses.ApiResponse; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -167,14 +169,12 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map mo : models) { - CodegenModel cm = (CodegenModel) mo.get("model"); + for (ModelsMap entry : result.values()) { + for (ModelMap mo : entry.getModels()) { + CodegenModel cm = mo.getModel(); // Add additional filename information for imports mo.put("tsImports", toTsImports(cm, cm.imports)); @@ -197,7 +197,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { Map objs = (Map) operations.get("operations"); // The api.mustache template requires all of the auth methods for the whole api diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptReduxQueryClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptReduxQueryClientCodegen.java index 5673163cc8a..3160d494c49 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptReduxQueryClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptReduxQueryClientCodegen.java @@ -20,6 +20,8 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import java.io.File; @@ -121,14 +123,13 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC } @Override - public Map postProcessModels(Map objs) { - List models = (List) postProcessModelsEnum(objs).get("models"); + public ModelsMap postProcessModels(ModelsMap objs) { + List models = postProcessModelsEnum(objs).getModels(); // process enum in models - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - cm.imports = new TreeSet(cm.imports); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); + cm.imports = new TreeSet<>(cm.imports); // name enum with model name, e.g. StatusEnum => Pet.StatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { @@ -160,13 +161,11 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map model : models) { - CodegenModel codegenModel = (CodegenModel) model.get("model"); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); + for (ModelsMap entry : result.values()) { + for (ModelMap model : entry.getModels()) { + CodegenModel codegenModel = model.getModel(); model.put("hasImports", codegenModel.imports.size() > 0); } } @@ -186,7 +185,7 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { // Add supporting file only if we plan to generate files in /apis if (operations.size() > 0 && !addedApiIndex) { addedApiIndex = true; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java index 9a15de44bd7..0cbd2be7c21 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java @@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -118,13 +120,12 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen } @Override - public Map postProcessModels(Map objs) { + public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models - List models = (List) postProcessModelsEnum(objs).get("models"); - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); - cm.imports = new TreeSet(cm.imports); + List models = postProcessModelsEnum(objs).getModels(); + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); + cm.imports = new TreeSet<>(cm.imports); // name enum with model name, e.g. StatusEnum => PetStatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { @@ -146,13 +147,11 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen } @Override - public Map postProcessAllModels(Map objs) { - Map result = super.postProcessAllModels(objs); - for (Map.Entry entry : result.entrySet()) { - Map inner = (Map) entry.getValue(); - List> models = (List>) inner.get("models"); - for (Map model : models) { - CodegenModel codegenModel = (CodegenModel) model.get("model"); + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); + for (ModelsMap entry : result.values()) { + for (ModelMap model : entry.getModels()) { + CodegenModel codegenModel = model.getModel(); model.put("hasImports", codegenModel.imports.size() > 0); } } @@ -197,7 +196,7 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public Map postProcessOperationsWithModels(Map operations, List allModels) { // Convert List of CodegenOperation to List of ExtendedCodegenOperation Map _operations = (Map) operations.get("operations"); List os = (List) _operations.get("operation"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java index 42b22298758..bd803f4b97c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java @@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.info.Info; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import java.io.File; import java.text.Normalizer; @@ -93,7 +95,7 @@ public class WsdlSchemaCodegen extends DefaultCodegen implements CodegenConfig { @Override public Map postProcessOperationsWithModels(Map objs, - List allModels) { + List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); @@ -176,12 +178,9 @@ public class WsdlSchemaCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); - - for (Object mo : models) { - Map mod = (Map) mo; - CodegenModel model = (CodegenModel) mod.get("model"); + public ModelsMap postProcessModels(ModelsMap objs) { + for (ModelMap mo : objs.getModels()) { + CodegenModel model = mo.getModel(); Map modelVendorExtensions = model.getVendorExtensions(); for (CodegenProperty var : model.vars) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ModelMap.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ModelMap.java new file mode 100644 index 00000000000..10ae306276b --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ModelMap.java @@ -0,0 +1,25 @@ +package org.openapitools.codegen.model; + +import java.util.HashMap; +import java.util.Map; + +import org.openapitools.codegen.CodegenModel; + +public class ModelMap extends HashMap { + + public ModelMap() { + + } + + public ModelMap(Map init) { + putAll(init); + } + + public void setModel(CodegenModel model) { + put("model", model); + } + + public CodegenModel getModel() { + return (CodegenModel) get("model"); + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ModelsMap.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ModelsMap.java new file mode 100644 index 00000000000..e43fa200b58 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ModelsMap.java @@ -0,0 +1,35 @@ +package org.openapitools.codegen.model; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ModelsMap extends HashMap { + + public ModelsMap() {} + + public void setModels(List modelMaps) { + put("models", modelMaps); + } + + @SuppressWarnings("unchecked") + public List getModels() { + return (List) get("models"); + } + + public void setImports(List> imports) { + put("imports", imports); + } + + @SuppressWarnings("unchecked") + public List> getImports() { + return (List>) get("imports"); + } + + @SuppressWarnings("unchecked") + public List> getImportsOrEmpty() { + return (List>) getOrDefault("imports", new ArrayList<>()); + } + +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index eb5d5c6a2fe..699c074633f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -37,6 +37,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.IJsonSchemaValidationProperties; import org.openapitools.codegen.config.GlobalSettings; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.commons.io.FileUtils; @@ -103,20 +105,15 @@ public class ModelUtils { * @param models Map of models * @return model */ - public static CodegenModel getModelByName(final String name, final Map models) { - final Object data = models.get(name); - if (data instanceof Map) { - final Map dataMap = (Map) data; - final Object dataModels = dataMap.get("models"); - if (dataModels instanceof List) { - final List dataModelsList = (List) dataModels; - for (final Object entry : dataModelsList) { - if (entry instanceof Map) { - final Map entryMap = (Map) entry; - final Object model = entryMap.get("model"); - if (model instanceof CodegenModel) { - return (CodegenModel) model; - } + public static CodegenModel getModelByName(final String name, final Map models) { + final ModelsMap data = models.get(name); + if (data != null) { + final List dataModelsList = data.getModels(); + if (dataModelsList != null) { + for (final ModelMap entryMap : dataModelsList) { + final CodegenModel model = entryMap.getModel(); + if (model != null) { + return model; } } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ProcessUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ProcessUtils.java index 9042eb92b39..724db194867 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ProcessUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ProcessUtils.java @@ -5,6 +5,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.CodegenSecurity; +import org.openapitools.codegen.model.ModelMap; import java.util.ArrayList; import java.util.List; @@ -17,10 +18,9 @@ public class ProcessUtils { * @param models List of models * @param initialIndex starting index to use */ - public static void addIndexToProperties(List models, int initialIndex) { - for (Object _mo : models) { - Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + public static void addIndexToProperties(List models, int initialIndex) { + for (ModelMap mo : models) { + CodegenModel cm = mo.getModel(); int i = initialIndex; for (CodegenProperty var : cm.vars) { @@ -41,7 +41,7 @@ public class ProcessUtils { * * @param models List of models */ - public static void addIndexToProperties(List models) { + public static void addIndexToProperties(List models) { addIndexToProperties(models, 0); } diff --git a/modules/openapi-generator/src/main/resources/codegen/generatorClass.mustache b/modules/openapi-generator/src/main/resources/codegen/generatorClass.mustache index 72755d960eb..96504e74098 100644 --- a/modules/openapi-generator/src/main/resources/codegen/generatorClass.mustache +++ b/modules/openapi-generator/src/main/resources/codegen/generatorClass.mustache @@ -1,6 +1,7 @@ package {{generatorPackage}}; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; import io.swagger.models.properties.*; import java.util.*; @@ -37,7 +38,7 @@ public class {{generatorClass}} extends DefaultCodegen implements CodegenConfig */ @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { // to try debugging your code generator: // set a break point on the next line. diff --git a/modules/openapi-generator/src/main/resources/codegen/kotlin/generatorClass.mustache b/modules/openapi-generator/src/main/resources/codegen/kotlin/generatorClass.mustache index b65939e23f7..7c78604b805 100644 --- a/modules/openapi-generator/src/main/resources/codegen/kotlin/generatorClass.mustache +++ b/modules/openapi-generator/src/main/resources/codegen/kotlin/generatorClass.mustache @@ -2,6 +2,7 @@ package {{generatorPackage}} import org.openapitools.codegen.* +import org.openapitools.codegen.model.ModelMap; import java.util.* import java.io.File @@ -36,7 +37,7 @@ open class {{generatorClass}}() : DefaultCodegen(), CodegenConfig { * Provides an opportunity to inspect and modify operation data before the code is generated. */ @Suppress("UNCHECKED_CAST") - override fun postProcessOperationsWithModels(objs: Map, allModels: List?): Map { + override fun postProcessOperationsWithModels(objs: Map, allModels: List?): Map { val results = super.postProcessOperationsWithModels(objs, allModels) val ops = results["operations"] as Map @@ -180,4 +181,4 @@ open class {{generatorClass}}() : DefaultCodegen(), CodegenConfig { //TODO: check that this logic is safe to escape quotation mark to avoid code injection return with(input) { replace("\"", "\\\"") } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index d279f0a32b1..fac01dbf2bb 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -36,6 +36,8 @@ import io.swagger.v3.parser.core.models.ParseOptions; import org.openapitools.codegen.config.CodegenConfigurator; import org.openapitools.codegen.config.GlobalSettings; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.templating.mustache.CamelCaseLambda; import org.openapitools.codegen.templating.mustache.IndentedLambda; import org.openapitools.codegen.templating.mustache.LowercaseLambda; @@ -776,8 +778,8 @@ public class DefaultCodegenTest { @Test public void postProcessModelsEnumWithPrefixRemoved() { final DefaultCodegen codegen = new DefaultCodegen(); - Map objs = codegenModel(Arrays.asList("animal_dog", "animal_cat")); - CodegenModel cm = (CodegenModel) ((Map) ((List) objs.get("models")).get(0)).get("model"); + ModelsMap objs = codegenModel(Arrays.asList("animal_dog", "animal_cat")); + CodegenModel cm = objs.getModels().get(0).getModel(); codegen.postProcessModelsEnum(objs); @@ -795,8 +797,8 @@ public class DefaultCodegenTest { public void postProcessModelsEnumWithoutPrefixRemoved() { final DefaultCodegen codegen = new DefaultCodegen(); codegen.setRemoveEnumValuePrefix(false); - Map objs = codegenModel(Arrays.asList("animal_dog", "animal_cat")); - CodegenModel cm = (CodegenModel) ((Map) ((List) objs.get("models")).get(0)).get("model"); + ModelsMap objs = codegenModel(Arrays.asList("animal_dog", "animal_cat")); + CodegenModel cm = objs.getModels().get(0).getModel(); codegen.postProcessModelsEnum(objs); @@ -813,8 +815,8 @@ public class DefaultCodegenTest { @Test public void postProcessModelsEnumWithExtension() { final DefaultCodegen codegen = new DefaultCodegen(); - Map objs = codegenModelWithXEnumVarName(); - CodegenModel cm = (CodegenModel) ((Map) ((List) objs.get("models")).get(0)).get("model"); + ModelsMap objs = codegenModelWithXEnumVarName(); + CodegenModel cm = objs.getModels().get(0).getModel(); codegen.postProcessModelsEnum(objs); @@ -1514,10 +1516,9 @@ public class DefaultCodegenTest { assertEquals(discriminator, test); } - public CodegenModel getModel(List allModels, String modelName) { - for (Object obj: allModels) { - HashMap hm = (HashMap) obj; - CodegenModel cm = (CodegenModel) hm.get("model"); + public CodegenModel getModel(List allModels, String modelName) { + for (ModelMap obj: allModels) { + CodegenModel cm = obj.getModel(); if (modelName.equals(cm.name)) { return cm; } @@ -1546,7 +1547,7 @@ public class DefaultCodegenTest { // because children are assigned in config.updateAllModels which is invoked in generator.generateModels List files = new ArrayList<>(); List filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); - List allModels = new ArrayList<>(); + List allModels = new ArrayList<>(); generator.generateModels(files, allModels, filteredSchemas); // check that the model's children contain the x-discriminator-values @@ -2017,18 +2018,17 @@ public class DefaultCodegenTest { return var; } - private Map codegenModel(List values) { + private ModelsMap codegenModel(List values) { final CodegenModel cm = new CodegenModel(); cm.isEnum = true; final HashMap allowableValues = new HashMap<>(); allowableValues.put("values", values); cm.setAllowableValues(allowableValues); cm.dataType = "String"; - Map objs = Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", cm))); - return objs; + return TestUtils.createCodegenModelWrapper(cm); } - private Map codegenModelWithXEnumVarName() { + private ModelsMap codegenModelWithXEnumVarName() { final CodegenModel cm = new CodegenModel(); cm.isEnum = true; final HashMap allowableValues = new HashMap<>(); @@ -2042,8 +2042,7 @@ public class DefaultCodegenTest { extensions.put("x-enum-descriptions", descriptions); cm.setVendorExtensions(extensions); cm.setVars(Collections.emptyList()); - Map objs = Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", cm))); - return objs; + return TestUtils.createCodegenModelWrapper(cm); } @Test diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java index c66f51825b9..d2ae77e2190 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java @@ -13,6 +13,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.responses.ApiResponses; import org.openapitools.codegen.config.CodegenConfigurator; import org.openapitools.codegen.config.GlobalSettings; +import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.utils.ModelUtils; import org.testng.Assert; import org.testng.annotations.Test; @@ -651,7 +652,7 @@ public class DefaultGeneratorTest { List files = new ArrayList<>(); List filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); - List allModels = new ArrayList<>(); + List allModels = new ArrayList<>(); generator.generateModels(files, allModels, filteredSchemas); List allOperations = new ArrayList<>(); generator.generateApis(files, allOperations, allModels); @@ -677,7 +678,7 @@ public class DefaultGeneratorTest { List files = new ArrayList<>(); List filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); - List allModels = new ArrayList<>(); + List allModels = new ArrayList<>(); generator.generateModels(files, allModels, filteredSchemas); List allOperations = new ArrayList<>(); generator.generateApis(files, allOperations, allModels); @@ -759,7 +760,7 @@ public class DefaultGeneratorTest { List files = new ArrayList<>(); List filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); - List allModels = new ArrayList<>(); + List allModels = new ArrayList<>(); // The bug causes a StackOverflowError when calling generateModels generator.generateModels(files, allModels, filteredSchemas); // all fine, we have passed diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java index 872029cf3de..9b53ebe6266 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java @@ -21,6 +21,8 @@ import io.swagger.v3.parser.core.models.ParseOptions; import org.apache.commons.io.IOUtils; import org.openapitools.codegen.MockDefaultGenerator.WrittenTemplateBasedFile; import org.openapitools.codegen.java.assertions.JavaFileAssert; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openrewrite.maven.internal.RawPom; import org.testng.Assert; @@ -32,6 +34,7 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -335,4 +338,14 @@ public class TestUtils { .toProperty() .toType(); } + + public static ModelsMap createCodegenModelWrapper(CodegenModel cm) { + ModelsMap objs = new ModelsMap(); + List modelMaps = new ArrayList<>(); + ModelMap modelMap = new ModelMap(); + modelMap.setModel(cm); + modelMaps.add(modelMap); + objs.setModels(modelMaps); + return objs; + } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/DartModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/DartModelTest.java index 5d76dbcac8e..05baceabee2 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/DartModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/DartModelTest.java @@ -17,6 +17,8 @@ package org.openapitools.codegen.dart; +import static org.openapitools.codegen.TestUtils.createCodegenModelWrapper; + import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.media.*; @@ -460,7 +462,7 @@ public class DartModelTest { OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); codegen.setOpenAPI(openAPI); final CodegenModel cm = codegen.fromModel("sample", model); - codegen.postProcessModels(Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", cm)))); + codegen.postProcessModels(createCodegenModelWrapper(cm)); final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "testStringEnum"); @@ -523,7 +525,7 @@ public class DartModelTest { OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); codegen.setOpenAPI(openAPI); final CodegenModel cm = codegen.fromModel("sample", model); - codegen.postProcessModels(Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", cm)))); + codegen.postProcessModels(createCodegenModelWrapper(cm)); final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "testIntEnum"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/fsharp/FSharpServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/fsharp/FSharpServerCodegenTest.java index c53b804c852..a62bb0013c4 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/fsharp/FSharpServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/fsharp/FSharpServerCodegenTest.java @@ -15,12 +15,15 @@ */ package org.openapitools.codegen.fsharp; +import static org.openapitools.codegen.TestUtils.createCodegenModelWrapper; + import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.languages.AbstractFSharpCodegen; import org.openapitools.codegen.languages.FsharpGiraffeServerCodegen; +import org.openapitools.codegen.model.ModelsMap; import org.testng.Assert; import org.testng.annotations.Test; -import java.util.Collections; + import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -34,33 +37,33 @@ public class FSharpServerCodegenTest { final AbstractFSharpCodegen codegen = new P_AbstractFSharpCodegen(); final CodegenModel wheel = new CodegenModel(); - wheel.setImports(new HashSet(Arrays.asList())); + wheel.setImports(new HashSet<>(Arrays.asList())); wheel.setClassname("wheel"); final CodegenModel bike = new CodegenModel(); - bike.setImports(new HashSet(Arrays.asList("wheel"))); + bike.setImports(new HashSet<>(Arrays.asList("wheel"))); bike.setClassname("bike"); final CodegenModel parent = new CodegenModel(); - parent.setImports(new HashSet(Arrays.asList("bike", "car"))); + parent.setImports(new HashSet<>(Arrays.asList("bike", "car"))); parent.setClassname("parent"); final CodegenModel car = new CodegenModel(); - car.setImports(new HashSet(Arrays.asList("wheel"))); + car.setImports(new HashSet<>(Arrays.asList("wheel"))); car.setClassname("car"); final CodegenModel child = new CodegenModel(); - child.setImports(new HashSet(Arrays.asList("car", "bike", "parent"))); + child.setImports(new HashSet<>(Arrays.asList("car", "bike", "parent"))); child.setClassname("child"); - Map models = new HashMap(); - models.put("parent", Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", parent)))); - models.put("child", Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", child)))); - models.put("car", Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", car)))); - models.put("bike", Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", bike)))); - models.put("wheel", Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", wheel)))); + Map models = new HashMap<>(); + models.put("parent", createCodegenModelWrapper(parent)); + models.put("child", createCodegenModelWrapper(child)); + models.put("car", createCodegenModelWrapper(car)); + models.put("bike", createCodegenModelWrapper(bike)); + models.put("wheel", createCodegenModelWrapper(wheel)); - Map sorted = codegen.postProcessDependencyOrders(models); + Map sorted = codegen.postProcessDependencyOrders(models); Object[] keys = sorted.keySet().toArray(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java index 1a27e46dbf2..d72e170b004 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java @@ -16,12 +16,12 @@ import org.testng.Assert; import org.testng.annotations.Test; import java.io.File; -import java.util.Collections; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import static org.openapitools.codegen.CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.*; +import static org.openapitools.codegen.TestUtils.createCodegenModelWrapper; import static org.testng.Assert.*; public class AbstractKotlinCodegenTest { @@ -265,7 +265,7 @@ public class AbstractKotlinCodegenTest { Assert.assertEquals(codegen.getTypeDeclaration("MyResponse"), "MyResponse"); // We need to postProcess the model for enums to be processed - codegen.postProcessModels(Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", cm1)))); + codegen.postProcessModels(createCodegenModelWrapper(cm1)); // Assert the enum default value is properly generated CodegenProperty cp1 = cm1.vars.get(0); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ktorm/KtormSchemaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ktorm/KtormSchemaCodegenTest.java index f8285da45c3..e62f1a7b565 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ktorm/KtormSchemaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ktorm/KtormSchemaCodegenTest.java @@ -16,6 +16,8 @@ package org.openapitools.codegen.ktorm; +import static org.openapitools.codegen.TestUtils.createCodegenModelWrapper; + import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.TestUtils; @@ -27,23 +29,10 @@ import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.media.*; import io.swagger.v3.parser.util.SchemaTypeUtil; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.Map; public class KtormSchemaCodegenTest { - private Map toObjs(CodegenModel cm) { - Map objs = new HashMap(); - List models = new ArrayList(); - Map model = new HashMap<>(); - model.put("model", cm); - models.add(model); - objs.put("models", models); - return objs; - } - private CodegenModel getModel(Schema schema, String pkName, Boolean surrogateKey) { final KtormSchemaCodegen codegen = new KtormSchemaCodegen(); OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", schema); @@ -51,7 +40,7 @@ public class KtormSchemaCodegenTest { codegen.setPrimaryKeyConvention(pkName); codegen.setOpenAPI(openAPI); CodegenModel cm = codegen.fromModel("sample", schema); - codegen.postProcessModels(toObjs(cm)); + codegen.postProcessModels(createCodegenModelWrapper(cm)); return cm; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/AbstractPhpCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/AbstractPhpCodegenTest.java index ea7ef67bfcf..5f7c52e5420 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/AbstractPhpCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/AbstractPhpCodegenTest.java @@ -32,7 +32,6 @@ import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; public class AbstractPhpCodegenTest { @@ -160,7 +159,7 @@ public class AbstractPhpCodegenTest { Assert.assertEquals(codegen.getTypeDeclaration("MyResponse"), "\\php\\Model\\MyResponse"); // We need to postProcess the model for enums to be processed - codegen.postProcessModels(Collections.singletonMap("models", Collections.singletonList(Collections.singletonMap("model", cm1)))); + codegen.postProcessModels(TestUtils.createCodegenModelWrapper(cm1)); // Assert the enum default value is properly generated CodegenProperty cp1 = cm1.vars.get(0); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/plantuml/PlantumlDocumentationCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/plantuml/PlantumlDocumentationCodegenTest.java index ff4b4648b84..6e96ae888d1 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/plantuml/PlantumlDocumentationCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/plantuml/PlantumlDocumentationCodegenTest.java @@ -6,6 +6,8 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.PlantumlDocumentationCodegen; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.testng.Assert; import org.testng.annotations.Test; @@ -234,11 +236,11 @@ public class PlantumlDocumentationCodegenTest { } private Map createObjectsMapFor(CodegenModel... codegenModels) { - List> modelsList = new ArrayList(); + List modelsList = new ArrayList<>(); for (CodegenModel codegenModel: codegenModels) { - Map modelMap = new HashMap<>(); - modelMap.put("model", codegenModel); + ModelMap modelMap = new ModelMap(); + modelMap.setModel(codegenModel); modelsList.add(modelMap); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java index 6df13d473eb..5ef7c843373 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java @@ -24,6 +24,7 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.io.FileUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.RubyClientCodegen; +import org.openapitools.codegen.model.ModelMap; import org.testng.Assert; import org.testng.annotations.Test; @@ -159,8 +160,8 @@ public class RubyClientCodegenTest { final Operation p = openAPI.getPaths().get(path).getPost(); Schema schema = openAPI.getComponents().getSchemas().get("Pet"); CodegenModel model = codegen.fromModel("Pet", schema); - Map modelMap = new HashMap<>(); - modelMap.put("model", model); + ModelMap modelMap = new ModelMap(); + modelMap.setModel(model); final CodegenOperation op = codegen.fromOperation(path, "post", p, null); Map operations = ImmutableMap.of("operation", Collections.singletonList(op)); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java index 55d068f46cd..4d3913862e8 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java @@ -11,6 +11,7 @@ import org.testng.annotations.Test; import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; import java.util.HashMap; @@ -45,7 +46,7 @@ public class SharedTypeScriptTest { private void checkAPIFile(List files, String apiFileName) throws IOException { File apiFile = files.stream().filter(file->file.getName().contains(apiFileName)).findFirst().get(); - String apiFileContent = FileUtils.readFileToString(apiFile); + String apiFileContent = FileUtils.readFileToString(apiFile, StandardCharsets.UTF_8); Assert.assertTrue(!apiFileContent.contains("import { OrganizationWrapper | PersonWrapper }")); Assert.assertEquals(StringUtils.countMatches(apiFileContent,"import { PersonWrapper }"),1); Assert.assertEquals(StringUtils.countMatches(apiFileContent,"import { OrganizationWrapper }"),1); @@ -65,7 +66,7 @@ public class SharedTypeScriptTest { config.setGeneratorName("typescript-angular"); final List files = getGenerator(config).generate(); File pets = files.stream().filter(file->file.getName().contains("pet.ts")).findFirst().get(); - String apiFileContent = FileUtils.readFileToString(pets); + String apiFileContent = FileUtils.readFileToString(pets, StandardCharsets.UTF_8); Assert.assertTrue(apiFileContent.contains("import { Category }")); Assert.assertTrue(apiFileContent.contains("import { Tag }")); diff --git a/samples/meta-codegen-kotlin/lib/src/main/kotlin/com/my/company/codegen/MyclientcodegenGenerator.kt b/samples/meta-codegen-kotlin/lib/src/main/kotlin/com/my/company/codegen/MyclientcodegenGenerator.kt index 3ca0a620f9d..fa12a98b02f 100644 --- a/samples/meta-codegen-kotlin/lib/src/main/kotlin/com/my/company/codegen/MyclientcodegenGenerator.kt +++ b/samples/meta-codegen-kotlin/lib/src/main/kotlin/com/my/company/codegen/MyclientcodegenGenerator.kt @@ -2,6 +2,7 @@ package com.my.company.codegen import org.openapitools.codegen.* +import org.openapitools.codegen.model.ModelMap; import java.util.* import java.io.File @@ -36,7 +37,7 @@ open class MyclientcodegenGenerator() : DefaultCodegen(), CodegenConfig { * Provides an opportunity to inspect and modify operation data before the code is generated. */ @Suppress("UNCHECKED_CAST") - override fun postProcessOperationsWithModels(objs: Map, allModels: List?): Map { + override fun postProcessOperationsWithModels(objs: Map, allModels: List?): Map { val results = super.postProcessOperationsWithModels(objs, allModels) val ops = results["operations"] as Map @@ -180,4 +181,4 @@ open class MyclientcodegenGenerator() : DefaultCodegen(), CodegenConfig { //TODO: check that this logic is safe to escape quotation mark to avoid code injection return with(input) { replace("\"", "\\\"") } } -} \ No newline at end of file +} diff --git a/samples/meta-codegen/lib/src/main/java/com/my/company/codegen/MyclientcodegenGenerator.java b/samples/meta-codegen/lib/src/main/java/com/my/company/codegen/MyclientcodegenGenerator.java index 9f3c524b31a..4921a12ce3a 100644 --- a/samples/meta-codegen/lib/src/main/java/com/my/company/codegen/MyclientcodegenGenerator.java +++ b/samples/meta-codegen/lib/src/main/java/com/my/company/codegen/MyclientcodegenGenerator.java @@ -1,6 +1,7 @@ package com.my.company.codegen; import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; import io.swagger.models.properties.*; import java.util.*; @@ -37,7 +38,7 @@ public class MyclientcodegenGenerator extends DefaultCodegen implements CodegenC */ @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public Map postProcessOperationsWithModels(Map objs, List allModels) { // to try debugging your code generator: // set a break point on the next line.