Replace maps with models to reduce casting (#11913)

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

View File

@ -37,7 +37,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.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"})

View File

@ -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;

View File

@ -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<String, List<CodegenOperation>> operations);
Map<String, Object> updateAllModels(Map<String, Object> objs);
Map<String, ModelsMap> updateAllModels(Map<String, ModelsMap> objs);
void postProcess();
Map<String, Object> postProcessAllModels(Map<String, Object> objs);
Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs);
Map<String, Object> postProcessModels(Map<String, Object> objs);
ModelsMap postProcessModels(ModelsMap objs);
Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels);
Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels);
Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs);

View File

@ -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<String, Object> postProcessAllModels(Map<String, Object> objs) {
@SuppressWarnings("static-method")
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
if (this.useOneOfInterfaces) {
// First, add newly created oneOf interfaces
for (CodegenModel cm : addOneOfInterfaces) {
Map<String, Object> modelValue = new HashMap<>(additionalProperties());
modelValue.put("model", cm);
ModelMap modelMapValue = new ModelMap(additionalProperties());
modelMapValue.setModel(cm);
List<Map<String, String>> importsValue = new ArrayList<>();
Map<String, Object> 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<String, OneOfImplementorAdditionalData> additionalDataMap = new HashMap<>();
for (Map.Entry<String, Object> modelsEntry : objs.entrySet()) {
Map<String, Object> modelsAttrs = (Map<String, Object>) modelsEntry.getValue();
List<Object> models = (List<Object>) modelsAttrs.get("models");
List<Map<String, String>> modelsImports = (List<Map<String, String>>) modelsAttrs.getOrDefault("imports", new ArrayList<Map<String, String>>());
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
for (ModelsMap modelsAttrs : objs.values()) {
List<Map<String, String>> 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<String, Object> modelsEntry : objs.entrySet()) {
Map<String, Object> modelsAttrs = (Map<String, Object>) modelsEntry.getValue();
List<Object> models = (List<Object>) modelsAttrs.get("models");
List<Map<String, String>> imports = (List<Map<String, String>>) modelsAttrs.get("imports");
for (Object _implmo : models) {
Map<String, Object> implmo = (Map<String, Object>) _implmo;
CodegenModel implcm = (CodegenModel) implmo.get("model");
for (Map.Entry<String, ModelsMap> modelsEntry : objs.entrySet()) {
ModelsMap modelsAttrs = modelsEntry.getValue();
List<Map<String, String>> 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<String, CodegenModel> getAllModels(Map<String, Object> objs) {
public Map<String, CodegenModel> getAllModels(Map<String, ModelsMap> objs) {
Map<String, CodegenModel> allModels = new HashMap<>();
for (Entry<String, Object> entry : objs.entrySet()) {
for (Entry<String, ModelsMap> entry : objs.entrySet()) {
String modelName = toModelName(entry.getKey());
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
List<ModelMap> 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<String, Object> updateAllModels(Map<String, Object> objs) {
public Map<String, ModelsMap> updateAllModels(Map<String, ModelsMap> objs) {
Map<String, CodegenModel> 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<String, Object> entry : objs.entrySet()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> 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<String, Object> postProcessModels(Map<String, Object> 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<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
return objs;
}

View File

@ -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<File> files, List<Object> allModels, List<String> unusedModels) {
void generateModels(List<File> files, List<ModelMap> allModels, List<String> 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<String, Object> allProcessedModels = new TreeMap<>((o1, o2) -> ObjectUtils.compare(config.toModelName(o1), config.toModelName(o2)));
Map<String, ModelsMap> allProcessedModels = new TreeMap<>((o1, o2) -> ObjectUtils.compare(config.toModelName(o1), config.toModelName(o2)));
Boolean skipFormModel = GlobalSettings.getProperty(CodegenConstants.SKIP_FORM_MODEL) != null ?
Boolean.valueOf(GlobalSettings.getProperty(CodegenConstants.SKIP_FORM_MODEL)) :
@ -484,7 +485,7 @@ public class DefaultGenerator implements Generator {
Map<String, Schema> schemaMap = new HashMap<>();
schemaMap.put(name, schema);
Map<String, Object> 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<String, Object> models = (Map<String, Object>) 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<Object> modelList = (List<Object>) models.get("models");
List<ModelMap> modelList = models.getModels();
if (modelList != null && !modelList.isEmpty()) {
Map<String, Object> modelTemplate = (Map<String, Object>) 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<File> files, List<Object> allOperations, List<Object> allModels) {
void generateApis(List<File> files, List<Object> allOperations, List<ModelMap> 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<String, Object> buildSupportFileBundle(List<Object> allOperations, List<Object> allModels) {
Map<String, Object> buildSupportFileBundle(List<Object> allOperations, List<ModelMap> allModels) {
Map<String, Object> bundle = new HashMap<>(config.additionalProperties());
bundle.put("apiPackage", config.apiPackage());
@ -787,8 +788,7 @@ public class DefaultGenerator implements Generator {
}
for (int i = 0; i < allModels.size() - 1; i++) {
HashMap<String, CodegenModel> cm = (HashMap<String, CodegenModel>) 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<File> files = new ArrayList<>();
// models
List<String> filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI);
List<Object> allModels = new ArrayList<>();
List<ModelMap> allModels = new ArrayList<>();
generateModels(files, allModels, filteredSchemas);
// apis
List<Object> allOperations = new ArrayList<>();
@ -1170,8 +1170,7 @@ public class DefaultGenerator implements Generator {
return parameter.getName() + ":" + parameter.getIn();
}
@SuppressWarnings("unchecked")
private Map<String, Object> processOperations(CodegenConfig config, String tag, List<CodegenOperation> ops, List<Object> allModels) {
private Map<String, Object> processOperations(CodegenConfig config, String tag, List<CodegenOperation> ops, List<ModelMap> allModels) {
Map<String, Object> operations = new HashMap<>();
Map<String, Object> objs = new HashMap<>();
objs.put("classname", config.toApiName(tag));
@ -1257,10 +1256,10 @@ public class DefaultGenerator implements Generator {
return result;
}
private Map<String, Object> processModels(CodegenConfig config, Map<String, Schema> definitions) {
Map<String, Object> objs = new HashMap<>();
private ModelsMap processModels(CodegenConfig config, Map<String, Schema> definitions) {
ModelsMap objs = new ModelsMap();
objs.put("package", config.modelPackage());
List<Object> models = new ArrayList<>();
List<ModelMap> modelMaps = new ArrayList<>();
Set<String> allImports = new LinkedHashSet<>();
for (Map.Entry<String, Schema> 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<String, Object> 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<String> 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;
}

View File

@ -34,6 +34,8 @@ import org.openapitools.codegen.meta.features.GlobalFeature;
import org.openapitools.codegen.meta.features.SchemaSupportFeature;
import org.openapitools.codegen.meta.features.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<Map<String, Object>> orderedModels;
protected List<ModelMap> orderedModels;
protected final Map<String, List<String>> modelDepends;
protected final Map<String, String> nullableTypeMapping;
protected final Map<String, String> operationsScopes;
@ -605,7 +607,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
@SuppressWarnings("unchecked")
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
@ -676,43 +678,39 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// Collect the model dependencies.
List<Map<String, Object>> models = (List<Map<String, Object>>) objs.get("models");
for (Map<String, Object> model : models) {
Object v = model.get("model");
if (v instanceof CodegenModel) {
CodegenModel m = (CodegenModel) v;
List<String> 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_<T> 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<String> 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_<T> 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<Map<String, Object>> revisedOrderedModels = new ArrayList<>();
List<ModelMap> revisedOrderedModels = new ArrayList<>();
List<String> collectedModelNames = new ArrayList<>();
int sizeOrderedModels = orderedModels.size();
for (int i = 0; i < sizeOrderedModels; i++) {
Map<String, Object> independentModel = null;
ModelMap independentModel = null;
String independentModelName = null;
for (Map<String, Object> 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)) {

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs);
}

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessAllModels(Map<String, Object> objs) {
final Map<String, Object> processed = super.postProcessAllModels(objs);
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
final Map<String, ModelsMap> 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<String, Object> models) {
private void postProcessEnumRefs(final Map<String, ModelsMap> models) {
Map<String, CodegenModel> enumRefs = new HashMap<>();
for (Map.Entry<String, Object> entry : models.entrySet()) {
for (Map.Entry<String, ModelsMap> entry : models.entrySet()) {
CodegenModel model = ModelUtils.getModelByName(entry.getKey(), models);
if (model.isEnum) {
enumRefs.put(entry.getKey(), model);
}
}
for (Map.Entry<String, Object> 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<String, Object> models) {
for (Map.Entry<String, Object> entry : models.entrySet()) {
String openAPIName = entry.getKey();
protected void updateValueTypeProperty(Map<String, ModelsMap> 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<String, Object> models) {
for (Map.Entry<String, Object> entry : models.entrySet()) {
String openAPIName = entry.getKey();
protected void updateNullableTypeProperty(Map<String, ModelsMap> 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
if (objs != null) {
Map<String, Object> operations = (Map<String, Object>) 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<String, CodegenModel>) 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<CodegenParameter> parameters, List<Object> allModels) {
private void updateCodegenParametersEnum(List<CodegenParameter> parameters, List<ModelMap> allModels) {
for (CodegenParameter parameter : parameters) {
CodegenModel model = null;
for (Object modelHashMap : allModels) {
CodegenModel codegenModel = ((HashMap<String, CodegenModel>) modelHashMap).get("model");
for (ModelMap modelHashMap : allModels) {
CodegenModel codegenModel = modelHashMap.getModel();
if (codegenModel.getClassname().equals(parameter.dataType)) {
model = codegenModel;
break;

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessAllModels(Map<String, Object> objs){
Map<String, Object> models = super.postProcessAllModels(objs);
for (final Entry<String, Object> model : models.entrySet()) {
CodegenModel mo = ModelUtils.getModelByName(model.getKey(), models);
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs){
Map<String, ModelsMap> 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<String, Object> objs) {
List<String> forwardDeclarations = new ArrayList<String>();
private void addForwardDeclarations(CodegenModel parentModel, Map<String, ModelsMap> objs) {
List<String> 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<String, Object> 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;
}

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs);
}
@ -559,7 +560,7 @@ public abstract class AbstractDartCodegen extends DefaultCodegen {
}
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) {

View File

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

View File

@ -25,6 +25,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessAllModels(Map<String, Object> objs) {
final Map<String, Object> processed = super.postProcessAllModels(objs);
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
final Map<String, ModelsMap> 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<String, Object> postProcessDependencyOrders(final Map<String, Object> objs) {
public Map<String, ModelsMap> postProcessDependencyOrders(final Map<String, ModelsMap> objs) {
Map<String, Set<String>> dependencies = new HashMap<>();
@ -381,7 +380,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
}
}
Map<String, Object> sorted = new LinkedHashMap<>();
Map<String, ModelsMap> sorted = new LinkedHashMap<>();
for (int i = sortedKeys.length - 1; i >= 0; i--) {
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<String, Object> models) {
private void postProcessEnumRefs(final Map<String, ModelsMap> models) {
Map<String, CodegenModel> enumRefs = new HashMap<>();
for (Map.Entry<String, Object> 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<String, Object> 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
if (objs != null) {
Map<String, Object> operations = (Map<String, Object>) 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<String, CodegenModel>) modelHashMap).get("model");
for (ModelMap modelHashMap : allModels) {
CodegenModel codegenModel = modelHashMap.getModel();
if (codegenModel.getClassname().equals(parameter.dataType)) {
model = codegenModel;
break;

View File

@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked")
@ -608,9 +610,9 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid error
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> imports = objs.getImports();
final String prefix = modelPackage();
Iterator<Map<String, String>> 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<Map<String, Object>> models = (List<Map<String, Object>>) objs.get("models");
for (Map<String, Object> 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<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null)
return objs;

View File

@ -20,6 +20,7 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations");
for (CodegenOperation op : (List<CodegenOperation>) objs.get("operation")) {

View File

@ -34,6 +34,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*;
import org.openapitools.codegen.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<String, Object> postProcessAllModels(Map<String, Object> objs) {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
objs = super.postProcessAllModels(objs);
objs = super.updateAllModels(objs);
@ -1314,9 +1316,9 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// recursively add import for mapping one type to multiple imports
List<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> 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<Map<String, Object>> models = (List<Map<String, Object>>) objs.get("models");
for (Map<String, Object> 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<String>());
((ArrayList<String>) cm.getVendorExtensions().get("x-implements")).add("Serializable");
@ -1346,7 +1347,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
}
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// Remove imports of List, ArrayList, Map and HashMap as they are
// imported in the template already.
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");

View File

@ -24,6 +24,7 @@ import io.swagger.v3.oas.models.PathItem;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> updatedObjs = jaxrsPostProcessOperations(objs);
Map<String, Object> operations = (Map<String, Object>) updatedObjs.get("operations");
if (operations != null) {

View File

@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.media.StringSchema;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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;

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models
return postProcessModelsEnum(objs);
}
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) {

View File

@ -32,6 +32,8 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models
return postProcessModelsEnum(objs);
}
@Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
Map<String, Object> result = super.postProcessAllModels(objs);
for (Map.Entry<String, Object> entry : result.entrySet()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
Map<String, ModelsMap> 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

View File

@ -26,6 +26,7 @@ import io.swagger.v3.oas.models.media.StringSchema;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid warnings for importing class in the same package in Scala
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> imports = objs.getImports();
final String prefix = modelPackage() + ".";
Iterator<Map<String, String>> iterator = imports.iterator();
while (iterator.hasNext()) {

View File

@ -29,6 +29,8 @@ import org.openapitools.codegen.CodegenConstants.MODEL_PROPERTY_NAMING_TYPE;
import org.openapitools.codegen.CodegenConstants.PARAM_NAMING_TYPE;
import org.openapitools.codegen.*;
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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models
List<Object> models = (List<Object>) postProcessModelsEnum(objs).get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
cm.imports = new TreeSet(cm.imports);
List<ModelMap> 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<String, Object> postProcessAllModels(Map<String, Object> objs) {
Map<String, Object> result = super.postProcessAllModels(objs);
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
Map<String, ModelsMap> result = super.postProcessAllModels(objs);
for (Map.Entry<String, Object> entry : result.entrySet()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> 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));

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
List<CodegenOperation> newOpList = new ArrayList<CodegenOperation>();

View File

@ -23,6 +23,7 @@ import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.parser.util.SchemaTypeUtil;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
// We need to postprocess the operations to add proper consumes tags and fix form file handling
if (objs != null) {

View File

@ -21,11 +21,12 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs);
}

View File

@ -26,7 +26,7 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.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.*;

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models
return postProcessModelsEnum(objs);
}

View File

@ -25,6 +25,8 @@ import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.servers.Server;
import 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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
// add implements for serializable/parcelable to all models
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessAllModels(Map<String, Object> objs) {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> 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<CodegenModel> allModels = new ArrayList<CodegenModel>();
for (Map.Entry<String, Object> entry : objs.entrySet()) {
CodegenModel model = ModelUtils.getModelByName(entry.getKey(), objs);
ArrayList<CodegenModel> allModels = new ArrayList<>();
for (String key : objs.keySet()) {
CodegenModel model = ModelUtils.getModelByName(key, objs);
allModels.add(model);
}

View File

@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.ComposedSchema;
import io.swagger.v3.oas.models.media.Schema;
import 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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
// add implements for serializable/parcelable to all models
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations");
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation");
for (CodegenOperation op : ops) {

View File

@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) {
@ -125,7 +127,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs);
}

View File

@ -25,6 +25,7 @@ import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
String classname = (String) operations.get("classname");
operations.put("classnameSnakeUpperCase", underscore(classname).toUpperCase(Locale.ROOT));

View File

@ -6,6 +6,7 @@ import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
Map<String, CodegenModel> codegenModels = new HashMap<>();
for (Object moObj : allModels) {
CodegenModel mo = ((Map<String, CodegenModel>) moObj).get("model");
for (ModelMap moObj : allModels) {
CodegenModel mo = moObj.getModel();
if (mo.isEnum) {
codegenModels.put(mo.classname, mo);
}

View File

@ -27,6 +27,8 @@ import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) {
@ -457,13 +459,13 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
}
@Override
public Map<String, Object> postProcessAllModels(final Map<String, Object> models) {
final Map<String, Object> processed = super.postProcessAllModels(models);
public Map<String, ModelsMap> postProcessAllModels(final Map<String, ModelsMap> models) {
final Map<String, ModelsMap> processed = super.postProcessAllModels(models);
postProcessParentModels(models);
return processed;
}
private void postProcessParentModels(final Map<String, Object> models) {
private void postProcessParentModels(final Map<String, ModelsMap> models) {
for (final String parent : parentModels) {
final CodegenModel parentModel = ModelUtils.getModelByName(parent, models);
final Collection<CodegenModel> childrenModels = childrenByParent.get(parent);

View File

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

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.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<String, Object> postProcessModels(Map<String, Object> 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
HashMap<String, Integer> processedModelMaps = new HashMap<>();
for (Object o : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o;
CodegenModel m = (CodegenModel) h.get("model");
for (ModelMap modelMap : allModels) {
CodegenModel m = modelMap.getModel();
modelMaps.put(m.classname, m);
}

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.parser.util.SchemaTypeUtil;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
// We need to postprocess the operations to add proper consumes tags and fix form file handling
if (objs != null) {

View File

@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
List<ModelMap> models = objs.getModels();
ProcessUtils.addIndexToProperties(models, 1);
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.config.GlobalSettings;
import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
List<ModelMap> models = objs.getModels();
ProcessUtils.addIndexToProperties(models, 1);
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

View File

@ -20,6 +20,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
List<ModelMap> models = objs.getModels();
ProcessUtils.addIndexToProperties(models, 1);
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
for (ModelMap mo : models) {
Set<String> 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");

View File

@ -27,6 +27,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) super.postProcessOperationsWithModels(objs, allModels).get("operations");
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation");
List<ExtendedCodegenOperation> newOs = new ArrayList<>();

View File

@ -26,6 +26,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessAllModels(final Map<String, Object> orgObjs) {
final Map<String, Object> objs = super.postProcessAllModels(orgObjs);
public Map<String, ModelsMap> postProcessAllModels(final Map<String, ModelsMap> orgObjs) {
final Map<String, ModelsMap> objs = super.postProcessAllModels(orgObjs);
// put all models in one file
final Map<String, Object> objects = new HashMap<>();
final Map<String, Object> dataObj = objs.values().stream()
.map(obj -> (Map<String, Object>) obj)
final Map<String, ModelsMap> objects = new HashMap<>();
final ModelsMap dataObj = objs.values().stream()
.findFirst()
.orElse(new HashMap<>());
final List<Map<String, Object>> models = objs.values().stream()
.map(obj -> (Map<String, Object>) obj)
.flatMap(obj -> ((List<Map<String, Object>>) obj.get("models")).stream())
.orElse(new ModelsMap());
final List<ModelMap> 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<Map<String, Object>> models, final Predicate<CodegenProperty> predicate) {
private boolean anyVarMatches(final List<ModelMap> models, final Predicate<CodegenProperty> 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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs);
}
private static boolean anyOperationParam(final List<CodegenOperation> operations, final Predicate<CodegenParameter> predicate) {
return operations.stream()
.flatMap(operation -> operation.allParams.stream())
.filter(predicate)
.findAny()
.isPresent();
.anyMatch(predicate);
}
private static boolean anyOperationResponse(final List<CodegenOperation> operations, final Predicate<CodegenResponse> predicate) {
return operations.stream()
.flatMap(operation -> operation.responses.stream())
.filter(predicate)
.findAny()
.isPresent();
.anyMatch(predicate);
}
@Override
@SuppressWarnings({"static-method", "unchecked"})
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations");
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation");
ops.forEach(op -> {

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation");
List<ExtendedCodegenOperation> newOs = new ArrayList<ExtendedCodegenOperation>();

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation");
List<ExtendedCodegenOperation> newOs = new ArrayList<>();

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) {

View File

@ -27,6 +27,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// The superclass determines the list of required golang imports. The actual list of imports
// 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<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> imports = objs.getImports();
List<Map<String, Object>> models = (List<Map<String, Object>>) objs.get("models");
for (Map<String, Object> 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>();
HashMap<String, Integer> processedModelMaps = new HashMap<String, Integer>();
for (Object o : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o;
CodegenModel m = (CodegenModel) h.get("model");
for (ModelMap modelMap : allModels) {
CodegenModel m = modelMap.getModel();
modelMaps.put(m.classname, m);
}

View File

@ -20,6 +20,7 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");

View File

@ -22,6 +22,7 @@ import org.openapitools.codegen.CodegenOperation;
import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");

View File

@ -21,6 +21,7 @@ import io.swagger.v3.oas.models.media.ComposedSchema;
import io.swagger.v3.oas.models.media.Schema;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
@SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");

View File

@ -32,6 +32,7 @@ import org.openapitools.codegen.meta.features.ParameterFeature;
import org.openapitools.codegen.meta.features.SchemaSupportFeature;
import org.openapitools.codegen.meta.features.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<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations");
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation");
for (CodegenOperation op : ops) {

View File

@ -23,11 +23,13 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.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<String, Object> postProcessAllModels(Map<String, Object> objs) {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
updateGlobalAdditionalProps();
return super.postProcessAllModels(objs);
}
@ -807,7 +809,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
}
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> ret = super.postProcessOperationsWithModels(objs, allModels);
HashMap<String, Object> pathOps = (HashMap<String, Object>) ret.get("operations");
ArrayList<CodegenOperation> ops = (ArrayList<CodegenOperation>) pathOps.get("operation");
@ -817,9 +819,8 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
updateGlobalAdditionalProps();
for (Object o : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o;
CodegenModel m = (CodegenModel) h.get("model");
for (ModelMap modelMap : allModels) {
CodegenModel m = modelMap.getModel();
if (modelMimeTypes.containsKey(m.classname)) {
Set<String> mimeTypes = modelMimeTypes.get(m.classname);
@ -1269,12 +1270,9 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
Map<String, Object> objsEnum = super.postProcessModelsEnum(objs);
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
ModelsMap objsEnum = super.postProcessModelsEnum(objs);
if (genEnums) {
List<Object> models = (List<Object>) objsEnum.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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);

View File

@ -23,6 +23,7 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.languages.features.GzipTestFeatures;
import org.openapitools.codegen.languages.features.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
return AbstractJavaJAXRSServerCodegen.jaxrsPostProcessOperations(objs);
}

View File

@ -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<String, Object> postProcessAllModels(Map<String, Object> objs) {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> 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<String, Object> inner = (Map<String, Object>) value;
@SuppressWarnings("unchecked")
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> mo : models)
postProcessModel((CodegenModel) mo.get("model"));
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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> result = super.postProcessOperationsWithModels(objs, allModels);
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<String, CodegenModel> models = new HashMap<>();
for (Object model : allModels) {
@SuppressWarnings("unchecked")
CodegenModel cgModel = ((Map<String, CodegenModel>) model).get("model");
for (ModelMap model : allModels) {
CodegenModel cgModel = model.getModel();
models.put(cgModel.classname, cgModel);
}

View File

@ -27,6 +27,8 @@ import org.openapitools.codegen.languages.features.GzipFeatures;
import org.openapitools.codegen.languages.features.PerformBeanValidationFeatures;
import org.openapitools.codegen.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
if (RETROFIT_2.equals(getLibrary())) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -797,15 +799,13 @@ public class JavaClientCodegen extends AbstractJavaCodegen
}
@Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
//Needed import for Gson based libraries
if (additionalProperties.containsKey(SERIALIZATION_LIBRARY_GSON)) {
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
List<ModelMap> models = objs.getModels();
if (additionalProperties.containsKey(SERIALIZATION_LIBRARY_JACKSON) && !JERSEY1.equals(getLibrary())) {
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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<String, String> importsSet = new HashMap<String, String>();
Map<String, String> importsSet = new HashMap<>();
importsSet.put("import", "java.util.Set");
imports.add(importsSet);
Map<String, String> importsHashSet = new HashMap<String, String>();
Map<String, String> 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<String, String> entry : imports2Classnames.entrySet()) {
cm.imports.add(entry.getKey());
Map<String, String> importsItem = new HashMap<String, String>();
Map<String, String> 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<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
for (ModelMap mo : models) {
CodegenModel cm = mo.getModel();
cm.getVendorExtensions().putIfAbsent("x-implements", new ArrayList<String>());
if (JERSEY2.equals(getLibrary()) || NATIVE.equals(getLibrary()) || OKHTTP_GSON.equals(getLibrary())) {

View File

@ -23,6 +23,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*;
import org.openapitools.codegen.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
@ -185,19 +187,17 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen {
}
@Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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<String, String> item = new HashMap<String, String>();
Map<String, String> item = new HashMap<>();
item.put("import", importMapping.get("JsonValue"));
imports.add(item);
}

View File

@ -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<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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"));

View File

@ -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<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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"));

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, CodegenModel> models = allModels.stream()
.map(v -> ((Map<String, CodegenModel>) v).get("model"))
.map(ModelMap::getModel)
.collect(Collectors.toMap(v -> v.classname, v -> v));
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
@ -389,12 +391,11 @@ public abstract class JavaMicronautAbstractCodegen extends AbstractJavaCodegen i
}
@Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
objs = super.postProcessAllModels(objs);
for (String modelName: objs.keySet()) {
CodegenModel model = ((Map<String, List<Map<String, CodegenModel>>>) 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);
}

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
// Add the controller classname to operations

View File

@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.PathItem;
import io.swagger.v3.oas.models.tags.Tag;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
@ -407,21 +409,18 @@ public class JavaPKMSTServerCodegen extends AbstractJavaCodegen {
}
@SuppressWarnings("unchecked")
@Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
// Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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<String, String> item = new HashMap<String, String>();
Map<String, String> item = new HashMap<>();
item.put("import", this.importMapping.get("JsonValue"));
imports.add(item);
}

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
import org.openapitools.codegen.*;
import org.openapitools.codegen.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) {

View File

@ -23,6 +23,8 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.languages.features.JbossFeature;
import org.openapitools.codegen.languages.features.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<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
// Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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"));

View File

@ -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<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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<String, String> item = new HashMap<String, String>();
Map<String, String> item = new HashMap<>();
item.put("import", importMapping.get("JsonValue"));
imports.add(item);
}

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
@ -167,19 +169,17 @@ public class JavaUndertowServerCodegen extends AbstractJavaCodegen {
}
@Override
public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<Map<String, String>> 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<String, String> item = new HashMap<String, String>();
Map<String, String> item = new HashMap<>();
item.put("import", importMapping.get("JsonValue"));
imports.add(item);
}

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> newObjs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) newObjs.get("operations");
if (operations != null) {

View File

@ -20,6 +20,7 @@ import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*;
import org.openapitools.codegen.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> newObjs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) newObjs.get("operations");
if (operations != null) {

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// Generate and store argument list string of each operation into
// vendor-extension: x-codegen-argList.
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -954,15 +956,12 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod
return objs;
}
@SuppressWarnings("unchecked")
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// Generate and store argument list string of each operation into
// vendor-extension: x-codegen-argList.
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -1039,15 +1041,12 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
return objs;
}
@SuppressWarnings("unchecked")
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
if (objs.get("imports") instanceof List) {
List<Map<String, String>> imports = (ArrayList<Map<String, String>>)objs.get("imports");
Collections.sort(imports, new Comparator<Map<String, String>>() {

View File

@ -23,6 +23,9 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models
List<Object> models = (List<Object>) postProcessModelsEnum(objs).get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
cm.imports = new TreeSet(cm.imports);
List<ModelMap> 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)) {

View File

@ -33,6 +33,8 @@ import org.openapitools.codegen.meta.features.ParameterFeature;
import org.openapitools.codegen.meta.features.SchemaSupportFeature;
import org.openapitools.codegen.meta.features.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<String, Object> postProcessModels(Map<String, Object> objs) {
Map<String, Object> objects = super.postProcessModels(objs);
@SuppressWarnings("unchecked") List<Object> models = (List<Object>) objs.get("models");
public ModelsMap postProcessModels(ModelsMap objs) {
ModelsMap objects = super.postProcessModels(objs);
for (Object model : models) {
@SuppressWarnings("unchecked") Map<String, Object> mo = (Map<String, Object>) 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) {

View File

@ -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<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
//Add imports for Jackson
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Object> models = (List<Object>) objs.get("models");
List<Map<String, String>> imports = objs.getImports();
models.stream()
.map(mo -> (Map<String, Object>) 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");

View File

@ -20,6 +20,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.meta.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> modelVendorExtensions = model.getVendorExtensions();
Map<String, Object> ktormSchema = new HashMap<String, Object>();
Map<String, Object> tableDefinition = new HashMap<String, Object>();
Map<String, Object> ktormSchema = new HashMap<>();
Map<String, Object> tableDefinition = new HashMap<>();
if (getIdentifierNamingConvention().equals("snake_case") && !modelName.equals(tableName)) {
// add original name in table comment

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked")
@ -449,9 +451,9 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid error
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> imports = objs.getImports();
final String prefix = modelPackage();
Iterator<Map<String, String>> 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<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null)
return objs;

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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();

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
return postProcessModelsEnum(objs);
}
@ -256,7 +258,7 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig {
}
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked")

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked")

View File

@ -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<String, Object> postProcessAllModels(Map<String, Object> superobjs) {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> superobjs) {
List<String> toRemove = new ArrayList<>();
for (Map.Entry<String, Object> modelEntry : superobjs.entrySet()) {
Map<String, Object> objs = (Map<String, Object>) modelEntry.getValue();
for (Map.Entry<String, ModelsMap> modelEntry : superobjs.entrySet()) {
// process enum in models
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
List<ModelMap> 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<String, Object> buildEnumModelWrapper(String enumName, String values) {
Map<String, Object> 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked")

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
if (operations != null) {

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked")

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked")
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
@SuppressWarnings("unchecked")

View File

@ -30,6 +30,7 @@ import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.responses.ApiResponses;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");

View File

@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) {

View File

@ -19,7 +19,7 @@ package org.openapitools.codegen.languages;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
addUserClassnameToOperations(operations);

View File

@ -20,12 +20,13 @@ package org.openapitools.codegen.languages;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
addUserClassnameToOperations(operations);

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
@ -447,12 +449,11 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
objs = super.postProcessModels(objs);
ArrayList<Object> modelsArray = (ArrayList<Object>) objs.get("models");
Map<String, Object> models = (Map<String, Object>) 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) {

View File

@ -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<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
Object models = objs.get("models");
List<Object> modelsList = (List<Object>) models;
List<CodegenModel> codegenModelList = modelsList.stream()
.filter(listItem -> listItem instanceof HashMap<?, ?>)
.map(listItem -> (CodegenModel) ((HashMap<?, ?>) listItem).get("model"))
List<ModelMap> models = (List<ModelMap>) objs.get("models");
List<CodegenModel> codegenModelList = models.stream()
.map(ModelMap::getModel)
.collect(Collectors.toList());
List<CodegenModel> inlineAllOfCodegenModelList = codegenModelList.stream()

View File

@ -19,12 +19,14 @@ package org.openapitools.codegen.languages;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<>();
HashMap<String, Integer> processedModelMaps = new HashMap<>();
for (Object o : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) 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<String, Object> postProcessModels(Map<String, Object> objs) {
List<Object> models = (List<Object>) objs.get("models");
public ModelsMap postProcessModels(ModelsMap objs) {
List<ModelMap> models = objs.getModels();
// add x-index to properties
ProcessUtils.addIndexToProperties(models);
// add x-data-type to store powershell type
for (Object _mo : models) {
Map<String, Object> _model = (Map<String, Object>) _mo;
CodegenModel model = (CodegenModel) _model.get("model");
for (ModelMap _model : models) {
CodegenModel model = _model.getModel();
CodegenProperty lastWritableProperty = null;
for (CodegenProperty cp : model.allVars) {

View File

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

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// fix the imports that each model has, add the module reference to the model
// 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<String, Object> postProcessAllModels(Map<String, Object> objs) {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
super.postProcessAllModels(objs);
List<String> modelsToRemove = new ArrayList<>();
@ -400,11 +402,10 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen {
if (unaliasedSchema.get$ref() == null) {
modelsToRemove.add(modelName);
} else {
HashMap<String, Object> objModel = (HashMap<String, Object>) objs.get(modelName);
ModelsMap objModel = objs.get(modelName);
if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true)
List<Map<String, Object>> models = (List<Map<String, Object>>) objModel.get("models");
for (Map<String, Object> 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) {

View File

@ -21,8 +21,11 @@ import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
// fix the imports that each model has, add the module reference to the model
// 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<String, Object> postProcessAllModels(Map<String, Object> objs) {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
super.postProcessAllModels(objs);
Map<String, Schema> allDefinitions = ModelUtils.getSchemas(this.openAPI);
@ -713,11 +716,10 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
if (unaliasedSchema.get$ref() == null) {
continue;
} else {
HashMap<String, Object> objModel = (HashMap<String, Object>) objs.get(modelName);
ModelsMap objModel = objs.get(modelName);
if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true)
List<Map<String, Object>> models = (List<Map<String, Object>>) objModel.get("models");
for (Map<String, Object> 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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models
return postProcessModelsEnum(objs);
}

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
// Set will make sure that no duplicated items are used.
Set<String> securityImports = new HashSet<>();
@ -235,13 +236,11 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
}
@Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
Map<String, Object> result = super.postProcessAllModels(objs);
for (Map.Entry<String, Object> entry : result.entrySet()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
Map<String, ModelsMap> result = super.postProcessAllModels(objs);
for (Map.Entry<String, ModelsMap> 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));
}

View File

@ -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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// process enum in models
return postProcessModelsEnum(objs);
}

View File

@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.parameters.Parameter;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessModels(Map<String, Object> objs) {
public ModelsMap postProcessModels(ModelsMap objs) {
// remove model imports to avoid error
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> imports = objs.getImports();
final String prefix = modelPackage();
Iterator<Map<String, String>> 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<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports");
List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null)
return objs;
@ -687,13 +689,12 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
}
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>();
for (Object o : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o;
CodegenModel m = (CodegenModel) h.get("model");
for (ModelMap modelMap : allModels) {
CodegenModel m = modelMap.getModel();
modelMaps.put(m.classname, m);
}

View File

@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils;
import org.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<String, Object> postProcessModels(Map<String, Object> 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>();
HashMap<String, Integer> processedModelMaps = new HashMap<String, Integer>();
for (Object o : allModels) {
HashMap<String, Object> h = (HashMap<String, Object>) o;
CodegenModel m = (CodegenModel) h.get("model");
for (ModelMap modelMap : allModels) {
CodegenModel m = modelMap.getModel();
modelMaps.put(m.classname, m);
}

View File

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

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
@ -977,7 +979,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
return objs;
}
private void postProcessOperationWithModels(CodegenOperation op, List<Object> allModels) {
private void postProcessOperationWithModels(CodegenOperation op, List<ModelMap> allModels) {
boolean consumesPlainText = false;
boolean consumesXml = false;
@ -1263,23 +1265,20 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
}
@Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
Map<String, Object> newObjs = super.postProcessAllModels(objs);
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
Map<String, ModelsMap> newObjs = super.postProcessAllModels(objs);
//Index all CodegenModels by model name.
HashMap<String, CodegenModel> allModels = new HashMap<String, CodegenModel>();
for (Entry<String, Object> entry : objs.entrySet()) {
HashMap<String, CodegenModel> allModels = new HashMap<>();
for (Entry<String, ModelsMap> entry : objs.entrySet()) {
String modelName = toModelName(entry.getKey());
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
allModels.put(modelName, cm);
List<ModelMap> models = entry.getValue().getModels();
for (ModelMap mo : models) {
allModels.put(modelName, mo.getModel());
}
}
for (Entry<String, CodegenModel> 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<String, Object> postProcessModels(Map<String, Object> objs) {
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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);

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
if (registerNonStandardStatusCodes) {
try {
@SuppressWarnings("unchecked")

View File

@ -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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> baseObjs = super.postProcessOperationsWithModels(objs, allModels);
pathMatcherPatternsPostProcessor(baseObjs);
marshallingPostProcessor(baseObjs);

View File

@ -21,6 +21,7 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema;
import 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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) {

View File

@ -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<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
public ModelsMap postProcessModelsEnum(ModelsMap objs) {
objs = super.postProcessModelsEnum(objs);
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _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<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
ArrayList<CodegenOperation> oplist = (ArrayList<CodegenOperation>) operations.get("operation");

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