Reduce casting for operations processing (#12002)

This commit is contained in:
Oleh Kurpiak 2022-04-06 06:15:36 +03:00 committed by GitHub
parent 66db259678
commit edfb3e123f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
110 changed files with 836 additions and 644 deletions

View File

@ -29,6 +29,7 @@ import org.openapitools.codegen.meta.FeatureSet;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationsMap;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
@ -194,7 +195,7 @@ public interface CodegenConfig {
ModelsMap postProcessModels(ModelsMap objs); ModelsMap postProcessModels(ModelsMap objs);
Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels); OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels);
Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs); Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs);

View File

@ -40,6 +40,7 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.serializer.SerializerUtils; import org.openapitools.codegen.serializer.SerializerUtils;
import org.openapitools.codegen.templating.MustacheEngineAdapter; import org.openapitools.codegen.templating.MustacheEngineAdapter;
import org.openapitools.codegen.templating.mustache.*; import org.openapitools.codegen.templating.mustache.*;
@ -810,7 +811,7 @@ public class DefaultCodegen implements CodegenConfig {
// override with any special post-processing // override with any special post-processing
@Override @Override
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
return objs; return objs;
} }

View File

@ -44,8 +44,11 @@ import org.openapitools.codegen.languages.PythonClientCodegen;
import org.openapitools.codegen.languages.PythonExperimentalClientCodegen; import org.openapitools.codegen.languages.PythonExperimentalClientCodegen;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ApiInfoMap;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.serializer.SerializerUtils; import org.openapitools.codegen.serializer.SerializerUtils;
import org.openapitools.codegen.templating.CommonTemplateContentLocator; import org.openapitools.codegen.templating.CommonTemplateContentLocator;
import org.openapitools.codegen.templating.GeneratorTemplateContentLocator; import org.openapitools.codegen.templating.GeneratorTemplateContentLocator;
@ -541,7 +544,7 @@ public class DefaultGenerator implements Generator {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
void generateApis(List<File> files, List<Object> allOperations, List<ModelMap> allModels) { void generateApis(List<File> files, List<OperationsMap> allOperations, List<ModelMap> allModels) {
if (!generateApis) { if (!generateApis) {
// TODO: Process these anyway and present info via dryRun? // TODO: Process these anyway and present info via dryRun?
LOGGER.info("Skipping generation of APIs."); LOGGER.info("Skipping generation of APIs.");
@ -566,7 +569,7 @@ public class DefaultGenerator implements Generator {
try { try {
List<CodegenOperation> ops = paths.get(tag); List<CodegenOperation> ops = paths.get(tag);
ops.sort((one, another) -> ObjectUtils.compare(one.operationId, another.operationId)); ops.sort((one, another) -> ObjectUtils.compare(one.operationId, another.operationId));
Map<String, Object> operation = processOperations(config, tag, ops, allModels); OperationsMap operation = processOperations(config, tag, ops, allModels);
URL url = URLPathUtils.getServerURL(openAPI, config.serverVariableOverrides()); URL url = URLPathUtils.getServerURL(openAPI, config.serverVariableOverrides());
operation.put("basePath", basePath); operation.put("basePath", basePath);
operation.put("basePathWithoutHost", removeTrailingSlash(config.encodePath(url.getPath()))); operation.put("basePathWithoutHost", removeTrailingSlash(config.encodePath(url.getPath())));
@ -595,9 +598,8 @@ public class DefaultGenerator implements Generator {
if (config.vendorExtensions().containsKey("x-group-parameters")) { if (config.vendorExtensions().containsKey("x-group-parameters")) {
boolean isGroupParameters = Boolean.parseBoolean(config.vendorExtensions().get("x-group-parameters").toString()); boolean isGroupParameters = Boolean.parseBoolean(config.vendorExtensions().get("x-group-parameters").toString());
Map<String, Object> objectMap = (Map<String, Object>) operation.get("operations"); OperationMap objectMap = operation.getOperations();
@SuppressWarnings("unchecked") List<CodegenOperation> operations = objectMap.getOperation();
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation op : operations) { for (CodegenOperation op : operations) {
if (isGroupParameters && !op.vendorExtensions.containsKey("x-group-parameters")) { if (isGroupParameters && !op.vendorExtensions.containsKey("x-group-parameters")) {
op.vendorExtensions.put("x-group-parameters", Boolean.TRUE); op.vendorExtensions.put("x-group-parameters", Boolean.TRUE);
@ -617,7 +619,7 @@ public class DefaultGenerator implements Generator {
processMimeTypes(swagger.getProduces(), operation, "produces"); processMimeTypes(swagger.getProduces(), operation, "produces");
*/ */
allOperations.add(new HashMap<>(operation)); allOperations.add(operation);
addAuthenticationSwitches(operation); addAuthenticationSwitches(operation);
@ -746,14 +748,13 @@ public class DefaultGenerator implements Generator {
generateVersionMetadata(files); generateVersionMetadata(files);
} }
@SuppressWarnings("unchecked") Map<String, Object> buildSupportFileBundle(List<OperationsMap> allOperations, List<ModelMap> allModels) {
Map<String, Object> buildSupportFileBundle(List<Object> allOperations, List<ModelMap> allModels) {
Map<String, Object> bundle = new HashMap<>(config.additionalProperties()); Map<String, Object> bundle = new HashMap<>(config.additionalProperties());
bundle.put("apiPackage", config.apiPackage()); bundle.put("apiPackage", config.apiPackage());
Map<String, Object> apis = new HashMap<>(); ApiInfoMap apis = new ApiInfoMap();
apis.put("apis", allOperations); apis.setApis(allOperations);
URL url = URLPathUtils.getServerURL(openAPI, config.serverVariableOverrides()); URL url = URLPathUtils.getServerURL(openAPI, config.serverVariableOverrides());
@ -887,7 +888,7 @@ public class DefaultGenerator implements Generator {
List<ModelMap> allModels = new ArrayList<>(); List<ModelMap> allModels = new ArrayList<>();
generateModels(files, allModels, filteredSchemas); generateModels(files, allModels, filteredSchemas);
// apis // apis
List<Object> allOperations = new ArrayList<>(); List<OperationsMap> allOperations = new ArrayList<>();
generateApis(files, allOperations, allModels); generateApis(files, allOperations, allModels);
// supporting files // supporting files
@ -1170,11 +1171,11 @@ public class DefaultGenerator implements Generator {
return parameter.getName() + ":" + parameter.getIn(); return parameter.getName() + ":" + parameter.getIn();
} }
private Map<String, Object> processOperations(CodegenConfig config, String tag, List<CodegenOperation> ops, List<ModelMap> allModels) { private OperationsMap processOperations(CodegenConfig config, String tag, List<CodegenOperation> ops, List<ModelMap> allModels) {
Map<String, Object> operations = new HashMap<>(); OperationsMap operations = new OperationsMap();
Map<String, Object> objs = new HashMap<>(); OperationMap objs = new OperationMap();
objs.put("classname", config.toApiName(tag)); objs.setClassname(config.toApiName(tag));
objs.put("pathPrefix", config.toApiVarName(tag)); objs.setPathPrefix(config.toApiVarName(tag));
// check for operationId uniqueness // check for operationId uniqueness
Set<String> opIds = new HashSet<>(); Set<String> opIds = new HashSet<>();
@ -1187,9 +1188,9 @@ public class DefaultGenerator implements Generator {
} }
opIds.add(opId); opIds.add(opId);
} }
objs.put("operation", ops); objs.setOperation(ops);
operations.put("operations", objs); operations.setOperation(objs);
operations.put("package", config.apiPackage()); operations.put("package", config.apiPackage());
Set<String> allImports = new ConcurrentSkipListSet<>(); Set<String> allImports = new ConcurrentSkipListSet<>();
@ -1201,10 +1202,10 @@ public class DefaultGenerator implements Generator {
Set<Map<String, String>> imports = toImportsObjects(mappings); Set<Map<String, String>> imports = toImportsObjects(mappings);
//Some codegen implementations rely on a list interface for the imports //Some codegen implementations rely on a list interface for the imports
operations.put("imports", imports.stream().collect(Collectors.toList())); operations.setImports(new ArrayList<>(imports));
// add a flag to indicate whether there's any {{import}} // add a flag to indicate whether there's any {{import}}
if (imports.size() > 0) { if (!imports.isEmpty()) {
operations.put("hasImport", true); operations.put("hasImport", true);
} }
@ -1239,18 +1240,14 @@ public class DefaultGenerator implements Generator {
* @return The set of unique imports * @return The set of unique imports
*/ */
private Set<Map<String, String>> toImportsObjects(Map<String, String> mappedImports) { private Set<Map<String, String>> toImportsObjects(Map<String, String> mappedImports) {
Set<Map<String, String>> result = new TreeSet<Map<String, String>>( Set<Map<String, String>> result = new TreeSet<>(
(Comparator<Map<String, String>>) (o1, o2) -> { Comparator.comparing(o -> o.get("classname"))
String s1 = o1.get("classname");
String s2 = o2.get("classname");
return s1.compareTo(s2);
}
); );
mappedImports.entrySet().forEach(mapping -> { mappedImports.forEach((key, value) -> {
Map<String, String> im = new LinkedHashMap<>(); Map<String, String> im = new LinkedHashMap<>();
im.put("import", mapping.getKey()); im.put("import", key);
im.put("classname", mapping.getValue()); im.put("classname", value);
result.add(im); result.add(im);
}); });
return result; return result;

View File

@ -36,6 +36,8 @@ import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -607,9 +609,9 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op1 : operationList) { for (CodegenOperation op1 : operationList) {
if (op1.summary != null) { if (op1.summary != null) {

View File

@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.mustache.*; import org.openapitools.codegen.templating.mustache.*;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -663,12 +665,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
if (objs != null) { if (objs != null) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
// Check return types for collection // Check return types for collection

View File

@ -12,6 +12,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -560,11 +562,11 @@ public abstract class AbstractDartCodegen extends DefaultCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
if (op.hasConsumes) { if (op.hasConsumes) {
if (!op.formParams.isEmpty() || op.isMultipart) { if (!op.formParams.isEmpty() || op.isMultipart) {

View File

@ -26,6 +26,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -362,11 +364,9 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
// http method verb conversion (e.g. PUT => Put) // http method verb conversion (e.g. PUT => Put)
@ -374,7 +374,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
} }
// remove model imports to avoid error // remove model imports to avoid error
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
if (imports == null) if (imports == null)
return objs; return objs;
@ -401,7 +401,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
} }
// recursively add import for mapping one type to multiple imports // recursively add import for mapping one type to multiple imports
List<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null) if (recursiveImports == null)
return objs; return objs;

View File

@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.mustache.*; import org.openapitools.codegen.templating.mustache.*;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -512,12 +514,12 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
if (objs != null) { if (objs != null) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
// Check return types for collection // Check return types for collection

View File

@ -24,6 +24,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -462,11 +464,9 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
// http method verb conversion (e.g. PUT => Put) // http method verb conversion (e.g. PUT => Put)
@ -474,7 +474,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
} }
// remove model imports to avoid error // remove model imports to avoid error
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
if (imports == null) if (imports == null)
return objs; return objs;
@ -565,7 +565,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
} }
// recursively add import for mapping one type to multiple imports // recursively add import for mapping one type to multiple imports
List<Map<String, String>> recursiveImports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> recursiveImports = objs.getImports();
if (recursiveImports == null) if (recursiveImports == null)
return objs; return objs;

View File

@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -421,10 +423,10 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); OperationMap objs = operations.getOperations();
for (CodegenOperation op : (List<CodegenOperation>) objs.get("operation")) { for (CodegenOperation op : objs.getOperation()) {
// non GET/HEAD methods are mutation // non GET/HEAD methods are mutation
if (!"GET".equals(op.httpMethod.toUpperCase(Locale.ROOT)) && !"HEAD".equals(op.httpMethod.toUpperCase(Locale.ROOT))) { if (!"GET".equals(op.httpMethod.toUpperCase(Locale.ROOT)) && !"HEAD".equals(op.httpMethod.toUpperCase(Locale.ROOT))) {
op.vendorExtensions.put("x-is-mutation", Boolean.TRUE); op.vendorExtensions.put("x-is-mutation", Boolean.TRUE);
@ -440,7 +442,7 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C
} }
} }
return objs; return operations;
} }
public String graphQlInputsPackage() { public String graphQlInputsPackage() {

View File

@ -38,6 +38,8 @@ import org.openapitools.codegen.languages.features.DocumentationProviderFeatures
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -1362,10 +1364,10 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
// Remove imports of List, ArrayList, Map and HashMap as they are // Remove imports of List, ArrayList, Map and HashMap as they are
// imported in the template already. // imported in the template already.
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
Pattern pattern = Pattern.compile("java\\.util\\.(List|ArrayList|Map|HashMap)"); Pattern pattern = Pattern.compile("java\\.util\\.(List|ArrayList|Map|HashMap)");
for (Iterator<Map<String, String>> itr = imports.iterator(); itr.hasNext(); ) { for (Iterator<Map<String, String>> itr = imports.iterator(); itr.hasNext(); ) {
String itrImport = itr.next().get("import"); String itrImport = itr.next().get("import");
@ -1374,8 +1376,8 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
} }
} }
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
Collection<String> operationImports = new ConcurrentSkipListSet<>(); Collection<String> operationImports = new ConcurrentSkipListSet<>();
for (CodegenParameter p : op.allParams) { for (CodegenParameter p : op.allParams) {

View File

@ -25,6 +25,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -168,12 +170,11 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen
} }
@Override @Override
@SuppressWarnings("unchecked") public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { OperationsMap updatedObjs = jaxrsPostProcessOperations(objs);
Map<String, Object> updatedObjs = jaxrsPostProcessOperations(objs); OperationMap operations = updatedObjs.getOperations();
Map<String, Object> operations = (Map<String, Object>) updatedObjs.get("operations");
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation co : ops) { for (CodegenOperation co : ops) {
handleImplicitHeaders(co); handleImplicitHeaders(co);
} }
@ -181,13 +182,11 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen
return updatedObjs; return updatedObjs;
} }
static Map<String, Object> jaxrsPostProcessOperations(Map<String, Object> objs) { static OperationsMap jaxrsPostProcessOperations(OperationsMap objs) {
@SuppressWarnings("unchecked") OperationMap operations = objs.getOperations();
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
String commonPath = null; String commonPath = null;
if (operations != null) { if (operations != null) {
@SuppressWarnings("unchecked") List<CodegenOperation> ops = operations.getOperation();
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
if (operation.hasConsumes == Boolean.TRUE) { if (operation.hasConsumes == Boolean.TRUE) {
Map<String, String> firstType = operation.consumes.get(0); Map<String, String> firstType = operation.consumes.get(0);

View File

@ -24,6 +24,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -703,9 +705,9 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
// for API test method name // for API test method name
// e.g. public function test{{vendorExtensions.x-testOperationId}}() // e.g. public function test{{vendorExtensions.x-testOperationId}}()

View File

@ -32,8 +32,11 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ApiInfoMap;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -465,13 +468,11 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
} }
} }
@SuppressWarnings("unchecked") private static List<OperationMap> getOperations(Map<String, Object> objs) {
private static List<Map<String, Object>> getOperations(Map<String, Object> objs) { List<OperationMap> result = new ArrayList<>();
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo");
Map<String, Object> apiInfo = (Map<String, Object>) objs.get("apiInfo"); for (OperationsMap api : apiInfo.getApis()) {
List<Map<String, Object>> apis = (List<Map<String, Object>>) apiInfo.get("apis"); result.add(api.getOperations());
for (Map<String, Object> api : apis) {
result.add((Map<String, Object>) api.get("operations"));
} }
return result; return result;
} }
@ -483,9 +484,9 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
opsByPath.put(op.path, op); opsByPath.put(op.path, op);
} }
List<Map<String, Object>> opsByPathList = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> opsByPathList = new ArrayList<>();
for (Map.Entry<String, Collection<CodegenOperation>> entry : opsByPath.asMap().entrySet()) { for (Map.Entry<String, Collection<CodegenOperation>> entry : opsByPath.asMap().entrySet()) {
Map<String, Object> opsByPathEntry = new HashMap<String, Object>(); Map<String, Object> opsByPathEntry = new HashMap<>();
opsByPathList.add(opsByPathEntry); opsByPathList.add(opsByPathEntry);
opsByPathEntry.put("path", entry.getKey()); opsByPathEntry.put("path", entry.getKey());
opsByPathEntry.put("operation", entry.getValue()); opsByPathEntry.put("operation", entry.getValue());
@ -570,9 +571,8 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
generateJSONSpecFile(objs); generateJSONSpecFile(objs);
generateYAMLSpecFile(objs); generateYAMLSpecFile(objs);
for (Map<String, Object> operations : getOperations(objs)) { for (OperationMap operations : getOperations(objs)) {
@SuppressWarnings("unchecked") List<CodegenOperation> ops = operations.getOperation();
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
List<Map<String, Object>> opsByPathList = sortOperationsByPath(ops); List<Map<String, Object>> opsByPathList = sortOperationsByPath(ops);
operations.put("operationsByPath", opsByPathList); operations.put("operationsByPath", opsByPathList);
@ -645,9 +645,9 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation operation : operationList) { for (CodegenOperation operation : operationList) {
Map<String, String> skipTests = new HashMap<>(); Map<String, String> skipTests = new HashMap<>();

View File

@ -20,6 +20,8 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -88,18 +90,17 @@ public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfi
return input.replace("*/", "*_/").replace("/*", "/_*"); return input.replace("*/", "*_/").replace("/*", "/_*");
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
List<CodegenOperation> newOpList = new ArrayList<CodegenOperation>(); List<CodegenOperation> newOpList = new ArrayList<>();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
String path = op.path; String path = op.path;
String[] items = path.split("/", -1); String[] items = path.split("/", -1);
List<String> splitPath = new ArrayList<String>(); List<String> splitPath = new ArrayList<>();
for (String item : items) { for (String item : items) {
if (item.matches("^\\{(.*)\\}$")) { if (item.matches("^\\{(.*)\\}$")) {
item = "*"; item = "*";
@ -113,9 +114,10 @@ public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfi
if (!foundInNewList) { if (!foundInNewList) {
if (op1.path.equals(op.path)) { if (op1.path.equals(op.path)) {
foundInNewList = true; foundInNewList = true;
@SuppressWarnings("unchecked")
List<CodegenOperation> currentOtherMethodList = (List<CodegenOperation>) op1.vendorExtensions.get("x-codegen-otherMethods"); List<CodegenOperation> currentOtherMethodList = (List<CodegenOperation>) op1.vendorExtensions.get("x-codegen-otherMethods");
if (currentOtherMethodList == null) { if (currentOtherMethodList == null) {
currentOtherMethodList = new ArrayList<CodegenOperation>(); currentOtherMethodList = new ArrayList<>();
} }
op.operationIdCamelCase = op1.operationIdCamelCase; op.operationIdCamelCase = op1.operationIdCamelCase;
currentOtherMethodList.add(op); currentOtherMethodList.add(op);
@ -127,7 +129,7 @@ public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfi
newOpList.add(op); newOpList.add(op);
} }
} }
operations.put("operation", newOpList); operations.setOperation(newOpList);
return objs; return objs;
} }
} }

View File

@ -24,6 +24,8 @@ import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -462,13 +464,13 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
// We need to postprocess the operations to add proper consumes tags and fix form file handling // We need to postprocess the operations to add proper consumes tags and fix form file handling
if (objs != null) { if (objs != null) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
if (operation.consumes == null) { if (operation.consumes == null) {
continue; continue;

View File

@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -354,9 +356,9 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); OperationMap objs = operations.getOperations();
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = objs.getOperation();
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
// Convert httpMethod to lower case, e.g. "get", "post" // Convert httpMethod to lower case, e.g. "get", "post"
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);

View File

@ -23,6 +23,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -117,9 +119,9 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
} }

View File

@ -26,6 +26,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -255,14 +257,13 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
return op; return op;
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
String classname = (String) operations.get("classname"); String classname = operations.getClassname();
operations.put("classnameSnakeUpperCase", underscore(classname).toUpperCase(Locale.ROOT)); operations.put("classnameSnakeUpperCase", underscore(classname).toUpperCase(Locale.ROOT));
operations.put("classnameSnakeLowerCase", underscore(classname).toLowerCase(Locale.ROOT)); operations.put("classnameSnakeLowerCase", underscore(classname).toLowerCase(Locale.ROOT));
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
boolean consumeJson = false; boolean consumeJson = false;
boolean isParsingSupported = true; boolean isParsingSupported = true;

View File

@ -7,6 +7,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -310,12 +312,11 @@ public abstract class CppQtAbstractCodegen extends AbstractCppCodegen implements
@Override @Override
@SuppressWarnings("unchecked") public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
Map<String, CodegenModel> codegenModels = new HashMap<>(); Map<String, CodegenModel> codegenModels = new HashMap<>();
for (ModelMap moObj : allModels) { for (ModelMap moObj : allModels) {

View File

@ -29,6 +29,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import java.util.*; import java.util.*;
@ -322,11 +324,10 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
} }
// override with any special post-processing // override with any special post-processing
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
for (String hdr : op.imports) { for (String hdr : op.imports) {
if (importMapping.containsKey(hdr)) { if (importMapping.containsKey(hdr)) {

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import java.io.File; import java.io.File;
@ -282,11 +284,10 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
return toApiName(name); return toApiName(name);
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
List<CodegenOperation> newOpList = new ArrayList<>(); List<CodegenOperation> newOpList = new ArrayList<>();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
@ -318,6 +319,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
if (op1.path.equals(op.path)) { if (op1.path.equals(op.path)) {
foundInNewList = true; foundInNewList = true;
final String X_CODEGEN_OTHER_METHODS = "x-codegen-other-methods"; final String X_CODEGEN_OTHER_METHODS = "x-codegen-other-methods";
@SuppressWarnings("unchecked")
List<CodegenOperation> currentOtherMethodList = (List<CodegenOperation>) op1.vendorExtensions.get(X_CODEGEN_OTHER_METHODS); List<CodegenOperation> currentOtherMethodList = (List<CodegenOperation>) op1.vendorExtensions.get(X_CODEGEN_OTHER_METHODS);
if (currentOtherMethodList == null) { if (currentOtherMethodList == null) {
currentOtherMethodList = new ArrayList<>(); currentOtherMethodList = new ArrayList<>();
@ -332,7 +334,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
newOpList.add(op); newOpList.add(op);
} }
} }
operations.put("operation", newOpList); operations.setOperation(newOpList);
return objs; return objs;
} }

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.mustache.PrefixWithHashLambda; import org.openapitools.codegen.templating.mustache.PrefixWithHashLambda;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -556,9 +558,9 @@ public class CrystalClientCodegen extends DefaultCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
HashMap<String, CodegenModel> modelMaps = new HashMap<>(); HashMap<String, CodegenModel> modelMaps = new HashMap<>();
HashMap<String, Integer> processedModelMaps = new HashMap<>(); HashMap<String, Integer> processedModelMaps = new HashMap<>();
@ -567,7 +569,7 @@ public class CrystalClientCodegen extends DefaultCodegen {
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
for (CodegenParameter p : op.allParams) { for (CodegenParameter p : op.allParams) {
p.vendorExtensions.put("x-crystal-example", constructExampleCode(p, modelMaps, processedModelMaps)); p.vendorExtensions.put("x-crystal-example", constructExampleCode(p, modelMaps, processedModelMaps));

View File

@ -23,6 +23,8 @@ import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -393,13 +395,13 @@ public class CsharpNetcoreFunctionsServerCodegen extends AbstractCSharpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
// We need to postprocess the operations to add proper consumes tags and fix form file handling // We need to postprocess the operations to add proper consumes tags and fix form file handling
if (objs != null) { if (objs != null) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
if (operation.consumes == null) { if (operation.consumes == null) {
continue; continue;

View File

@ -25,6 +25,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.ClientModificationFeature; import org.openapitools.codegen.meta.features.ClientModificationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -264,10 +266,10 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
Set<Map<String, Object>> serializers = new HashSet<>(); Set<Map<String, Object>> serializers = new HashSet<>();
Set<String> resultImports = new HashSet<>(); Set<String> resultImports = new HashSet<>();
@ -303,6 +305,7 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
} }
} }
// for some reason "import" structure is changed ..
objs.put("imports", resultImports.stream().sorted().collect(Collectors.toList())); objs.put("imports", resultImports.stream().sorted().collect(Collectors.toList()));
objs.put("serializers", serializers); objs.put("serializers", serializers);

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.ClientModificationFeature; import org.openapitools.codegen.meta.features.ClientModificationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -295,10 +297,10 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
Set<String> resultImports = new HashSet<>(); Set<String> resultImports = new HashSet<>();
@ -365,6 +367,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen {
} }
} }
// for some reason "import" structure is changed ..
objs.put("imports", resultImports.stream().sorted().collect(Collectors.toList())); objs.put("imports", resultImports.stream().sorted().collect(Collectors.toList()));
return objs; return objs;

View File

@ -22,6 +22,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import io.swagger.v3.oas.models.media.*; import io.swagger.v3.oas.models.media.*;
@ -245,11 +247,11 @@ public class DartJaguarClientCodegen extends AbstractDartCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
Set<String> modelImports = new HashSet<>(); Set<String> modelImports = new HashSet<>();
Set<String> fullImports = new HashSet<>(); Set<String> fullImports = new HashSet<>();

View File

@ -28,6 +28,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -298,9 +300,9 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) super.postProcessOperationsWithModels(objs, allModels).get("operations"); OperationMap operations = super.postProcessOperationsWithModels(objs, allModels).getOperations();
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> os = operations.getOperation();
List<ExtendedCodegenOperation> newOs = new ArrayList<>(); List<ExtendedCodegenOperation> newOs = new ArrayList<>();
Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}([^\\{]*)"); Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}([^\\{]*)");
for (CodegenOperation o : os) { for (CodegenOperation o : os) {
@ -332,7 +334,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
newOs.add(eco); newOs.add(eco);
} }
operations.put("operation", newOs); operations.setOperation(newOs);
return objs; return objs;
} }

View File

@ -28,6 +28,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -359,10 +361,10 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
@SuppressWarnings({"static-method", "unchecked"}) @SuppressWarnings("static-method")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); OperationMap objs = operations.getOperations();
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = objs.getOperation();
ops.forEach(op -> { ops.forEach(op -> {
op.allParams = op.allParams.stream().sorted(new ParameterSorter()).collect(Collectors.toList()); op.allParams = op.allParams.stream().sorted(new ParameterSorter()).collect(Collectors.toList());
op.responses.forEach(response -> { op.responses.forEach(response -> {

View File

@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.mustache.JoinWithCommaLambda; import org.openapitools.codegen.templating.mustache.JoinWithCommaLambda;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -309,10 +311,10 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> os = operations.getOperation();
List<ExtendedCodegenOperation> newOs = new ArrayList<ExtendedCodegenOperation>(); List<ExtendedCodegenOperation> newOs = new ArrayList<>();
Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}"); Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}");
for (CodegenOperation o : os) { for (CodegenOperation o : os) {
// force http method to lower case // force http method to lower case
@ -322,7 +324,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig
o.returnType = "[" + o.returnBaseType + "]"; o.returnType = "[" + o.returnBaseType + "]";
} }
ArrayList<String> pathTemplateNames = new ArrayList<String>(); ArrayList<String> pathTemplateNames = new ArrayList<>();
Matcher matcher = pattern.matcher(o.path); Matcher matcher = pattern.matcher(o.path);
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();
while (matcher.find()) { while (matcher.find()) {
@ -341,7 +343,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig
eco.setPathTemplateNames(pathTemplateNames); eco.setPathTemplateNames(pathTemplateNames);
newOs.add(eco); newOs.add(eco);
} }
operations.put("operation", newOs); operations.setOperation(newOs);
return objs; return objs;
} }

View File

@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -368,9 +370,9 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> os = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> os = operations.getOperation();
List<ExtendedCodegenOperation> newOs = new ArrayList<>(); List<ExtendedCodegenOperation> newOs = new ArrayList<>();
Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}"); Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}");
for (CodegenOperation o : os) { for (CodegenOperation o : os) {
@ -397,7 +399,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
} }
newOs.add(eco); newOs.add(eco);
} }
operations.put("operation", newOs); operations.setOperation(newOs);
return objs; return objs;
} }

View File

@ -20,6 +20,8 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -270,9 +272,9 @@ public class ErlangServerCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
if (op.path != null) { if (op.path != null) {
op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1"); op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1");

View File

@ -29,6 +29,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -456,10 +458,10 @@ public class GoClientCodegen extends AbstractGoCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>(); HashMap<String, CodegenModel> modelMaps = new HashMap<>();
HashMap<String, ArrayList<Integer>> processedModelMaps = new HashMap<>(); HashMap<String, ArrayList<Integer>> processedModelMaps = new HashMap<>();
for (ModelMap modelMap : allModels) { for (ModelMap modelMap : allModels) {
@ -467,7 +469,7 @@ public class GoClientCodegen extends AbstractGoCodegen {
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
for (CodegenParameter p : op.allParams) { for (CodegenParameter p : op.allParams) {
p.vendorExtensions.put("x-go-example", constructExampleCode(p, modelMaps, processedModelMaps)); p.vendorExtensions.put("x-go-example", constructExampleCode(p, modelMaps, processedModelMaps));

View File

@ -21,6 +21,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
@ -107,11 +109,11 @@ public class GoEchoServerCodegen extends AbstractGoCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
if (op.path != null) { if (op.path != null) {
op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1"); op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1");

View File

@ -23,6 +23,8 @@ import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -122,11 +124,11 @@ public class GoGinServerCodegen extends AbstractGoCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
if (op.path != null) { if (op.path != null) {
op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1"); op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1");

View File

@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -286,14 +288,12 @@ public class GoServerCodegen extends AbstractGoCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
if (imports == null) if (imports == null)
return objs; return objs;

View File

@ -33,6 +33,8 @@ import org.openapitools.codegen.meta.features.SchemaSupportFeature;
import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
public class GroovyClientCodegen extends AbstractJavaCodegen { public class GroovyClientCodegen extends AbstractJavaCodegen {
@ -126,9 +128,9 @@ public class GroovyClientCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); OperationMap objs = operations.getOperations();
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = objs.getOperation();
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
// Overwrite path to map variable with path parameters // Overwrite path to map variable with path parameters
op.path = op.path.replace("{", "${"); op.path = op.path.replace("{", "${");

View File

@ -30,6 +30,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -809,10 +811,10 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> ret = super.postProcessOperationsWithModels(objs, allModels); OperationsMap ret = super.postProcessOperationsWithModels(objs, allModels);
HashMap<String, Object> pathOps = (HashMap<String, Object>) ret.get("operations"); OperationMap pathOps = ret.getOperations();
ArrayList<CodegenOperation> ops = (ArrayList<CodegenOperation>) pathOps.get("operation"); List<CodegenOperation> ops = pathOps.getOperation();
if (ops.size() > 0) { if (ops.size() > 0) {
ops.get(0).vendorExtensions.put(VENDOR_EXTENSION_X_HAS_NEW_TAG, true); ops.get(0).vendorExtensions.put(VENDOR_EXTENSION_X_HAS_NEW_TAG, true);
} }
@ -827,7 +829,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
m.vendorExtensions.put(VENDOR_EXTENSION_X_MIME_TYPES, mimeTypes); m.vendorExtensions.put(VENDOR_EXTENSION_X_MIME_TYPES, mimeTypes);
if ((boolean) additionalProperties.get(PROP_GENERATE_FORM_URLENCODED_INSTANCES) && mimeTypes.contains("MimeFormUrlEncoded")) { if ((boolean) additionalProperties.get(PROP_GENERATE_FORM_URLENCODED_INSTANCES) && mimeTypes.contains("MimeFormUrlEncoded")) {
Boolean hasMimeFormUrlEncoded = true; boolean hasMimeFormUrlEncoded = true;
for (CodegenProperty v : m.vars) { for (CodegenProperty v : m.vars) {
if (!(v.isPrimitiveType || v.isString || v.isDate || v.isDateTime)) { if (!(v.isPrimitiveType || v.isString || v.isDate || v.isDateTime)) {
hasMimeFormUrlEncoded = false; hasMimeFormUrlEncoded = false;

View File

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

View File

@ -38,6 +38,8 @@ import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.languages.features.CXFExtServerFeatures; import org.openapitools.codegen.languages.features.CXFExtServerFeatures;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.JsonCache; import org.openapitools.codegen.utils.JsonCache;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.JsonCache.CacheException; import org.openapitools.codegen.utils.JsonCache.CacheException;
@ -1161,17 +1163,17 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> result = super.postProcessOperationsWithModels(objs, allModels); OperationsMap result = super.postProcessOperationsWithModels(objs, allModels);
if (generateOperationBody) { if (generateOperationBody) {
// We generate the operation body in code because the logic to do so is far too complicated to be expressed // We generate the operation body in code because the logic to do so is far too complicated to be expressed
// in the logic-less Mustache templating system. // in the logic-less Mustache templating system.
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> operations = (Map<String, Object>) result.get("operations"); OperationMap operations = result.getOperations();
if (operations != null) { if (operations != null) {
String classname = (String) operations.get("classname"); String classname = operations.getClassname();
// Map the models so we can look them up by name. // Map the models so we can look them up by name.
Map<String, CodegenModel> models = new HashMap<>(); Map<String, CodegenModel> models = new HashMap<>();
@ -1181,8 +1183,7 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF
} }
StringBuilder buffer = new StringBuilder(); StringBuilder buffer = new StringBuilder();
@SuppressWarnings("unchecked") List<CodegenOperation> ops = operations.getOperation();
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
applyDefaultContentTypes(op); applyDefaultContentTypes(op);
String testDataPath = '/' + classname + '/' + op.operationId; String testDataPath = '/' + classname + '/' + op.operationId;
@ -1246,16 +1247,16 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF
// did not include the ones we've just added to support the code in the operation bodies. Therefore it // did not include the ones we've just added to support the code in the operation bodies. Therefore it
// is necessary to recompute the imports and overwrite the existing ones. The code below was copied from // is necessary to recompute the imports and overwrite the existing ones. The code below was copied from
// the private DefaultGenerator.processOperations() method to achieve this end. // the private DefaultGenerator.processOperations() method to achieve this end.
Set<String> allImports = new TreeSet<String>(); Set<String> allImports = new TreeSet<>();
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
allImports.addAll(op.imports); allImports.addAll(op.imports);
} }
allImports.add("List"); allImports.add("List");
allImports.add("Map"); allImports.add("Map");
List<Map<String, String>> imports = new ArrayList<Map<String, String>>(); List<Map<String, String>> imports = new ArrayList<>();
for (String nextImport : allImports) { for (String nextImport : allImports) {
Map<String, String> im = new LinkedHashMap<String, String>(); Map<String, String> im = new LinkedHashMap<>();
String mapping = importMapping().get(nextImport); String mapping = importMapping().get(nextImport);
if (mapping == null) { if (mapping == null) {
mapping = toModelImport(nextImport); mapping = toModelImport(nextImport);

View File

@ -29,6 +29,8 @@ import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.meta.features.GlobalFeature; import org.openapitools.codegen.meta.features.GlobalFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.mustache.CaseFormatLambda; import org.openapitools.codegen.templating.mustache.CaseFormatLambda;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -635,14 +637,13 @@ public class JavaClientCodegen extends AbstractJavaCodegen
} }
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
if (RETROFIT_2.equals(getLibrary())) { if (RETROFIT_2.equals(getLibrary())) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
if (operation.hasConsumes == Boolean.TRUE) { if (operation.hasConsumes == Boolean.TRUE) {
@ -680,8 +681,8 @@ public class JavaClientCodegen extends AbstractJavaCodegen
// camelize path variables for Feign client // camelize path variables for Feign client
if (FEIGN.equals(getLibrary())) { if (FEIGN.equals(getLibrary())) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
Pattern methodPattern = Pattern.compile("^(.*):([^:]*)$"); Pattern methodPattern = Pattern.compile("^(.*):([^:]*)$");
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
String path = op.path; String path = op.path;

View File

@ -25,6 +25,8 @@ import org.openapitools.codegen.config.GlobalSettings;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -130,7 +132,7 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen {
} }
List<CodegenOperation> opList = operations.get(basePath); List<CodegenOperation> opList = operations.get(basePath);
if (opList == null) { if (opList == null) {
opList = new ArrayList<CodegenOperation>(); opList = new ArrayList<>();
operations.put(basePath, opList); operations.put(basePath, opList);
} }
opList.add(co); opList.add(co);
@ -138,10 +140,10 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
if (operation.returnType == null) { if (operation.returnType == null) {
operation.returnType = "Void"; operation.returnType = "Void";

View File

@ -7,6 +7,8 @@ import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -318,14 +320,14 @@ public abstract class JavaMicronautAbstractCodegen extends AbstractJavaCodegen i
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, CodegenModel> models = allModels.stream() Map<String, CodegenModel> models = allModels.stream()
.map(ModelMap::getModel) .map(ModelMap::getModel)
.collect(Collectors.toMap(v -> v.classname, v -> v)); .collect(Collectors.toMap(v -> v.classname, v -> v));
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
// Set whether body is supported in request // Set whether body is supported in request

View File

@ -4,6 +4,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.StringUtils; import org.openapitools.codegen.utils.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -185,12 +187,12 @@ public class JavaMicronautServerCodegen extends JavaMicronautAbstractCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
// Add the controller classname to operations // Add the controller classname to operations
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
String controllerClassname = StringUtils.camelize(controllerPrefix + "_" + operations.get("pathPrefix") + "_" + controllerSuffix); String controllerClassname = StringUtils.camelize(controllerPrefix + "_" + operations.getPathPrefix() + "_" + controllerSuffix);
objs.put("controllerClassname", controllerClassname); objs.put("controllerClassname", controllerClassname);
List<CodegenOperation> allOperations = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> allOperations = (List<CodegenOperation>) operations.get("operation");

View File

@ -25,6 +25,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import java.io.File; import java.io.File;
@ -311,12 +313,11 @@ public class JavaPKMSTServerCodegen extends AbstractJavaCodegen {
serviceName + "IT.java")); serviceName + "IT.java"));
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (final CodegenOperation operation : ops) { for (final CodegenOperation operation : ops) {
List<CodegenResponse> responses = operation.responses; List<CodegenResponse> responses = operation.responses;
if (responses != null) { if (responses != null) {

View File

@ -23,6 +23,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -305,11 +307,11 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
for (CodegenParameter param : operation.allParams) { for (CodegenParameter param : operation.allParams) {

View File

@ -23,6 +23,8 @@ import org.openapitools.codegen.config.GlobalSettings;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -120,10 +122,10 @@ public class JavaUndertowServerCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
if (operation.returnType == null) { if (operation.returnType == null) {
operation.returnType = "Void"; operation.returnType = "Void";

View File

@ -28,6 +28,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -191,11 +193,11 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> newObjs = super.postProcessOperationsWithModels(objs, allModels); OperationsMap newObjs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) newObjs.get("operations"); OperationMap operations = newObjs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT);

View File

@ -21,6 +21,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
@ -126,13 +128,12 @@ public class JavaVertXWebServerCodegen extends AbstractJavaCodegen {
} }
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> newObjs = super.postProcessOperationsWithModels(objs, allModels); OperationsMap newObjs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) newObjs.get("operations"); OperationMap operations = newObjs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT);

View File

@ -29,6 +29,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -908,13 +910,13 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
// Generate and store argument list string of each operation into // Generate and store argument list string of each operation into
// vendor-extension: x-codegen-argList. // vendor-extension: x-codegen-argList.
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
List<String> argList = new ArrayList<>(); List<String> argList = new ArrayList<>();
boolean hasOptionalParams = false; boolean hasOptionalParams = false;

View File

@ -28,6 +28,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -969,15 +971,14 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
return Arrays.asList(primitives).contains(type); return Arrays.asList(primitives).contains(type);
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
// Generate and store argument list string of each operation into // Generate and store argument list string of each operation into
// vendor-extension: x-codegen-argList. // vendor-extension: x-codegen-argList.
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
List<String> argList = new ArrayList<>(); List<String> argList = new ArrayList<>();
boolean hasOptionalParams = false; boolean hasOptionalParams = false;

View File

@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -272,16 +273,10 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
if (objs.get("imports") instanceof List) { List<Map<String, String>> imports = objs.getImports();
List<Map<String, String>> imports = (ArrayList<Map<String, String>>)objs.get("imports"); imports.sort(Comparator.comparing(o -> o.get("import")));
Collections.sort(imports, new Comparator<Map<String, String>>() {
public int compare(Map<String, String> o1, Map<String, String> o2) {
return o1.get("import").compareTo(o2.get("import"));
}
});
objs.put("imports", imports); objs.put("imports", imports);
}
return objs; return objs;
} }

View File

@ -35,6 +35,8 @@ import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -767,12 +769,11 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
} }
@Override @Override
@SuppressWarnings("unchecked") public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) {
super.postProcessOperationsWithModels(objs, allModels); super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
if (JVM_RETROFIT2.equals(getLibrary()) && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) { if (JVM_RETROFIT2.equals(getLibrary()) && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) {
@ -850,7 +851,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
} }
} }
} }
return operations; return objs;
} }
private static boolean isMultipartType(List<Map<String, String>> consumes) { private static boolean isMultipartType(List<Map<String, String>> consumes) {

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -578,10 +580,10 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
ops.forEach(operation -> { ops.forEach(operation -> {
List<CodegenResponse> responses = operation.responses; List<CodegenResponse> responses = operation.responses;
if (responses != null) { if (responses != null) {

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -420,11 +422,9 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation op : operations) { for (CodegenOperation op : operations) {
String[] items = op.path.split("/", -1); String[] items = op.path.split("/", -1);

View File

@ -25,6 +25,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.StringUtils; import org.openapitools.codegen.utils.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -258,11 +260,9 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT);
} }

View File

@ -31,7 +31,10 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ApiInfoMap;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -238,11 +241,9 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT);
@ -272,13 +273,11 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege
return objs; return objs;
} }
@SuppressWarnings("unchecked") private static List<OperationMap> getOperations(Map<String, Object> objs) {
private static List<Map<String, Object>> getOperations(Map<String, Object> objs) { List<OperationMap> result = new ArrayList<>();
List<Map<String, Object>> result = new ArrayList<>(); ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo");
Map<String, Object> apiInfo = (Map<String, Object>) objs.get("apiInfo"); for (OperationsMap api : apiInfo.getApis()) {
List<Map<String, Object>> apis = (List<Map<String, Object>>) apiInfo.get("apis"); result.add(api.getOperations());
for (Map<String, Object> api : apis) {
result.add((Map<String, Object>) api.get("operations"));
} }
return result; return result;
} }
@ -401,9 +400,8 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) { public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
generateYAMLSpecFile(objs); generateYAMLSpecFile(objs);
for (Map<String, Object> operations : getOperations(objs)) { for (OperationMap operations : getOperations(objs)) {
@SuppressWarnings("unchecked") List<CodegenOperation> ops = operations.getOperation();
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
List<Map<String, Object>> opsByPathList = sortOperationsByPath(ops); List<Map<String, Object>> opsByPathList = sortOperationsByPath(ops);
operations.put("operationsByPath", opsByPathList); operations.put("operationsByPath", opsByPathList);

View File

@ -27,6 +27,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -713,11 +715,9 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
// http method verb conversion, depending on client library (e.g. Hyper: PUT => Put, Reqwest: PUT => put) // http method verb conversion, depending on client library (e.g. Hyper: PUT => Put, Reqwest: PUT => put)

View File

@ -23,6 +23,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -652,11 +654,11 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
if (!operation.allParams.isEmpty()) { if (!operation.allParams.isEmpty()) {
String firstParamName = operation.allParams.get(0).paramName; String firstParamName = operation.allParams.get(0).paramName;

View File

@ -22,6 +22,8 @@ import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
@ -234,11 +236,9 @@ public class PhpLaravelServerCodegen extends AbstractPhpCodegen {
// override with any special post-processing // override with any special post-processing
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation op : operations) { for (CodegenOperation op : operations) {
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
@ -261,12 +261,7 @@ public class PhpLaravelServerCodegen extends AbstractPhpCodegen {
// sort the endpoints in ascending to avoid the route priority issue. // sort the endpoints in ascending to avoid the route priority issue.
// https://github.com/swagger-api/swagger-codegen/issues/2643 // https://github.com/swagger-api/swagger-codegen/issues/2643
Collections.sort(operations, new Comparator<CodegenOperation>() { operations.sort(Comparator.comparing(lhs -> lhs.path));
@Override
public int compare(CodegenOperation lhs, CodegenOperation rhs) {
return lhs.path.compareTo(rhs.path);
}
});
return objs; return objs;
} }

View File

@ -22,6 +22,8 @@ import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
@ -166,23 +168,16 @@ public class PhpLumenServerCodegen extends AbstractPhpCodegen {
// override with any special post-processing // override with any special post-processing
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation op : operations) { for (CodegenOperation op : operations) {
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
} }
// sort the endpoints in ascending to avoid the route priority issue. // sort the endpoints in ascending to avoid the route priority issue.
Collections.sort(operations, new Comparator<CodegenOperation>() { operations.sort(Comparator.comparing(lhs -> lhs.path));
@Override
public int compare(CodegenOperation lhs, CodegenOperation rhs) {
return lhs.path.compareTo(rhs.path);
}
});
escapeMediaType(operations); escapeMediaType(operations);

View File

@ -31,6 +31,8 @@ import io.swagger.v3.oas.models.responses.ApiResponses;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -416,10 +418,10 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
String httpMethodDeclaration; String httpMethodDeclaration;
String pathPattern = null; String pathPattern = null;
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {

View File

@ -23,6 +23,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
@ -260,9 +262,9 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
String path = op.path; String path = op.path;
String[] items = path.split("/", -1); String[] items = path.split("/", -1);

View File

@ -30,7 +30,10 @@ import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ApiInfoMap;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -254,9 +257,9 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
addUserClassnameToOperations(operations); addUserClassnameToOperations(operations);
escapeMediaType(operationList); escapeMediaType(operationList);
return objs; return objs;
@ -264,21 +267,16 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen {
@Override @Override
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) { public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
Map<String, Object> apiInfo = (Map<String, Object>) objs.get("apiInfo"); ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo");
List<HashMap<String, Object>> apiList = (List<HashMap<String, Object>>) apiInfo.get("apis"); for (OperationsMap api : apiInfo.getApis()) {
for (HashMap<String, Object> api : apiList) { List<CodegenOperation> operationList = api.getOperations().getOperation();
HashMap<String, Object> operations = (HashMap<String, Object>) api.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
// Sort operations to avoid static routes shadowing // Sort operations to avoid static routes shadowing
// ref: https://github.com/nikic/FastRoute/blob/master/src/DataGenerator/RegexBasedAbstract.php#L92-L101 // ref: https://github.com/nikic/FastRoute/blob/master/src/DataGenerator/RegexBasedAbstract.php#L92-L101
Collections.sort(operationList, new Comparator<CodegenOperation>() { operationList.sort((one, another) -> {
@Override
public int compare(CodegenOperation one, CodegenOperation another) {
if (one.getHasPathParams() && !another.getHasPathParams()) return 1; if (one.getHasPathParams() && !another.getHasPathParams()) return 1;
if (!one.getHasPathParams() && another.getHasPathParams()) return -1; if (!one.getHasPathParams() && another.getHasPathParams()) return -1;
return 0; return 0;
}
}); });
} }
@ -310,8 +308,8 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen {
* *
* @param operations codegen object with operations * @param operations codegen object with operations
*/ */
private void addUserClassnameToOperations(Map<String, Object> operations) { private void addUserClassnameToOperations(OperationMap operations) {
String classname = (String) operations.get("classname"); String classname = operations.getClassname();
classname = classname.replaceAll("^" + abstractNamePrefix, ""); classname = classname.replaceAll("^" + abstractNamePrefix, "");
classname = classname.replaceAll(abstractNameSuffix + "$", ""); classname = classname.replaceAll(abstractNameSuffix + "$", "");
operations.put(USER_CLASSNAME_KEY, classname); operations.put(USER_CLASSNAME_KEY, classname);

View File

@ -26,7 +26,10 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ApiInfoMap;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -157,9 +160,9 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
addUserClassnameToOperations(operations); addUserClassnameToOperations(operations);
escapeMediaType(operationList); escapeMediaType(operationList);
return objs; return objs;
@ -167,21 +170,16 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen {
@Override @Override
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) { public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
Map<String, Object> apiInfo = (Map<String, Object>) objs.get("apiInfo"); ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo");
List<HashMap<String, Object>> apiList = (List<HashMap<String, Object>>) apiInfo.get("apis"); for (OperationsMap api : apiInfo.getApis()) {
for (HashMap<String, Object> api : apiList) { List<CodegenOperation> operationList = api.getOperations().getOperation();
HashMap<String, Object> operations = (HashMap<String, Object>) api.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
// Sort operations to avoid static routes shadowing // Sort operations to avoid static routes shadowing
// ref: https://github.com/nikic/FastRoute/blob/master/src/DataGenerator/RegexBasedAbstract.php#L92-L101 // ref: https://github.com/nikic/FastRoute/blob/master/src/DataGenerator/RegexBasedAbstract.php#L92-L101
Collections.sort(operationList, new Comparator<CodegenOperation>() { operationList.sort((one, another) -> {
@Override
public int compare(CodegenOperation one, CodegenOperation another) {
if (one.getHasPathParams() && !another.getHasPathParams()) return 1; if (one.getHasPathParams() && !another.getHasPathParams()) return 1;
if (!one.getHasPathParams() && another.getHasPathParams()) return -1; if (!one.getHasPathParams() && another.getHasPathParams()) return -1;
return 0; return 0;
}
}); });
} }
return objs; return objs;
@ -217,8 +215,8 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen {
* *
* @param operations codegen object with operations * @param operations codegen object with operations
*/ */
private void addUserClassnameToOperations(Map<String, Object> operations) { private void addUserClassnameToOperations(OperationMap operations) {
String classname = (String) operations.get("classname"); String classname = operations.getClassname();
classname = classname.replaceAll("^" + abstractNamePrefix, ""); classname = classname.replaceAll("^" + abstractNamePrefix, "");
classname = classname.replaceAll(abstractNameSuffix + "$", ""); classname = classname.replaceAll(abstractNameSuffix + "$", "");
operations.put(USER_CLASSNAME_KEY, classname); operations.put(USER_CLASSNAME_KEY, classname);

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -391,15 +393,15 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
operations.put("controllerName", toControllerName((String) operations.get("pathPrefix"))); operations.put("controllerName", toControllerName(operations.getPathPrefix()));
operations.put("symfonyService", toSymfonyService((String) operations.get("pathPrefix"))); operations.put("symfonyService", toSymfonyService(operations.getPathPrefix()));
List<CodegenSecurity> authMethods = new ArrayList<>(); List<CodegenSecurity> authMethods = new ArrayList<>();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
// Loop through all input parameters to determine, whether we have to import something to // Loop through all input parameters to determine, whether we have to import something to

View File

@ -27,6 +27,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -1012,8 +1014,8 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
HashMap<String, CodegenModel> modelMaps = new HashMap<>(); HashMap<String, CodegenModel> modelMaps = new HashMap<>();
HashMap<String, Integer> processedModelMaps = new HashMap<>(); HashMap<String, Integer> processedModelMaps = new HashMap<>();
@ -1022,7 +1024,7 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
int index = 0; int index = 0;
for (CodegenParameter p : op.allParams) { for (CodegenParameter p : op.allParams) {

View File

@ -28,6 +28,8 @@ import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -541,9 +543,9 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
int index = 1; int index = 1;
for (CodegenParameter p : op.allParams) { for (CodegenParameter p : op.allParams) {

View File

@ -31,6 +31,8 @@ import org.openapitools.codegen.CodegenDiscriminator.MappedModel;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.utils.ProcessUtils;
import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.GeneratorMetadata;
@ -365,13 +367,13 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen {
@Override @Override
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
// fix the imports that each model has, add the module reference to the model // fix the imports that each model has, add the module reference to the model
// loops through imports and converts them all // loops through imports and converts them all
// from 'Pet' to 'from petstore_api.model.pet import Pet' // from 'Pet' to 'from petstore_api.model.pet import Pet'
HashMap<String, Object> val = (HashMap<String, Object>) objs.get("operations"); OperationMap val = objs.getOperations();
ArrayList<CodegenOperation> operations = (ArrayList<CodegenOperation>) val.get("operation"); List<CodegenOperation> operations = val.getOperation();
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
if (operation.imports.isEmpty()) { if (operation.imports.isEmpty()) {
continue; continue;

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.api.TemplatePathLocator;
import org.openapitools.codegen.ignore.CodegenIgnoreProcessor; import org.openapitools.codegen.ignore.CodegenIgnoreProcessor;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.*; import org.openapitools.codegen.templating.*;
import io.swagger.v3.core.util.Json; import io.swagger.v3.core.util.Json;
import io.swagger.v3.oas.models.media.*; import io.swagger.v3.oas.models.media.*;
@ -424,12 +426,12 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
It is very verbose to write all of this info into the api template It is very verbose to write all of this info into the api template
This ingests all operations under a tag in the objs input and writes out one file for each endpoint This ingests all operations under a tag in the objs input and writes out one file for each endpoint
*/ */
protected void generateEndpoints(Map<String, Object> objs) { protected void generateEndpoints(OperationsMap objs) {
if (!(Boolean) additionalProperties.get(CodegenConstants.GENERATE_APIS)) { if (!(Boolean) additionalProperties.get(CodegenConstants.GENERATE_APIS)) {
return; return;
} }
HashMap<String, Object> operations = (HashMap<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
ArrayList<CodegenOperation> codegenOperations = (ArrayList<CodegenOperation>) operations.get("operation"); List<CodegenOperation> codegenOperations = operations.getOperation();
for (CodegenOperation co: codegenOperations) { for (CodegenOperation co: codegenOperations) {
for (Tag tag: co.tags) { for (Tag tag: co.tags) {
String tagName = tag.getName(); String tagName = tag.getName();
@ -442,7 +444,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
String templateName = "endpoint.handlebars"; String templateName = "endpoint.handlebars";
String filename = endpointFilename(templateName, pythonTagName, co.operationId); String filename = endpointFilename(templateName, pythonTagName, co.operationId);
try { try {
File written = processTemplateToFile(operationMap, templateName, filename, true, CodegenConstants.APIS); processTemplateToFile(operationMap, templateName, filename, true, CodegenConstants.APIS);
} catch (IOException e) { } catch (IOException e) {
LOGGER.error("Error when writing template file {}", e.toString()); LOGGER.error("Error when writing template file {}", e.toString());
} }
@ -671,14 +673,14 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
@Override @Override
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
// fix the imports that each model has, add the module reference to the model // fix the imports that each model has, add the module reference to the model
// loops through imports and converts them all // loops through imports and converts them all
// from 'Pet' to 'from petstore_api.model.pet import Pet' // from 'Pet' to 'from petstore_api.model.pet import Pet'
HashMap<String, Object> val = (HashMap<String, Object>) objs.get("operations"); OperationMap val = objs.getOperations();
ArrayList<CodegenOperation> operations = (ArrayList<CodegenOperation>) val.get("operation"); List<CodegenOperation> operations = val.getOperation();
ArrayList<HashMap<String, String>> imports = (ArrayList<HashMap<String, String>>) objs.get("imports"); List<Map<String, String>> imports = objs.getImports();
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
if (operation.imports.size() == 0) { if (operation.imports.size() == 0) {
continue; continue;

View File

@ -30,6 +30,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -188,12 +190,12 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
// Set will make sure that no duplicated items are used. // Set will make sure that no duplicated items are used.
Set<String> securityImports = new HashSet<>(); Set<String> securityImports = new HashSet<>();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (final CodegenOperation operation : ops) { for (final CodegenOperation operation : ops) {
List<CodegenResponse> responses = operation.responses; List<CodegenResponse> responses = operation.responses;
if (responses != null) { if (responses != null) {
@ -230,7 +232,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
} }
} }
objs.put("securityImports", new ArrayList<String>(securityImports)); objs.put("securityImports", new ArrayList<>(securityImports));
return objs; return objs;
} }

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -689,16 +691,16 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); OperationMap objectMap = objs.getOperations();
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>(); HashMap<String, CodegenModel> modelMaps = new HashMap<>();
for (ModelMap modelMap : allModels) { for (ModelMap modelMap : allModels) {
CodegenModel m = modelMap.getModel(); CodegenModel m = modelMap.getModel();
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation"); List<CodegenOperation> operations = objectMap.getOperation();
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
for (CodegenParameter cp : operation.allParams) { for (CodegenParameter cp : operation.allParams) {
cp.vendorExtensions.put("x-r-example", constructExampleCode(cp, modelMaps)); cp.vendorExtensions.put("x-r-example", constructExampleCode(cp, modelMaps));

View File

@ -23,6 +23,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -573,18 +575,18 @@ public class RubyClientCodegen extends AbstractRubyCodegen {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>(); HashMap<String, CodegenModel> modelMaps = new HashMap<>();
HashMap<String, Integer> processedModelMaps = new HashMap<String, Integer>(); HashMap<String, Integer> processedModelMaps = new HashMap<>();
for (ModelMap modelMap : allModels) { for (ModelMap modelMap : allModels) {
CodegenModel m = modelMap.getModel(); CodegenModel m = modelMap.getModel();
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
for (CodegenParameter p : op.allParams) { for (CodegenParameter p : op.allParams) {
p.vendorExtensions.put("x-ruby-example", constructExampleCode(p, modelMaps, processedModelMaps)); p.vendorExtensions.put("x-ruby-example", constructExampleCode(p, modelMaps, processedModelMaps));

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.StringUtils; import org.openapitools.codegen.utils.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -525,11 +527,9 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
@SuppressWarnings("unchecked") OperationMap objectMap = objs.getOperations();
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); List<CodegenOperation> operations = objectMap.getOperation();
@SuppressWarnings("unchecked")
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation");
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
// http method verb conversion, depending on client library (e.g. Hyper: PUT => Put, Reqwest: PUT => put) // http method verb conversion, depending on client library (e.g. Hyper: PUT => Put, Reqwest: PUT => put)
if (HYPER_LIBRARY.equals(getLibrary())) { if (HYPER_LIBRARY.equals(getLibrary())) {

View File

@ -33,8 +33,11 @@ import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ApiInfoMap;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -968,9 +971,9 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
postProcessOperationWithModels(op, allModels); postProcessOperationWithModels(op, allModels);
@ -1370,12 +1373,9 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
* @return true if any operation has a callback, false otherwise * @return true if any operation has a callback, false otherwise
*/ */
private static boolean haveCallbacks(Map<String, Object> bundle) { private static boolean haveCallbacks(Map<String, Object> bundle) {
Map<String, Object> apiInfo = (Map<String, Object>) bundle.get("apiInfo"); ApiInfoMap apiInfo = (ApiInfoMap) bundle.get("apiInfo");
List<Object> apis = (List<Object>) apiInfo.get("apis"); for (OperationsMap api : apiInfo.getApis()) {
for (Object api : apis) { List<CodegenOperation> ops = api.getOperations().getOperation();
Map<String, Object> apiData = (Map<String, Object>) api;
Map<String, Object> opss = (Map<String, Object>) apiData.get("operations");
List<CodegenOperation> ops = (List<CodegenOperation>) opss.get("operation");
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
if (!op.callbacks.isEmpty()) { if (!op.callbacks.isEmpty()) {
return true; return true;

View File

@ -26,6 +26,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -212,13 +214,12 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
if (registerNonStandardStatusCodes) { if (registerNonStandardStatusCodes) {
try { try {
@SuppressWarnings("unchecked") OperationMap opsMap = objs.getOperations();
Map<String, ArrayList<CodegenOperation>> opsMap = (Map<String, ArrayList<CodegenOperation>>) objs.get("operations"); HashSet<Integer> unknownCodes = new HashSet<>();
HashSet<Integer> unknownCodes = new HashSet<Integer>(); for (CodegenOperation operation : opsMap.getOperation()) {
for (CodegenOperation operation : opsMap.get("operation")) {
for (CodegenResponse response : operation.responses) { for (CodegenResponse response : operation.responses) {
if ("default".equals(response.code)) { if ("default".equals(response.code)) {
continue; continue;
@ -251,13 +252,7 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code
} }
// Remove OAuth securities // Remove OAuth securities
Iterator<CodegenSecurity> it = codegenSecurities.iterator(); codegenSecurities.removeIf(security -> security.isOAuth);
while (it.hasNext()) {
final CodegenSecurity security = it.next();
if (security.isOAuth) {
it.remove();
}
}
if (codegenSecurities.isEmpty()) { if (codegenSecurities.isEmpty()) {
return null; return null;
} }

View File

@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -282,8 +284,8 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> baseObjs = super.postProcessOperationsWithModels(objs, allModels); OperationsMap baseObjs = super.postProcessOperationsWithModels(objs, allModels);
pathMatcherPatternsPostProcessor(baseObjs); pathMatcherPatternsPostProcessor(baseObjs);
marshallingPostProcessor(baseObjs); marshallingPostProcessor(baseObjs);
return baseObjs; return baseObjs;
@ -344,13 +346,12 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements
public static String PATH_MATCHER_PATTERNS_KEY = "pathMatcherPatterns"; public static String PATH_MATCHER_PATTERNS_KEY = "pathMatcherPatterns";
@SuppressWarnings("unchecked") private static void pathMatcherPatternsPostProcessor(OperationsMap objs) {
private static void pathMatcherPatternsPostProcessor(Map<String, Object> objs) {
if (objs != null) { if (objs != null) {
HashMap<String, PathMatcherPattern> patternMap = new HashMap<>(); HashMap<String, PathMatcherPattern> patternMap = new HashMap<>();
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
for (CodegenParameter parameter : operation.pathParams) { for (CodegenParameter parameter : operation.pathParams) {
if (parameter.pattern != null && !parameter.pattern.isEmpty()) { if (parameter.pattern != null && !parameter.pattern.isEmpty()) {
@ -371,8 +372,7 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements
} }
// Responsible for setting up Marshallers/Unmarshallers // Responsible for setting up Marshallers/Unmarshallers
@SuppressWarnings("unchecked") public static void marshallingPostProcessor(OperationsMap objs) {
public static void marshallingPostProcessor(Map<String, Object> objs) {
if (objs == null) { if (objs == null) {
return; return;
@ -384,9 +384,9 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements
boolean hasCookieParams = false; boolean hasCookieParams = false;
boolean hasMultipart = false; boolean hasMultipart = false;
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
boolean isMultipart = op.isMultipart; boolean isMultipart = op.isMultipart;

View File

@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -229,11 +231,10 @@ public class ScalaFinchServerCodegen extends DefaultCodegen implements CodegenCo
return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar);
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
// Converts GET /foo/bar => get("foo" :: "bar") // Converts GET /foo/bar => get("foo" :: "bar")

View File

@ -22,6 +22,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -202,9 +204,9 @@ public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements Cod
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
ArrayList<CodegenOperation> oplist = (ArrayList<CodegenOperation>) operations.get("operation"); List<CodegenOperation> oplist = operations.getOperation();
for (CodegenOperation codegenOperation : oplist) { for (CodegenOperation codegenOperation : oplist) {
String path = codegenOperation.path; String path = codegenOperation.path;

View File

@ -23,8 +23,11 @@ import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ApiInfoMap;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.mustache.IndentedLambda; import org.openapitools.codegen.templating.mustache.IndentedLambda;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -223,9 +226,8 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem
.put("indented_4", new IndentedLambda(4, " ")); .put("indented_4", new IndentedLambda(4, " "));
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, CodegenModel> models = new HashMap<>(); Map<String, CodegenModel> models = new HashMap<>();
for (ModelMap _mo : allModels) { for (ModelMap _mo : allModels) {
@ -233,9 +235,9 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem
models.put(model.classname, _mo.getModel()); models.put(model.classname, _mo.getModel());
} }
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> ops = operations.getOperation();
for (CodegenOperation operation : ops) { for (CodegenOperation operation : ops) {
Pattern pathVariableMatcher = Pattern.compile("\\{([^}]+)}"); Pattern pathVariableMatcher = Pattern.compile("\\{([^}]+)}");
Matcher match = pathVariableMatcher.matcher(operation.path); Matcher match = pathVariableMatcher.matcher(operation.path);
@ -277,18 +279,15 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem
return objs; return objs;
} }
@SuppressWarnings("unchecked")
@Override @Override
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) { public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
objs = super.postProcessSupportingFileData(objs); objs = super.postProcessSupportingFileData(objs);
generateJSONSpecFile(objs); generateJSONSpecFile(objs);
// Prettify routes file // Prettify routes file
Map<String, Object> apiInfo = (Map<String, Object>) objs.get("apiInfo"); ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo");
List<Map<String, Object>> apis = (List<Map<String, Object>>) apiInfo.get("apis"); List<CodegenOperation> ops = apiInfo.getApis().stream()
List<CodegenOperation> ops = apis.stream() .flatMap(api -> api.getOperations().getOperation().stream())
.map(api -> (Map<String, Object>) api.get("operations"))
.flatMap(operations -> ((List<CodegenOperation>) operations.get("operation")).stream())
.collect(Collectors.toList()); .collect(Collectors.toList());
int maxPathLength = ops.stream() int maxPathLength = ops.stream()
.mapToInt(op -> op.httpMethod.length() + op.path.length()) .mapToInt(op -> op.httpMethod.length() + op.path.length())

View File

@ -30,6 +30,8 @@ import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -313,13 +315,12 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
if (registerNonStandardStatusCodes) { if (registerNonStandardStatusCodes) {
try { try {
@SuppressWarnings("unchecked") OperationMap opsMap = objs.getOperations();
Map<String, ArrayList<CodegenOperation>> opsMap = (Map<String, ArrayList<CodegenOperation>>) objs.get("operations"); HashSet<Integer> unknownCodes = new HashSet<>();
HashSet<Integer> unknownCodes = new HashSet<Integer>(); for (CodegenOperation operation : opsMap.getOperation()) {
for (CodegenOperation operation : opsMap.get("operation")) {
for (CodegenResponse response : operation.responses) { for (CodegenResponse response : operation.responses) {
if ("default".equals(response.code)) { if ("default".equals(response.code)) {
continue; continue;
@ -352,13 +353,7 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code
} }
// Remove OAuth securities // Remove OAuth securities
Iterator<CodegenSecurity> it = codegenSecurities.iterator(); codegenSecurities.removeIf(security -> security.isOAuth);
while (it.hasNext()) {
final CodegenSecurity security = it.next();
if (security.isOAuth) {
it.remove();
}
}
if (codegenSecurities.isEmpty()) { if (codegenSecurities.isEmpty()) {
return null; return null;
} }

View File

@ -20,6 +20,8 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
@ -167,9 +169,9 @@ public class ScalatraServerCodegen extends AbstractScalaCodegen implements Codeg
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
// force http method to lower case // force http method to lower case
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);

View File

@ -62,6 +62,8 @@ import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.meta.features.WireFormatFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.mustache.SplitStringLambda; import org.openapitools.codegen.templating.mustache.SplitStringLambda;
import org.openapitools.codegen.templating.mustache.TrimWhitespaceLambda; import org.openapitools.codegen.templating.mustache.TrimWhitespaceLambda;
import org.openapitools.codegen.utils.URLPathUtils; import org.openapitools.codegen.utils.URLPathUtils;
@ -622,10 +624,10 @@ public class SpringCodegen extends AbstractJavaCodegen
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
final Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); final OperationMap operations = objs.getOperations();
if (operations != null) { if (operations != null) {
final List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation"); final List<CodegenOperation> ops = operations.getOperation();
for (final CodegenOperation operation : ops) { for (final CodegenOperation operation : ops) {
final List<CodegenResponse> responses = operation.responses; final List<CodegenResponse> responses = operation.responses;
if (responses != null) { if (responses != null) {

View File

@ -29,6 +29,8 @@ import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.Markdown; import org.openapitools.codegen.utils.Markdown;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -142,9 +144,9 @@ public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfi
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
for (CodegenResponse response : op.responses) { for (CodegenResponse response : op.responses) {

View File

@ -26,6 +26,8 @@ import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.Markdown; import org.openapitools.codegen.utils.Markdown;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
@ -125,9 +127,9 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT);
for (CodegenResponse response : op.responses) { for (CodegenResponse response : op.responses) {

View File

@ -28,6 +28,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -1182,16 +1184,16 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
Map<String, Object> objectMap = (Map<String, Object>) objs.get("operations"); OperationMap objectMap = objs.getOperations();
HashMap<String, CodegenModel> modelMaps = new HashMap<String, CodegenModel>(); HashMap<String, CodegenModel> modelMaps = new HashMap<>();
for (ModelMap modelMap: allModels) { for (ModelMap modelMap: allModels) {
CodegenModel m = modelMap.getModel(); CodegenModel m = modelMap.getModel();
modelMaps.put(m.classname, m); modelMaps.put(m.classname, m);
} }
List<CodegenOperation> operations = (List<CodegenOperation>) objectMap.get("operation"); List<CodegenOperation> operations = objectMap.getOperation();
for (CodegenOperation operation : operations) { for (CodegenOperation operation : operations) {
for (CodegenParameter cp : operation.allParams) { for (CodegenParameter cp : operation.allParams) {
cp.vendorExtensions.put("x-swift-example", constructExampleCode(cp, modelMaps, new HashSet<>())); cp.vendorExtensions.put("x-swift-example", constructExampleCode(cp, modelMaps, new HashSet<>()));

View File

@ -22,6 +22,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.SemVer; import org.openapitools.codegen.utils.SemVer;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -385,13 +387,13 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); OperationMap objs = operations.getOperations();
// Add filename information for api imports // Add filename information for api imports
objs.put("apiFilename", getApiFilenameFromClassname(objs.get("classname").toString())); objs.put("apiFilename", getApiFilenameFromClassname(objs.getClassname()));
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = objs.getOperation();
boolean hasSomeFormParams = false; boolean hasSomeFormParams = false;
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
if (op.getHasFormParams()) { if (op.getHasFormParams()) {
@ -446,8 +448,8 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode
operations.put("hasSomeFormParams", hasSomeFormParams); operations.put("hasSomeFormParams", hasSomeFormParams);
// Add additional filename information for model imports in the services // Add additional filename information for model imports in the services
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports"); List<Map<String, String>> imports = operations.getImports();
for (Map<String, Object> im : imports) { for (Map<String, String> im : imports) {
// This property is not used in the templates any more, subject for removal // This property is not used in the templates any more, subject for removal
im.put("filename", im.get("import")); im.put("filename", im.get("import"));
im.put("classname", im.get("classname")); im.put("classname", im.get("classname"));

View File

@ -20,6 +20,8 @@ package org.openapitools.codegen.languages;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import java.util.*; import java.util.*;
@ -84,12 +86,12 @@ public class TypeScriptAureliaClientCodegen extends AbstractTypeScriptClientCode
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
HashSet<String> modelImports = new HashSet<>(); HashSet<String> modelImports = new HashSet<>();
Map<String, Object> operations = (Map<String, Object>) objs.get("operations"); OperationMap operations = objs.getOperations();
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation"); List<CodegenOperation> operationList = operations.getOperation();
for (CodegenOperation op : operationList) { for (CodegenOperation op : operationList) {
// Aurelia uses "asGet", "asPost", ... methods; change the method format // Aurelia uses "asGet", "asPost", ... methods; change the method format
op.httpMethod = camelize(op.httpMethod.toLowerCase(Locale.ROOT)); op.httpMethod = camelize(op.httpMethod.toLowerCase(Locale.ROOT));

View File

@ -24,6 +24,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import java.util.*; import java.util.*;
@ -145,10 +147,10 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
objs = super.postProcessOperationsWithModels(objs, allModels); objs = super.postProcessOperationsWithModels(objs, allModels);
Map<String, Object> vals = (Map<String, Object>) objs.getOrDefault("operations", new HashMap<>()); OperationMap vals = objs.getOperations();
List<CodegenOperation> operations = (List<CodegenOperation>) vals.getOrDefault("operation", new ArrayList<>()); List<CodegenOperation> operations = vals.getOperation();
/* /*
Filter all the operations that are multipart/form-data operations and set the vendor extension flag Filter all the operations that are multipart/form-data operations and set the vendor extension flag
'multipartFormData' for the template to work with. 'multipartFormData' for the template to work with.
@ -156,9 +158,7 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege
operations.stream() operations.stream()
.filter(op -> op.hasConsumes) .filter(op -> op.hasConsumes)
.filter(op -> op.consumes.stream().anyMatch(opc -> opc.values().stream().anyMatch("multipart/form-data"::equals))) .filter(op -> op.consumes.stream().anyMatch(opc -> opc.values().stream().anyMatch("multipart/form-data"::equals)))
.forEach(op -> { .forEach(op -> op.vendorExtensions.putIfAbsent("multipartFormData", true));
op.vendorExtensions.putIfAbsent("multipartFormData", true);
});
return objs; return objs;
} }
@ -191,7 +191,6 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege
} }
@Override @Override
@SuppressWarnings("unchecked")
public ModelsMap postProcessModels(ModelsMap objs) { public ModelsMap postProcessModels(ModelsMap objs) {
List<ModelMap> models = postProcessModelsEnum(objs).getModels(); List<ModelMap> models = postProcessModelsEnum(objs).getModels();

View File

@ -35,6 +35,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -318,18 +320,17 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> models) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> models) {
// Add additional filename information for model imports in the apis // Add additional filename information for model imports in the apis
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports"); List<Map<String, String>> imports = operations.getImports();
for (Map<String, Object> im : imports) { for (Map<String, String> im : imports) {
im.put("filename", ((String) im.get("import")).replace(".", "/")); im.put("filename", im.get("import").replace(".", "/"));
im.put("classname", getModelnameFromModelFilename(im.get("import").toString())); im.put("classname", getModelnameFromModelFilename(im.get("import")));
} }
@SuppressWarnings("unchecked") OperationMap operationsMap = operations.getOperations();
Map<String, Object> operationsMap = (Map<String, Object>) operations.get("operations"); List<CodegenOperation> operationList = operationsMap.getOperation();
List<CodegenOperation> operationList = (List<CodegenOperation>) operationsMap.get("operation");
for (CodegenOperation operation: operationList) { for (CodegenOperation operation: operationList) {
List<CodegenResponse> responses = operation.responses; List<CodegenResponse> responses = operation.responses;
operation.returnType = this.getReturnType(responses); operation.returnType = this.getReturnType(responses);

View File

@ -30,6 +30,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.templating.mustache.IndentedLambda; import org.openapitools.codegen.templating.mustache.IndentedLambda;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
@ -572,9 +574,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
// Add supporting file only if we plan to generate files in /apis // Add supporting file only if we plan to generate files in /apis
if (operations.size() > 0 && !addedApiIndex) { if (!operations.isEmpty() && !addedApiIndex) {
addedApiIndex = true; addedApiIndex = true;
supportingFiles.add(new SupportingFile("apis.index.mustache", apiPackage().replace('.', File.separatorChar), "index.ts")); supportingFiles.add(new SupportingFile("apis.index.mustache", apiPackage().replace('.', File.separatorChar), "index.ts"));
if (this.getSagasAndRecords()) { if (this.getSagasAndRecords()) {
@ -584,7 +586,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
} }
// Add supporting file only if we plan to generate files in /models // Add supporting file only if we plan to generate files in /models
if (allModels.size() > 0 && !addedModelIndex) { if (!allModels.isEmpty() && !addedModelIndex) {
addedModelIndex = true; addedModelIndex = true;
supportingFiles.add(new SupportingFile("models.index.mustache", modelPackage().replace('.', File.separatorChar), "index.ts")); supportingFiles.add(new SupportingFile("models.index.mustache", modelPackage().replace('.', File.separatorChar), "index.ts"));
} }
@ -763,10 +765,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
return var.items.isNullable || (var.items.items != null && var.items.items.isNullable); return var.items.isNullable || (var.items.items != null && var.items.items.isNullable);
} }
private void escapeOperationIds(Map<String, Object> operations) { private void escapeOperationIds(OperationsMap operations) {
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations"); for (CodegenOperation _op : operations.getOperations().getOperation()) {
List<ExtendedCodegenOperation> operationList = (List<ExtendedCodegenOperation>) _operations.get("operation"); ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op;
for (ExtendedCodegenOperation op : operationList) {
String param = op.operationIdCamelCase + "Request"; String param = op.operationIdCamelCase + "Request";
if (op.imports.contains(param)) { if (op.imports.contains(param)) {
// we import a model with the same name as the generated operation, escape it // we import a model with the same name as the generated operation, escape it
@ -777,26 +778,25 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
} }
} }
private void addOperationModelImportInformation(Map<String, Object> operations) { private void addOperationModelImportInformation(OperationsMap operations) {
// This method will add extra information to the operations.imports array. // This method will add extra information to the operations.imports array.
// The api template uses this information to import all the required // The api template uses this information to import all the required
// models for a given operation. // models for a given operation.
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports"); List<Map<String, String>> imports = operations.getImports();
List<String> existingRecordClassNames = new ArrayList<String>(); List<String> existingRecordClassNames = new ArrayList<>();
List<String> existingClassNames = new ArrayList<String>(); List<String> existingClassNames = new ArrayList<>();
for (Map<String, Object> im : imports) { for (Map<String, String> im : imports) {
String className = im.get("import").toString().replace(modelPackage() + ".", ""); String className = im.get("import").replace(modelPackage() + ".", "");
existingClassNames.add(className); existingClassNames.add(className);
existingRecordClassNames.add(className + "Record"); existingRecordClassNames.add(className + "Record");
im.put("className", className); im.put("className", className);
} }
if (this.getSagasAndRecords()) { if (this.getSagasAndRecords()) {
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations"); Set<String> additionalPassthroughImports = new TreeSet<>();
List<ExtendedCodegenOperation> operationList = (List<ExtendedCodegenOperation>) _operations.get("operation"); for (CodegenOperation _op : operations.getOperations().getOperation()) {
Set<String> additionalPassthroughImports = new TreeSet<String>(); ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op;
for (ExtendedCodegenOperation op : operationList) { if (op.returnPassthrough != null && op.returnBaseTypeAlternate != null) {
if (op.returnPassthrough != null && op.returnBaseTypeAlternate instanceof String) {
if (op.returnTypeSupportsEntities && !existingRecordClassNames.contains(op.returnBaseTypeAlternate)) { if (op.returnTypeSupportsEntities && !existingRecordClassNames.contains(op.returnBaseTypeAlternate)) {
additionalPassthroughImports.add(op.returnBaseTypeAlternate); additionalPassthroughImports.add(op.returnBaseTypeAlternate);
} else if (!op.returnTypeSupportsEntities && !existingClassNames.contains(op.returnBaseTypeAlternate)) { } else if (!op.returnTypeSupportsEntities && !existingClassNames.contains(op.returnBaseTypeAlternate)) {
@ -809,14 +809,13 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
} }
} }
private void updateOperationParameterForEnum(Map<String, Object> operations) { private void updateOperationParameterForEnum(OperationsMap operations) {
// This method will add extra information as to whether or not we have enums and // This method will add extra information as to whether or not we have enums and
// update their names with the operation.id prefixed. // update their names with the operation.id prefixed.
// It will also set the uniqueId status if provided. // It will also set the uniqueId status if provided.
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
List<ExtendedCodegenOperation> operationList = (List<ExtendedCodegenOperation>) _operations.get("operation");
boolean hasEnum = false; boolean hasEnum = false;
for (ExtendedCodegenOperation op : operationList) { for (CodegenOperation _op : operations.getOperations().getOperation()) {
ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op;
for (CodegenParameter cpParam : op.allParams) { for (CodegenParameter cpParam : op.allParams) {
ExtendedCodegenParameter param = (ExtendedCodegenParameter) cpParam; ExtendedCodegenParameter param = (ExtendedCodegenParameter) cpParam;
@ -831,13 +830,12 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
operations.put("hasEnums", hasEnum); operations.put("hasEnums", hasEnum);
} }
private void updateOperationParameterForSagaAndRecords(Map<String, Object> operations) { private void updateOperationParameterForSagaAndRecords(OperationsMap operations) {
// This method will add extra information as to whether or not we have enums and // This method will add extra information as to whether or not we have enums and
// update their names with the operation.id prefixed. // update their names with the operation.id prefixed.
// It will also set the uniqueId status if provided. // It will also set the uniqueId status if provided.
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations"); for (CodegenOperation _op : operations.getOperations().getOperation()) {
List<ExtendedCodegenOperation> operationList = (List<ExtendedCodegenOperation>) _operations.get("operation"); ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op;
for (ExtendedCodegenOperation op : operationList) {
for (CodegenParameter cpParam : op.allParams) { for (CodegenParameter cpParam : op.allParams) {
ExtendedCodegenParameter param = (ExtendedCodegenParameter) cpParam; ExtendedCodegenParameter param = (ExtendedCodegenParameter) cpParam;
@ -881,13 +879,12 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
} }
} }
private void addOperationObjectResponseInformation(Map<String, Object> operations) { private void addOperationObjectResponseInformation(OperationsMap operations) {
// This method will modify the information on the operations' return type. // This method will modify the information on the operations' return type.
// The api template uses this information to know when to return a text // The api template uses this information to know when to return a text
// response for a given simple response operation. // response for a given simple response operation.
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations"); for (CodegenOperation _op : operations.getOperations().getOperation()) {
List<ExtendedCodegenOperation> operationList = (List<ExtendedCodegenOperation>) _operations.get("operation"); ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op;
for (ExtendedCodegenOperation op : operationList) {
if ("object".equals(op.returnType)) { if ("object".equals(op.returnType)) {
op.isMap = true; op.isMap = true;
op.returnSimpleType = false; op.returnSimpleType = false;
@ -896,7 +893,6 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
} }
private void addOperationPrefixParameterInterfacesInformation(Map<String, Object> operations) { private void addOperationPrefixParameterInterfacesInformation(Map<String, Object> operations) {
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
operations.put("prefixParameterInterfaces", getPrefixParameterInterfaces()); operations.put("prefixParameterInterfaces", getPrefixParameterInterfaces());
} }

View File

@ -25,6 +25,8 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
@ -197,13 +199,13 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); OperationMap objs = operations.getOperations();
// Add filename information for api imports // Add filename information for api imports
objs.put("apiFilename", getApiFilenameFromClassname(objs.get("classname").toString())); objs.put("apiFilename", getApiFilenameFromClassname(objs.getClassname()));
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = objs.getOperation();
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
// Prep a string buffer where we're going to set up our new version of the string. // Prep a string buffer where we're going to set up our new version of the string.
StringBuilder pathBuffer = new StringBuilder(); StringBuilder pathBuffer = new StringBuilder();
@ -246,10 +248,10 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo
} }
// Add additional filename information for model imports in the services // Add additional filename information for model imports in the services
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports"); List<Map<String, String>> imports = operations.getImports();
for (Map<String, Object> im : imports) { for (Map<String, String> im : imports) {
im.put("filename", im.get("import")); im.put("filename", im.get("import"));
im.put("classname", getModelnameFromModelFilename(im.get("filename").toString())); im.put("classname", getModelnameFromModelFilename(im.get("filename")));
} }
return operations; return operations;

View File

@ -22,6 +22,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.openapitools.codegen.utils.SemVer; import org.openapitools.codegen.utils.SemVer;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -267,13 +269,13 @@ public class TypeScriptNestjsClientCodegen extends AbstractTypeScriptClientCodeg
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); OperationMap objs = operations.getOperations();
// Add filename information for api imports // Add filename information for api imports
objs.put("apiFilename", getApiFilenameFromClassname(objs.get("classname").toString())); objs.put("apiFilename", getApiFilenameFromClassname(objs.getClassname()));
List<CodegenOperation> ops = (List<CodegenOperation>) objs.get("operation"); List<CodegenOperation> ops = objs.getOperation();
boolean hasSomeFormParams = false; boolean hasSomeFormParams = false;
for (CodegenOperation op : ops) { for (CodegenOperation op : ops) {
if (op.getHasFormParams()) { if (op.getHasFormParams()) {
@ -327,8 +329,8 @@ public class TypeScriptNestjsClientCodegen extends AbstractTypeScriptClientCodeg
operations.put("hasSomeFormParams", hasSomeFormParams); operations.put("hasSomeFormParams", hasSomeFormParams);
// Add additional filename information for model imports in the services // Add additional filename information for model imports in the services
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports"); List<Map<String, String>> imports = operations.getImports();
for (Map<String, Object> im : imports) { for (Map<String, String> im : imports) {
im.put("filename", im.get("import")); im.put("filename", im.get("import"));
im.put("classname", im.get("classname")); im.put("classname", im.get("classname"));
} }

View File

@ -25,6 +25,8 @@ import io.swagger.v3.oas.models.responses.ApiResponse;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -198,13 +200,13 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
Map<String, Object> objs = (Map<String, Object>) operations.get("operations"); OperationMap objs = operations.getOperations();
// The api.mustache template requires all of the auth methods for the whole api // The api.mustache template requires all of the auth methods for the whole api
// Loop over all the operations and pick out each unique auth method // Loop over all the operations and pick out each unique auth method
Map<String, CodegenSecurity> authMethodsMap = new HashMap<>(); Map<String, CodegenSecurity> authMethodsMap = new HashMap<>();
for (CodegenOperation op : (List<CodegenOperation>) objs.get("operation")) { for (CodegenOperation op : objs.getOperation()) {
if (op.hasAuthMethods) { if (op.hasAuthMethods) {
for (CodegenSecurity sec : op.authMethods) { for (CodegenSecurity sec : op.authMethods) {
authMethodsMap.put(sec.name, sec); authMethodsMap.put(sec.name, sec);
@ -219,12 +221,12 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen
} }
// Add filename information for api imports // Add filename information for api imports
objs.put("apiFilename", getApiFilenameFromClassname(objs.get("classname").toString())); objs.put("apiFilename", getApiFilenameFromClassname(objs.getClassname()));
// Add additional filename information for model imports in the apis // Add additional filename information for model imports in the apis
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports"); List<Map<String, String>> imports = operations.getImports();
for (Map<String, Object> im : imports) { for (Map<String, String> im : imports) {
im.put("filename", im.get("import").toString()); im.put("filename", im.get("import"));
} }
return operations; return operations;

View File

@ -22,6 +22,7 @@ import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import java.io.File; import java.io.File;
@ -185,15 +186,15 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
// Add supporting file only if we plan to generate files in /apis // Add supporting file only if we plan to generate files in /apis
if (operations.size() > 0 && !addedApiIndex) { if (!operations.isEmpty() && !addedApiIndex) {
addedApiIndex = true; addedApiIndex = true;
supportingFiles.add(new SupportingFile("apis.index.mustache", apiPackage().replace('.', File.separatorChar), "index.ts")); supportingFiles.add(new SupportingFile("apis.index.mustache", apiPackage().replace('.', File.separatorChar), "index.ts"));
} }
// Add supporting file only if we plan to generate files in /models // Add supporting file only if we plan to generate files in /models
if (allModels.size() > 0 && !addedModelIndex) { if (!allModels.isEmpty() && !addedModelIndex) {
addedModelIndex = true; addedModelIndex = true;
supportingFiles.add(new SupportingFile("models.index.mustache", modelPackage().replace('.', File.separatorChar), "index.ts")); supportingFiles.add(new SupportingFile("models.index.mustache", modelPackage().replace('.', File.separatorChar), "index.ts"));
} }
@ -204,13 +205,13 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC
return operations; return operations;
} }
private void addOperationModelImportInformation(Map<String, Object> operations) { private void addOperationModelImportInformation(OperationsMap operations) {
// This method will add extra information to the operations.imports array. // This method will add extra information to the operations.imports array.
// The api template uses this information to import all the required // The api template uses this information to import all the required
// models for a given operation. // models for a given operation.
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports"); List<Map<String, String>> imports = operations.getImports();
for (Map<String, Object> im : imports) { for (Map<String, String> im : imports) {
String[] parts = im.get("import").toString().replace(modelPackage() + ".", "").split("( [|&] )|[<>]"); String[] parts = im.get("import").replace(modelPackage() + ".", "").split("( [|&] )|[<>]");
for (String s : parts) { for (String s : parts) {
if (needToImport(s)) { if (needToImport(s)) {
im.put("filename", im.get("import")); im.put("filename", im.get("import"));
@ -220,13 +221,11 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC
} }
} }
private void updateOperationParameterEnumInformation(Map<String, Object> operations) { private void updateOperationParameterEnumInformation(OperationsMap operations) {
// This method will add extra information as to whether or not we have enums and // This method will add extra information as to whether or not we have enums and
// update their names with the operation.id prefixed. // update their names with the operation.id prefixed.
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) _operations.get("operation");
boolean hasEnum = false; boolean hasEnum = false;
for (CodegenOperation op : operationList) { for (CodegenOperation op : operations.getOperations().getOperation()) {
for (CodegenParameter param : op.allParams) { for (CodegenParameter param : op.allParams) {
if (Boolean.TRUE.equals(param.isEnum)) { if (Boolean.TRUE.equals(param.isEnum)) {
hasEnum = true; hasEnum = true;
@ -239,13 +238,11 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC
operations.put("hasEnums", hasEnum); operations.put("hasEnums", hasEnum);
} }
private void addOperationObjectResponseInformation(Map<String, Object> operations) { private void addOperationObjectResponseInformation(OperationsMap operations) {
// This method will modify the information on the operations' return type. // This method will modify the information on the operations' return type.
// The api template uses this information to know when to return a text // The api template uses this information to know when to return a text
// response for a given simple response operation. // response for a given simple response operation.
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations"); for (CodegenOperation op : operations.getOperations().getOperation()) {
List<CodegenOperation> operationList = (List<CodegenOperation>) _operations.get("operation");
for (CodegenOperation op : operationList) {
if("object".equals(op.returnType)) { if("object".equals(op.returnType)) {
op.isMap = true; op.isMap = true;
op.returnSimpleType = false; op.returnSimpleType = false;

View File

@ -23,6 +23,7 @@ import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -196,15 +197,14 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<ModelMap> allModels) { public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List<ModelMap> allModels) {
// Convert List of CodegenOperation to List of ExtendedCodegenOperation // Convert List of CodegenOperation to List of ExtendedCodegenOperation
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations"); List<CodegenOperation> os = operations.getOperations().getOperation();
List<CodegenOperation> os = (List<CodegenOperation>) _operations.get("operation"); List<ExtendedCodegenOperation> newOs = new ArrayList<>();
List<ExtendedCodegenOperation> newOs = new ArrayList<ExtendedCodegenOperation>();
for (CodegenOperation o : os) { for (CodegenOperation o : os) {
newOs.add(new ExtendedCodegenOperation(o)); newOs.add(new ExtendedCodegenOperation(o));
} }
_operations.put("operation", newOs); operations.getOperations().setOperation(newOs);
this.addOperationModelImportInformation(operations); this.addOperationModelImportInformation(operations);
this.updateOperationParameterEnumInformation(operations); this.updateOperationParameterEnumInformation(operations);
@ -213,23 +213,22 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
return operations; return operations;
} }
private void addOperationModelImportInformation(Map<String, Object> operations) { private void addOperationModelImportInformation(OperationsMap operations) {
// This method will add extra information to the operations.imports array. // This method will add extra information to the operations.imports array.
// The api template uses this information to import all the required // The api template uses this information to import all the required
// models for a given operation. // models for a given operation.
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports"); List<Map<String, String>> imports = operations.getImports();
for (Map<String, Object> im : imports) { for (Map<String, String> im : imports) {
im.put("className", im.get("import").toString().replace("models.", "")); im.put("className", im.get("import").replace("models.", ""));
} }
} }
private void updateOperationParameterEnumInformation(Map<String, Object> operations) { private void updateOperationParameterEnumInformation(OperationsMap operations) {
// This method will add extra information as to whether or not we have enums and // This method will add extra information as to whether or not we have enums and
// update their names with the operation.id prefixed. // update their names with the operation.id prefixed.
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
List<ExtendedCodegenOperation> operationList = (List<ExtendedCodegenOperation>) _operations.get("operation");
boolean hasEnums = false; boolean hasEnums = false;
for (ExtendedCodegenOperation op : operationList) { for (CodegenOperation _op : operations.getOperations().getOperation()) {
ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op;
for (CodegenParameter param : op.allParams) { for (CodegenParameter param : op.allParams) {
if (Boolean.TRUE.equals(param.isEnum)) { if (Boolean.TRUE.equals(param.isEnum)) {
hasEnums = true; hasEnums = true;
@ -249,10 +248,8 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
} }
} }
private void addConditionalImportInformation(Map<String, Object> operations) { private void addConditionalImportInformation(OperationsMap operations) {
// This method will determine if there are required parameters and if there are list containers // This method will determine if there are required parameters and if there are list containers
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
List<ExtendedCodegenOperation> operationList = (List<ExtendedCodegenOperation>) _operations.get("operation");
boolean hasRequiredParams = false; boolean hasRequiredParams = false;
boolean hasListContainers = false; boolean hasListContainers = false;
@ -260,7 +257,8 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
boolean hasQueryParams = false; boolean hasQueryParams = false;
boolean hasPathParams = false; boolean hasPathParams = false;
for (ExtendedCodegenOperation op : operationList) { for (CodegenOperation _op : operations.getOperations().getOperation()) {
ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op;
if (op.getHasRequiredParams()) { if (op.getHasRequiredParams()) {
hasRequiredParams = true; hasRequiredParams = true;
} }

View File

@ -23,6 +23,7 @@ import org.openapitools.codegen.meta.GeneratorMetadata;
import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.Stability;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationsMap;
import java.io.File; import java.io.File;
import java.text.Normalizer; import java.text.Normalizer;
@ -94,12 +95,8 @@ public class WsdlSchemaCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
List<ModelMap> allModels) { for (CodegenOperation op : objs.getOperations().getOperation()) {
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
for (CodegenOperation op : operationList) {
op.operationId = this.generateOperationId(op); op.operationId = this.generateOperationId(op);
// for xml compliant primitives, lowercase dataType of openapi // for xml compliant primitives, lowercase dataType of openapi

View File

@ -0,0 +1,17 @@
package org.openapitools.codegen.model;
import java.util.HashMap;
import java.util.List;
public class ApiInfoMap extends HashMap<String, Object> {
public void setApis(List<OperationsMap> apis) {
put("apis", apis);
}
@SuppressWarnings("unchecked")
public List<OperationsMap> getApis() {
return (List<OperationsMap>) get("apis");
}
}

View File

@ -0,0 +1,40 @@
package org.openapitools.codegen.model;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import org.openapitools.codegen.CodegenOperation;
public class OperationMap extends HashMap<String, Object> {
public void setOperation(CodegenOperation ops) {
put("operation", Collections.singletonList(ops));
}
public void setOperation(List<? extends CodegenOperation> ops) {
put("operation", ops);
}
@SuppressWarnings("unchecked")
public List<CodegenOperation> getOperation() {
return (List<CodegenOperation>) get("operation");
}
public void setClassname(String classname) {
put("classname", classname);
}
public String getClassname() {
return (String) get("classname");
}
public void setPathPrefix(String pathPrefix) {
put("pathPrefix", pathPrefix);
}
public String getPathPrefix() {
return (String) get("pathPrefix");
}
}

View File

@ -0,0 +1,30 @@
package org.openapitools.codegen.model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.openapitools.codegen.CodegenOperation;
public class OperationsMap extends HashMap<String, Object> {
public void setOperation(OperationMap objs) {
put("operations", objs);
}
public OperationMap getOperations() {
return (OperationMap) get("operations");
}
public void setImports(List<Map<String, String>> imports) {
put("imports", imports);
}
@SuppressWarnings("unchecked")
public List<Map<String, String>> getImports() {
return (List<Map<String, String>>) get("imports");
}
}

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