diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java index 1de4db324a6..2c8dcdb681f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java @@ -29,6 +29,7 @@ import org.openapitools.codegen.meta.FeatureSet; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.util.List; @@ -194,7 +195,7 @@ public interface CodegenConfig { ModelsMap postProcessModels(ModelsMap objs); - Map postProcessOperationsWithModels(Map objs, List allModels); + OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels); Map postProcessSupportingFileData(Map objs); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 2e1b2e6fa5b..63aca217cd7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -40,6 +40,7 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.serializer.SerializerUtils; import org.openapitools.codegen.templating.MustacheEngineAdapter; import org.openapitools.codegen.templating.mustache.*; @@ -810,7 +811,7 @@ public class DefaultCodegen implements CodegenConfig { // override with any special post-processing @Override @SuppressWarnings("static-method") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index fbccba22f1a..520a4a196a3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -44,8 +44,11 @@ import org.openapitools.codegen.languages.PythonClientCodegen; import org.openapitools.codegen.languages.PythonExperimentalClientCodegen; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.model.ApiInfoMap; import org.openapitools.codegen.model.ModelMap; 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.templating.CommonTemplateContentLocator; import org.openapitools.codegen.templating.GeneratorTemplateContentLocator; @@ -541,7 +544,7 @@ public class DefaultGenerator implements Generator { } @SuppressWarnings("unchecked") - void generateApis(List files, List allOperations, List allModels) { + void generateApis(List files, List allOperations, List allModels) { if (!generateApis) { // TODO: Process these anyway and present info via dryRun? LOGGER.info("Skipping generation of APIs."); @@ -566,7 +569,7 @@ public class DefaultGenerator implements Generator { try { List ops = paths.get(tag); ops.sort((one, another) -> ObjectUtils.compare(one.operationId, another.operationId)); - Map operation = processOperations(config, tag, ops, allModels); + OperationsMap operation = processOperations(config, tag, ops, allModels); URL url = URLPathUtils.getServerURL(openAPI, config.serverVariableOverrides()); operation.put("basePath", basePath); operation.put("basePathWithoutHost", removeTrailingSlash(config.encodePath(url.getPath()))); @@ -595,9 +598,8 @@ public class DefaultGenerator implements Generator { if (config.vendorExtensions().containsKey("x-group-parameters")) { boolean isGroupParameters = Boolean.parseBoolean(config.vendorExtensions().get("x-group-parameters").toString()); - Map objectMap = (Map) operation.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + OperationMap objectMap = operation.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation op : operations) { if (isGroupParameters && !op.vendorExtensions.containsKey("x-group-parameters")) { op.vendorExtensions.put("x-group-parameters", Boolean.TRUE); @@ -617,7 +619,7 @@ public class DefaultGenerator implements Generator { processMimeTypes(swagger.getProduces(), operation, "produces"); */ - allOperations.add(new HashMap<>(operation)); + allOperations.add(operation); addAuthenticationSwitches(operation); @@ -746,14 +748,13 @@ public class DefaultGenerator implements Generator { generateVersionMetadata(files); } - @SuppressWarnings("unchecked") - Map buildSupportFileBundle(List allOperations, List allModels) { + Map buildSupportFileBundle(List allOperations, List allModels) { Map bundle = new HashMap<>(config.additionalProperties()); bundle.put("apiPackage", config.apiPackage()); - Map apis = new HashMap<>(); - apis.put("apis", allOperations); + ApiInfoMap apis = new ApiInfoMap(); + apis.setApis(allOperations); URL url = URLPathUtils.getServerURL(openAPI, config.serverVariableOverrides()); @@ -887,7 +888,7 @@ public class DefaultGenerator implements Generator { List allModels = new ArrayList<>(); generateModels(files, allModels, filteredSchemas); // apis - List allOperations = new ArrayList<>(); + List allOperations = new ArrayList<>(); generateApis(files, allOperations, allModels); // supporting files @@ -1170,11 +1171,11 @@ public class DefaultGenerator implements Generator { return parameter.getName() + ":" + parameter.getIn(); } - private Map processOperations(CodegenConfig config, String tag, List ops, List allModels) { - Map operations = new HashMap<>(); - Map objs = new HashMap<>(); - objs.put("classname", config.toApiName(tag)); - objs.put("pathPrefix", config.toApiVarName(tag)); + private OperationsMap processOperations(CodegenConfig config, String tag, List ops, List allModels) { + OperationsMap operations = new OperationsMap(); + OperationMap objs = new OperationMap(); + objs.setClassname(config.toApiName(tag)); + objs.setPathPrefix(config.toApiVarName(tag)); // check for operationId uniqueness Set opIds = new HashSet<>(); @@ -1187,9 +1188,9 @@ public class DefaultGenerator implements Generator { } opIds.add(opId); } - objs.put("operation", ops); + objs.setOperation(ops); - operations.put("operations", objs); + operations.setOperation(objs); operations.put("package", config.apiPackage()); Set allImports = new ConcurrentSkipListSet<>(); @@ -1201,10 +1202,10 @@ public class DefaultGenerator implements Generator { Set> imports = toImportsObjects(mappings); //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}} - if (imports.size() > 0) { + if (!imports.isEmpty()) { operations.put("hasImport", true); } @@ -1239,18 +1240,14 @@ public class DefaultGenerator implements Generator { * @return The set of unique imports */ private Set> toImportsObjects(Map mappedImports) { - Set> result = new TreeSet>( - (Comparator>) (o1, o2) -> { - String s1 = o1.get("classname"); - String s2 = o2.get("classname"); - return s1.compareTo(s2); - } + Set> result = new TreeSet<>( + Comparator.comparing(o -> o.get("classname")) ); - mappedImports.entrySet().forEach(mapping -> { + mappedImports.forEach((key, value) -> { Map im = new LinkedHashMap<>(); - im.put("import", mapping.getKey()); - im.put("classname", mapping.getValue()); + im.put("import", key); + im.put("classname", value); result.add(im); }); return result; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java index 403c39edf22..4a1933e094a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java @@ -36,6 +36,8 @@ import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -607,9 +609,9 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op1 : operationList) { if (op1.summary != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index f8abc0ab79f..c0c24b50e4e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.templating.mustache.*; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -663,12 +665,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); if (objs != null) { - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { // Check return types for collection diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java index 4cb893adc64..f1156613106 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java @@ -12,6 +12,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -560,11 +562,11 @@ public abstract class AbstractDartCodegen extends DefaultCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation op : ops) { if (op.hasConsumes) { if (!op.formParams.isEmpty() || op.isMultipart) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java index f4092be9441..7e3846981f2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java @@ -26,6 +26,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -362,11 +364,9 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation operation : operations) { // 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 - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); if (imports == null) return objs; @@ -401,7 +401,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co } // recursively add import for mapping one type to multiple imports - List> recursiveImports = (List>) objs.get("imports"); + List> recursiveImports = objs.getImports(); if (recursiveImports == null) return objs; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java index 64f5e400fc3..b8a44efe931 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java @@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.templating.mustache.*; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -512,12 +514,12 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); if (objs != null) { - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { // Check return types for collection diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index 6c8fd53858c..6dd27a80479 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -24,6 +24,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -462,11 +464,9 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation operation : operations) { // 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 - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); if (imports == null) return objs; @@ -565,7 +565,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege } // recursively add import for mapping one type to multiple imports - List> recursiveImports = (List>) objs.get("imports"); + List> recursiveImports = objs.getImports(); if (recursiveImports == null) return objs; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java index ecc1f032950..1966b054827 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java @@ -21,6 +21,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -421,10 +423,10 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { - Map objs = (Map) operations.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { + OperationMap objs = operations.getOperations(); - for (CodegenOperation op : (List) objs.get("operation")) { + for (CodegenOperation op : objs.getOperation()) { // non GET/HEAD methods are mutation if (!"GET".equals(op.httpMethod.toUpperCase(Locale.ROOT)) && !"HEAD".equals(op.httpMethod.toUpperCase(Locale.ROOT))) { 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() { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index fe7b41ed72a..87cb92356d6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -38,6 +38,8 @@ import org.openapitools.codegen.languages.features.DocumentationProviderFeatures import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1362,10 +1364,10 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { // Remove imports of List, ArrayList, Map and HashMap as they are // imported in the template already. - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); Pattern pattern = Pattern.compile("java\\.util\\.(List|ArrayList|Map|HashMap)"); for (Iterator> itr = imports.iterator(); itr.hasNext(); ) { String itrImport = itr.next().get("import"); @@ -1374,8 +1376,8 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } } - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { Collection operationImports = new ConcurrentSkipListSet<>(); for (CodegenParameter p : op.allParams) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java index 857092972ed..965ef52af87 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java @@ -25,6 +25,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -168,12 +170,11 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen } @Override - @SuppressWarnings("unchecked") - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map updatedObjs = jaxrsPostProcessOperations(objs); - Map operations = (Map) updatedObjs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationsMap updatedObjs = jaxrsPostProcessOperations(objs); + OperationMap operations = updatedObjs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation co : ops) { handleImplicitHeaders(co); } @@ -181,13 +182,11 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen return updatedObjs; } - static Map jaxrsPostProcessOperations(Map objs) { - @SuppressWarnings("unchecked") - Map operations = (Map) objs.get("operations"); + static OperationsMap jaxrsPostProcessOperations(OperationsMap objs) { + OperationMap operations = objs.getOperations(); String commonPath = null; if (operations != null) { - @SuppressWarnings("unchecked") - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { if (operation.hasConsumes == Boolean.TRUE) { Map firstType = operation.consumes.get(0); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java index c157529aad8..985a74c08b0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java @@ -24,6 +24,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -703,9 +705,9 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { // for API test method name // e.g. public function test{{vendorExtensions.x-testOperationId}}() diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java index f2b588f8412..77c3c6beade 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java @@ -32,8 +32,11 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.model.ApiInfoMap; import org.openapitools.codegen.model.ModelMap; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -465,13 +468,11 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho } } - @SuppressWarnings("unchecked") - private static List> getOperations(Map objs) { - List> result = new ArrayList>(); - Map apiInfo = (Map) objs.get("apiInfo"); - List> apis = (List>) apiInfo.get("apis"); - for (Map api : apis) { - result.add((Map) api.get("operations")); + private static List getOperations(Map objs) { + List result = new ArrayList<>(); + ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo"); + for (OperationsMap api : apiInfo.getApis()) { + result.add(api.getOperations()); } return result; } @@ -483,9 +484,9 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho opsByPath.put(op.path, op); } - List> opsByPathList = new ArrayList>(); + List> opsByPathList = new ArrayList<>(); for (Map.Entry> entry : opsByPath.asMap().entrySet()) { - Map opsByPathEntry = new HashMap(); + Map opsByPathEntry = new HashMap<>(); opsByPathList.add(opsByPathEntry); opsByPathEntry.put("path", entry.getKey()); opsByPathEntry.put("operation", entry.getValue()); @@ -570,9 +571,8 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho generateJSONSpecFile(objs); generateYAMLSpecFile(objs); - for (Map operations : getOperations(objs)) { - @SuppressWarnings("unchecked") - List ops = (List) operations.get("operation"); + for (OperationMap operations : getOperations(objs)) { + List ops = operations.getOperation(); List> opsByPathList = sortOperationsByPath(ops); operations.put("operationsByPath", opsByPathList); @@ -645,9 +645,9 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation operation : operationList) { Map skipTests = new HashMap<>(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java index 26fbb18827e..bdfafa4dd55 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java @@ -20,6 +20,8 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -88,18 +90,17 @@ public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfi return input.replace("*/", "*_/").replace("/*", "/_*"); } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); - List newOpList = new ArrayList(); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); + List newOpList = new ArrayList<>(); for (CodegenOperation op : operationList) { String path = op.path; String[] items = path.split("/", -1); - List splitPath = new ArrayList(); + List splitPath = new ArrayList<>(); for (String item : items) { if (item.matches("^\\{(.*)\\}$")) { item = "*"; @@ -113,9 +114,10 @@ public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfi if (!foundInNewList) { if (op1.path.equals(op.path)) { foundInNewList = true; + @SuppressWarnings("unchecked") List currentOtherMethodList = (List) op1.vendorExtensions.get("x-codegen-otherMethods"); if (currentOtherMethodList == null) { - currentOtherMethodList = new ArrayList(); + currentOtherMethodList = new ArrayList<>(); } op.operationIdCamelCase = op1.operationIdCamelCase; currentOtherMethodList.add(op); @@ -127,7 +129,7 @@ public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfi newOpList.add(op); } } - operations.put("operation", newOpList); + operations.setOperation(newOpList); return objs; } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java index a4b1927828d..f72187c77cb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java @@ -24,6 +24,8 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; @@ -462,13 +464,13 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); // We need to postprocess the operations to add proper consumes tags and fix form file handling if (objs != null) { - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { if (operation.consumes == null) { continue; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java index 269a2b9df00..c5163ecb6e2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java @@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -354,9 +356,9 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { - Map objs = (Map) operations.get("operations"); - List ops = (List) objs.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { + OperationMap objs = operations.getOperations(); + List ops = objs.getOperation(); for (CodegenOperation op : ops) { // Convert httpMethod to lower case, e.g. "get", "post" op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java index 444617cc14f..a8ea8c701e8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java @@ -23,6 +23,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.apache.commons.lang3.StringUtils; @@ -117,9 +119,9 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index df5c40d6dc9..8a49343ca12 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -26,6 +26,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -255,14 +257,13 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { return op; } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - String classname = (String) operations.get("classname"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + String classname = operations.getClassname(); operations.put("classnameSnakeUpperCase", underscore(classname).toUpperCase(Locale.ROOT)); operations.put("classnameSnakeLowerCase", underscore(classname).toLowerCase(Locale.ROOT)); - List operationList = (List) operations.get("operation"); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { boolean consumeJson = false; boolean isParsingSupported = true; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java index bf8161d5cfa..573242d5494 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java @@ -7,6 +7,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -310,12 +312,11 @@ public abstract class CppQtAbstractCodegen extends AbstractCppCodegen implements @Override - @SuppressWarnings("unchecked") - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map objectMap = (Map) objs.get("operations"); - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); Map codegenModels = new HashMap<>(); for (ModelMap moObj : allModels) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java index 927ad85550b..8810aefabc2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java @@ -29,6 +29,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import java.util.*; @@ -322,11 +324,10 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { } // override with any special post-processing - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { for (String hdr : op.imports) { if (importMapping.containsKey(hdr)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java index cc8e47b70d2..9d7ce46bafa 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java @@ -24,6 +24,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import java.io.File; @@ -282,11 +284,10 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { return toApiName(name); } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); List newOpList = new ArrayList<>(); for (CodegenOperation op : operationList) { @@ -318,6 +319,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { if (op1.path.equals(op.path)) { foundInNewList = true; final String X_CODEGEN_OTHER_METHODS = "x-codegen-other-methods"; + @SuppressWarnings("unchecked") List currentOtherMethodList = (List) op1.vendorExtensions.get(X_CODEGEN_OTHER_METHODS); if (currentOtherMethodList == null) { currentOtherMethodList = new ArrayList<>(); @@ -332,7 +334,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { newOpList.add(op); } } - operations.put("operation", newOpList); + operations.setOperation(newOpList); return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java index e7ffaf51aee..998b875dd16 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.templating.mustache.PrefixWithHashLambda; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -556,9 +558,9 @@ public class CrystalClientCodegen extends DefaultCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); HashMap modelMaps = new HashMap<>(); HashMap processedModelMaps = new HashMap<>(); @@ -567,7 +569,7 @@ public class CrystalClientCodegen extends DefaultCodegen { modelMaps.put(m.classname, m); } - List operationList = (List) operations.get("operation"); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { for (CodegenParameter p : op.allParams) { p.vendorExtensions.put("x-crystal-example", constructExampleCode(p, modelMaps, processedModelMaps)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpNetcoreFunctionsServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpNetcoreFunctionsServerCodegen.java index e6390f6bcec..966918caf6e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpNetcoreFunctionsServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CsharpNetcoreFunctionsServerCodegen.java @@ -23,6 +23,8 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; @@ -393,13 +395,13 @@ public class CsharpNetcoreFunctionsServerCodegen extends AbstractCSharpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); // We need to postprocess the operations to add proper consumes tags and fix form file handling if (objs != null) { - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { if (operation.consumes == null) { continue; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java index 335f955b45f..c2444fa9348 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java @@ -25,6 +25,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.ClientModificationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ProcessUtils; import org.slf4j.Logger; @@ -264,10 +266,10 @@ public class DartDioClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); Set> serializers = new HashSet<>(); Set 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("serializers", serializers); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java index 802df62a0ed..0f2dac9c89f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.ClientModificationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ProcessUtils; import org.slf4j.Logger; @@ -295,10 +297,10 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); Set 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())); return objs; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java index 752bd29667e..264e53e6748 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java @@ -22,6 +22,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import io.swagger.v3.oas.models.media.*; @@ -245,11 +247,11 @@ public class DartJaguarClientCodegen extends AbstractDartCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); Set modelImports = new HashSet<>(); Set fullImports = new HashSet<>(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java index aca6fdb9163..5ae204450b3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java @@ -28,6 +28,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -298,9 +300,9 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) super.postProcessOperationsWithModels(objs, allModels).get("operations"); - List os = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = super.postProcessOperationsWithModels(objs, allModels).getOperations(); + List os = operations.getOperation(); List newOs = new ArrayList<>(); Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}([^\\{]*)"); for (CodegenOperation o : os) { @@ -332,7 +334,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig newOs.add(eco); } - operations.put("operation", newOs); + operations.setOperation(newOs); return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java index 2d56f44c1c7..16f1a974895 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java @@ -28,6 +28,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -359,10 +361,10 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - @SuppressWarnings({"static-method", "unchecked"}) - public Map postProcessOperationsWithModels(Map operations, List allModels) { - Map objs = (Map) operations.get("operations"); - List ops = (List) objs.get("operation"); + @SuppressWarnings("static-method") + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { + OperationMap objs = operations.getOperations(); + List ops = objs.getOperation(); ops.forEach(op -> { op.allParams = op.allParams.stream().sorted(new ParameterSorter()).collect(Collectors.toList()); op.responses.forEach(response -> { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java index 037f695b762..fc6806f1316 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.templating.mustache.JoinWithCommaLambda; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -309,10 +311,10 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List os = (List) operations.get("operation"); - List newOs = new ArrayList(); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List os = operations.getOperation(); + List newOs = new ArrayList<>(); Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}"); for (CodegenOperation o : os) { // force http method to lower case @@ -322,7 +324,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig o.returnType = "[" + o.returnBaseType + "]"; } - ArrayList pathTemplateNames = new ArrayList(); + ArrayList pathTemplateNames = new ArrayList<>(); Matcher matcher = pattern.matcher(o.path); StringBuffer buffer = new StringBuffer(); while (matcher.find()) { @@ -341,7 +343,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig eco.setPathTemplateNames(pathTemplateNames); newOs.add(eco); } - operations.put("operation", newOs); + operations.setOperation(newOs); return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java index 67a8c506082..0dc8fb5884f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java @@ -23,6 +23,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -368,9 +370,9 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List os = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List os = operations.getOperation(); List newOs = new ArrayList<>(); Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}"); for (CodegenOperation o : os) { @@ -397,7 +399,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig } newOs.add(eco); } - operations.put("operation", newOs); + operations.setOperation(newOs); return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java index 39ab803a6ff..49f15cc26c3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java @@ -20,6 +20,8 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -270,9 +272,9 @@ public class ErlangServerCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { if (op.path != null) { op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java index 03768178951..5558345785c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java @@ -29,6 +29,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ProcessUtils; import org.slf4j.Logger; @@ -456,10 +458,10 @@ public class GoClientCodegen extends AbstractGoCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - HashMap modelMaps = new HashMap(); + OperationMap operations = objs.getOperations(); + HashMap modelMaps = new HashMap<>(); HashMap> processedModelMaps = new HashMap<>(); for (ModelMap modelMap : allModels) { @@ -467,7 +469,7 @@ public class GoClientCodegen extends AbstractGoCodegen { modelMaps.put(m.classname, m); } - List operationList = (List) operations.get("operation"); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { for (CodegenParameter p : op.allParams) { p.vendorExtensions.put("x-go-example", constructExampleCode(p, modelMaps, processedModelMaps)); @@ -670,4 +672,4 @@ public class GoClientCodegen extends AbstractGoCodegen { } return "*" + goImportAlias + ".New" + toModelName(model) + "(" + StringUtils.join(propertyExamples, ", ") + ")"; } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoEchoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoEchoServerCodegen.java index 5c97dc8b52e..ed1f4ca40e3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoEchoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoEchoServerCodegen.java @@ -21,6 +21,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.util.Arrays; @@ -107,11 +109,11 @@ public class GoEchoServerCodegen extends AbstractGoCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { if (op.path != null) { op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java index facd3e2bae1..ec3ca3ad75f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java @@ -23,6 +23,8 @@ import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.features.*; 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.LoggerFactory; @@ -122,11 +124,11 @@ public class GoGinServerCodegen extends AbstractGoCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { if (op.path != null) { op.path = op.path.replaceAll("\\{(.*?)\\}", ":$1"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java index ca8c3776768..2a8acd9c23c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java @@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -286,14 +288,12 @@ public class GoServerCodegen extends AbstractGoCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); - List> imports = (List>) objs.get("imports"); + List> imports = objs.getImports(); if (imports == null) return objs; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GroovyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GroovyClientCodegen.java index 3728d8c1a20..5bbb1819a54 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GroovyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GroovyClientCodegen.java @@ -33,6 +33,8 @@ import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; public class GroovyClientCodegen extends AbstractJavaCodegen { @@ -126,9 +128,9 @@ public class GroovyClientCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { - Map objs = (Map) operations.get("operations"); - List ops = (List) objs.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { + OperationMap objs = operations.getOperations(); + List ops = objs.getOperation(); for (CodegenOperation op : ops) { // Overwrite path to map variable with path parameters op.path = op.path.replace("{", "${"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java index b54817cb271..f728c766517 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java @@ -30,6 +30,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -809,10 +811,10 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map ret = super.postProcessOperationsWithModels(objs, allModels); - HashMap pathOps = (HashMap) ret.get("operations"); - ArrayList ops = (ArrayList) pathOps.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationsMap ret = super.postProcessOperationsWithModels(objs, allModels); + OperationMap pathOps = ret.getOperations(); + List ops = pathOps.getOperation(); if (ops.size() > 0) { 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); if ((boolean) additionalProperties.get(PROP_GENERATE_FORM_URLENCODED_INSTANCES) && mimeTypes.contains("MimeFormUrlEncoded")) { - Boolean hasMimeFormUrlEncoded = true; + boolean hasMimeFormUrlEncoded = true; for (CodegenProperty v : m.vars) { if (!(v.isPrimitiveType || v.isString || v.isDate || v.isDateTime)) { hasMimeFormUrlEncoded = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java index d478d4e2dab..a45e743b8f9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java @@ -24,6 +24,7 @@ import org.openapitools.codegen.languages.features.GzipTestFeatures; import org.openapitools.codegen.languages.features.LoggingTestFeatures; import org.openapitools.codegen.languages.features.UseGenericResponseFeatures; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -166,7 +167,7 @@ public class JavaCXFClientCodegen extends AbstractJavaCodegen } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); return AbstractJavaJAXRSServerCodegen.jaxrsPostProcessOperations(objs); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java index ba2362e0230..54e4445cfd3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java @@ -38,6 +38,8 @@ import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.languages.features.CXFExtServerFeatures; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.JsonCache; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.JsonCache.CacheException; @@ -1161,17 +1163,17 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map result = super.postProcessOperationsWithModels(objs, allModels); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationsMap result = super.postProcessOperationsWithModels(objs, allModels); if (generateOperationBody) { // 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. @SuppressWarnings("unchecked") - Map operations = (Map) result.get("operations"); + OperationMap operations = result.getOperations(); 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 models = new HashMap<>(); @@ -1181,8 +1183,7 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF } StringBuilder buffer = new StringBuilder(); - @SuppressWarnings("unchecked") - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation op : ops) { applyDefaultContentTypes(op); 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 // 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. - Set allImports = new TreeSet(); + Set allImports = new TreeSet<>(); for (CodegenOperation op : ops) { allImports.addAll(op.imports); } allImports.add("List"); allImports.add("Map"); - List> imports = new ArrayList>(); + List> imports = new ArrayList<>(); for (String nextImport : allImports) { - Map im = new LinkedHashMap(); + Map im = new LinkedHashMap<>(); String mapping = importMapping().get(nextImport); if (mapping == null) { mapping = toModelImport(nextImport); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 0063f80568f..6b52ed17027 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -29,6 +29,8 @@ import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.GlobalFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.templating.mustache.CaseFormatLambda; import org.openapitools.codegen.utils.ProcessUtils; import org.slf4j.Logger; @@ -635,14 +637,13 @@ public class JavaClientCodegen extends AbstractJavaCodegen } } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); if (RETROFIT_2.equals(getLibrary())) { - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { if (operation.hasConsumes == Boolean.TRUE) { @@ -680,8 +681,8 @@ public class JavaClientCodegen extends AbstractJavaCodegen // camelize path variables for Feign client if (FEIGN.equals(getLibrary())) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); Pattern methodPattern = Pattern.compile("^(.*):([^:]*)$"); for (CodegenOperation op : operationList) { String path = op.path; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java index 0d3c52998ba..471fb2a14cc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java @@ -25,6 +25,8 @@ import org.openapitools.codegen.config.GlobalSettings; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -130,7 +132,7 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen { } List opList = operations.get(basePath); if (opList == null) { - opList = new ArrayList(); + opList = new ArrayList<>(); operations.put(basePath, opList); } opList.add(co); @@ -138,10 +140,10 @@ public class JavaInflectorServerCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { if (operation.returnType == null) { operation.returnType = "Void"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java index ba77a54ca07..f58e79c2266 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java @@ -7,6 +7,8 @@ import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import java.util.*; import java.util.stream.Collectors; @@ -318,14 +320,14 @@ public abstract class JavaMicronautAbstractCodegen extends AbstractJavaCodegen i } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); Map models = allModels.stream() .map(ModelMap::getModel) .collect(Collectors.toMap(v -> v.classname, v -> v)); - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { // Set whether body is supported in request diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautServerCodegen.java index 49cbf071d26..95764efd2cd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautServerCodegen.java @@ -4,6 +4,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -185,12 +187,12 @@ public class JavaMicronautServerCodegen extends JavaMicronautAbstractCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); // Add the controller classname to operations - Map operations = (Map) objs.get("operations"); - String controllerClassname = StringUtils.camelize(controllerPrefix + "_" + operations.get("pathPrefix") + "_" + controllerSuffix); + OperationMap operations = objs.getOperations(); + String controllerClassname = StringUtils.camelize(controllerPrefix + "_" + operations.getPathPrefix() + "_" + controllerSuffix); objs.put("controllerClassname", controllerClassname); List allOperations = (List) operations.get("operation"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPKMSTServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPKMSTServerCodegen.java index f951e0e5b34..22bd809dde6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPKMSTServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPKMSTServerCodegen.java @@ -25,6 +25,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.URLPathUtils; import java.io.File; @@ -311,12 +313,11 @@ public class JavaPKMSTServerCodegen extends AbstractJavaCodegen { serviceName + "IT.java")); } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (final CodegenOperation operation : ops) { List responses = operation.responses; if (responses != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java index 00daf661d00..9de29a5ef90 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java @@ -23,6 +23,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -305,11 +307,11 @@ public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements Bea } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { for (CodegenParameter param : operation.allParams) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java index e73e6ea2d83..58f6f362655 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java @@ -23,6 +23,8 @@ import org.openapitools.codegen.config.GlobalSettings; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -120,10 +122,10 @@ public class JavaUndertowServerCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { if (operation.returnType == null) { operation.returnType = "Void"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java index 6943342279a..ddff4cf7108 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java @@ -28,6 +28,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; @@ -191,11 +193,11 @@ public class JavaVertXServerCodegen extends AbstractJavaCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map newObjs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) newObjs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationsMap newObjs = super.postProcessOperationsWithModels(objs, allModels); + OperationMap operations = newObjs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXWebServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXWebServerCodegen.java index dafa810b322..a7fc895b215 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXWebServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXWebServerCodegen.java @@ -21,6 +21,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.util.*; @@ -126,13 +128,12 @@ public class JavaVertXWebServerCodegen extends AbstractJavaCodegen { } } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map newObjs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) newObjs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationsMap newObjs = super.postProcessOperationsWithModels(objs, allModels); + OperationMap operations = newObjs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java index de7511ebe71..d27716dffdb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java @@ -29,6 +29,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -908,13 +910,13 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { // Generate and store argument list string of each operation into // vendor-extension: x-codegen-argList. - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { List argList = new ArrayList<>(); boolean hasOptionalParams = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java index 5e8b04c7e55..f6398e2f114 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java @@ -28,6 +28,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -969,15 +971,14 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo return Arrays.asList(primitives).contains(type); } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { // Generate and store argument list string of each operation into // vendor-extension: x-codegen-argList. - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { List argList = new ArrayList<>(); boolean hasOptionalParams = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java index b175596f249..f93d32affc2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -272,16 +273,10 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - if (objs.get("imports") instanceof List) { - List> imports = (ArrayList>)objs.get("imports"); - Collections.sort(imports, new Comparator>() { - public int compare(Map o1, Map o2) { - return o1.get("import").compareTo(o2.get("import")); - } - }); - objs.put("imports", imports); - } + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + List> imports = objs.getImports(); + imports.sort(Comparator.comparing(o -> o.get("import"))); + objs.put("imports", imports); return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index ce65a6bcd85..dead7b17ff5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -35,6 +35,8 @@ import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ProcessUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -767,12 +769,11 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { } @Override - @SuppressWarnings("unchecked") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { if (JVM_RETROFIT2.equals(getLibrary()) && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) { @@ -789,22 +790,22 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { // match on first part in mediaTypes like 'application/json; charset=utf-8' int endIndex = mediaTypeValue.indexOf(';'); String mediaType = (endIndex == -1 - ? mediaTypeValue - : mediaTypeValue.substring(0, endIndex) + ? mediaTypeValue + : mediaTypeValue.substring(0, endIndex) ).trim(); return "multipart/form-data".equals(mediaType) - || "application/x-www-form-urlencoded".equals(mediaType) - || (mediaType.startsWith("application/") && mediaType.endsWith("json")); + || "application/x-www-form-urlencoded".equals(mediaType) + || (mediaType.startsWith("application/") && mediaType.endsWith("json")); }; operation.consumes = operation.consumes == null ? null : operation.consumes.stream() - .filter(isSerializable) - .limit(1) - .collect(Collectors.toList()); + .filter(isSerializable) + .limit(1) + .collect(Collectors.toList()); operation.hasConsumes = operation.consumes != null && !operation.consumes.isEmpty(); operation.produces = operation.produces == null ? null : operation.produces.stream() - .filter(isSerializable) - .collect(Collectors.toList()); + .filter(isSerializable) + .collect(Collectors.toList()); operation.hasProduces = operation.produces != null && !operation.produces.isEmpty(); } @@ -850,7 +851,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { } } } - return operations; + return objs; } private static boolean isMultipartType(List> consumes) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java index 61b4f39c9c0..8cfdc202638 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.URLPathUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -578,10 +580,10 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); ops.forEach(operation -> { List responses = operation.responses; if (responses != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java index 4508ca631ee..aeff481eaf6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -420,11 +422,9 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation op : operations) { String[] items = op.path.split("/", -1); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java index 7d8e79e2d8c..c524436a051 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java @@ -25,6 +25,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.StringUtils; import org.slf4j.Logger; @@ -258,11 +260,9 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation operation : operations) { operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java index 0fadd7cc7b0..0f01e91e89d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java @@ -31,7 +31,10 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ApiInfoMap; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -238,11 +241,9 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation operation : operations) { operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); @@ -272,13 +273,11 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege return objs; } - @SuppressWarnings("unchecked") - private static List> getOperations(Map objs) { - List> result = new ArrayList<>(); - Map apiInfo = (Map) objs.get("apiInfo"); - List> apis = (List>) apiInfo.get("apis"); - for (Map api : apis) { - result.add((Map) api.get("operations")); + private static List getOperations(Map objs) { + List result = new ArrayList<>(); + ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo"); + for (OperationsMap api : apiInfo.getApis()) { + result.add(api.getOperations()); } return result; } @@ -401,9 +400,8 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege public Map postProcessSupportingFileData(Map objs) { generateYAMLSpecFile(objs); - for (Map operations : getOperations(objs)) { - @SuppressWarnings("unchecked") - List ops = (List) operations.get("operation"); + for (OperationMap operations : getOperations(objs)) { + List ops = operations.getOperation(); List> opsByPathList = sortOperationsByPath(ops); operations.put("operationsByPath", opsByPathList); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java index c780c26f074..509f6d49956 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java @@ -27,6 +27,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -713,11 +715,9 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation operation : operations) { // http method verb conversion, depending on client library (e.g. Hyper: PUT => Put, Reqwest: PUT => put) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java index 4c0c0b9a2d7..5a2a3822477 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java @@ -23,6 +23,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -652,11 +654,11 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { if (!operation.allParams.isEmpty()) { String firstParamName = operation.allParams.get(0).paramName; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java index 06277a748cc..c2b27f47977 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java @@ -22,6 +22,8 @@ import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.util.*; @@ -234,11 +236,9 @@ public class PhpLaravelServerCodegen extends AbstractPhpCodegen { // override with any special post-processing @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation op : operations) { 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. // https://github.com/swagger-api/swagger-codegen/issues/2643 - Collections.sort(operations, new Comparator() { - @Override - public int compare(CodegenOperation lhs, CodegenOperation rhs) { - return lhs.path.compareTo(rhs.path); - } - }); + operations.sort(Comparator.comparing(lhs -> lhs.path)); return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java index 2c0c16a07bc..fc5b114d3f4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java @@ -22,6 +22,8 @@ import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.util.*; @@ -166,23 +168,16 @@ public class PhpLumenServerCodegen extends AbstractPhpCodegen { // override with any special post-processing @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation op : operations) { op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); } // sort the endpoints in ascending to avoid the route priority issue. - Collections.sort(operations, new Comparator() { - @Override - public int compare(CodegenOperation lhs, CodegenOperation rhs) { - return lhs.path.compareTo(rhs.path); - } - }); + operations.sort(Comparator.comparing(lhs -> lhs.path)); escapeMediaType(operations); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java index c3d575dbda5..cd81b3174a6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java @@ -31,6 +31,8 @@ import io.swagger.v3.oas.models.responses.ApiResponses; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -416,10 +418,10 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); String httpMethodDeclaration; String pathPattern = null; for (CodegenOperation op : operationList) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSilexServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSilexServerCodegen.java index 38b30105495..fd710688326 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSilexServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSilexServerCodegen.java @@ -23,6 +23,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; @@ -260,9 +262,9 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { String path = op.path; String[] items = path.split("/", -1); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java index c3e79f35e18..9e829dc4538 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java @@ -30,7 +30,10 @@ import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ApiInfoMap; 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.LoggerFactory; @@ -254,9 +257,9 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); addUserClassnameToOperations(operations); escapeMediaType(operationList); return objs; @@ -264,21 +267,16 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen { @Override public Map postProcessSupportingFileData(Map objs) { - Map apiInfo = (Map) objs.get("apiInfo"); - List> apiList = (List>) apiInfo.get("apis"); - for (HashMap api : apiList) { - HashMap operations = (HashMap) api.get("operations"); - List operationList = (List) operations.get("operation"); + ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo"); + for (OperationsMap api : apiInfo.getApis()) { + List operationList = api.getOperations().getOperation(); // Sort operations to avoid static routes shadowing // ref: https://github.com/nikic/FastRoute/blob/master/src/DataGenerator/RegexBasedAbstract.php#L92-L101 - Collections.sort(operationList, new Comparator() { - @Override - public int compare(CodegenOperation one, CodegenOperation another) { + operationList.sort((one, another) -> { if (one.getHasPathParams() && !another.getHasPathParams()) return 1; if (!one.getHasPathParams() && another.getHasPathParams()) return -1; return 0; - } }); } @@ -310,8 +308,8 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen { * * @param operations codegen object with operations */ - private void addUserClassnameToOperations(Map operations) { - String classname = (String) operations.get("classname"); + private void addUserClassnameToOperations(OperationMap operations) { + String classname = operations.getClassname(); classname = classname.replaceAll("^" + abstractNamePrefix, ""); classname = classname.replaceAll(abstractNameSuffix + "$", ""); operations.put(USER_CLASSNAME_KEY, classname); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java index 211de3349be..eacf50eb9b1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java @@ -26,7 +26,10 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ApiInfoMap; 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.LoggerFactory; @@ -157,9 +160,9 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); addUserClassnameToOperations(operations); escapeMediaType(operationList); return objs; @@ -167,21 +170,16 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen { @Override public Map postProcessSupportingFileData(Map objs) { - Map apiInfo = (Map) objs.get("apiInfo"); - List> apiList = (List>) apiInfo.get("apis"); - for (HashMap api : apiList) { - HashMap operations = (HashMap) api.get("operations"); - List operationList = (List) operations.get("operation"); + ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo"); + for (OperationsMap api : apiInfo.getApis()) { + List operationList = api.getOperations().getOperation(); // Sort operations to avoid static routes shadowing // ref: https://github.com/nikic/FastRoute/blob/master/src/DataGenerator/RegexBasedAbstract.php#L92-L101 - Collections.sort(operationList, new Comparator() { - @Override - public int compare(CodegenOperation one, CodegenOperation another) { + operationList.sort((one, another) -> { if (one.getHasPathParams() && !another.getHasPathParams()) return 1; if (!one.getHasPathParams() && another.getHasPathParams()) return -1; return 0; - } }); } return objs; @@ -217,8 +215,8 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen { * * @param operations codegen object with operations */ - private void addUserClassnameToOperations(Map operations) { - String classname = (String) operations.get("classname"); + private void addUserClassnameToOperations(OperationMap operations) { + String classname = operations.getClassname(); classname = classname.replaceAll("^" + abstractNamePrefix, ""); classname = classname.replaceAll(abstractNameSuffix + "$", ""); operations.put(USER_CLASSNAME_KEY, classname); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java index 90c36216331..36048286d03 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java @@ -24,6 +24,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -391,15 +393,15 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - operations.put("controllerName", toControllerName((String) operations.get("pathPrefix"))); - operations.put("symfonyService", toSymfonyService((String) operations.get("pathPrefix"))); + OperationMap operations = objs.getOperations(); + operations.put("controllerName", toControllerName(operations.getPathPrefix())); + operations.put("symfonyService", toSymfonyService(operations.getPathPrefix())); List authMethods = new ArrayList<>(); - List operationList = (List) operations.get("operation"); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { // Loop through all input parameters to determine, whether we have to import something to diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java index ceabdd28d40..be907ccfe81 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java @@ -27,6 +27,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ProcessUtils; import org.slf4j.Logger; @@ -1012,8 +1014,8 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); HashMap modelMaps = new HashMap<>(); HashMap processedModelMaps = new HashMap<>(); @@ -1022,7 +1024,7 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo modelMaps.put(m.classname, m); } - List operationList = (List) operations.get("operation"); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { int index = 0; for (CodegenParameter p : op.allParams) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java index 7b2a83175db..b0d1419275a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java @@ -28,6 +28,8 @@ import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.apache.commons.lang3.StringUtils; @@ -541,9 +543,9 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { int index = 1; for (CodegenParameter p : op.allParams) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index 80ebe46c272..942358eac04 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -31,6 +31,8 @@ import org.openapitools.codegen.CodegenDiscriminator.MappedModel; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ProcessUtils; import org.openapitools.codegen.meta.GeneratorMetadata; @@ -365,13 +367,13 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen { @Override @SuppressWarnings("static-method") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { // fix the imports that each model has, add the module reference to the model // loops through imports and converts them all // from 'Pet' to 'from petstore_api.model.pet import Pet' - HashMap val = (HashMap) objs.get("operations"); - ArrayList operations = (ArrayList) val.get("operation"); + OperationMap val = objs.getOperations(); + List operations = val.getOperation(); for (CodegenOperation operation : operations) { if (operation.imports.isEmpty()) { continue; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java index 44130d9b6e2..95d6d5bc690 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.api.TemplatePathLocator; import org.openapitools.codegen.ignore.CodegenIgnoreProcessor; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.templating.*; import io.swagger.v3.core.util.Json; 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 This ingests all operations under a tag in the objs input and writes out one file for each endpoint */ - protected void generateEndpoints(Map objs) { + protected void generateEndpoints(OperationsMap objs) { if (!(Boolean) additionalProperties.get(CodegenConstants.GENERATE_APIS)) { return; } - HashMap operations = (HashMap) objs.get("operations"); - ArrayList codegenOperations = (ArrayList) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List codegenOperations = operations.getOperation(); for (CodegenOperation co: codegenOperations) { for (Tag tag: co.tags) { String tagName = tag.getName(); @@ -442,7 +444,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen { String templateName = "endpoint.handlebars"; String filename = endpointFilename(templateName, pythonTagName, co.operationId); try { - File written = processTemplateToFile(operationMap, templateName, filename, true, CodegenConstants.APIS); + processTemplateToFile(operationMap, templateName, filename, true, CodegenConstants.APIS); } catch (IOException e) { LOGGER.error("Error when writing template file {}", e.toString()); } @@ -671,14 +673,14 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen { @Override @SuppressWarnings("static-method") - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { // fix the imports that each model has, add the module reference to the model // loops through imports and converts them all // from 'Pet' to 'from petstore_api.model.pet import Pet' - HashMap val = (HashMap) objs.get("operations"); - ArrayList operations = (ArrayList) val.get("operation"); - ArrayList> imports = (ArrayList>) objs.get("imports"); + OperationMap val = objs.getOperations(); + List operations = val.getOperation(); + List> imports = objs.getImports(); for (CodegenOperation operation : operations) { if (operation.imports.size() == 0) { continue; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java index e1802196294..627e7ae1002 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java @@ -30,6 +30,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -188,12 +190,12 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); // Set will make sure that no duplicated items are used. Set securityImports = new HashSet<>(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (final CodegenOperation operation : ops) { List responses = operation.responses; if (responses != null) { @@ -230,7 +232,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { } } - objs.put("securityImports", new ArrayList(securityImports)); + objs.put("securityImports", new ArrayList<>(securityImports)); return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java index 8cecb235cd3..1e24fc3ad52 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -689,16 +691,16 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map objectMap = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); - HashMap modelMaps = new HashMap(); + HashMap modelMaps = new HashMap<>(); for (ModelMap modelMap : allModels) { CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } - List operations = (List) objectMap.get("operation"); + List operations = objectMap.getOperation(); for (CodegenOperation operation : operations) { for (CodegenParameter cp : operation.allParams) { cp.vendorExtensions.put("x-r-example", constructExampleCode(cp, modelMaps)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java index f95ab1ea459..1ac9398c1aa 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java @@ -23,6 +23,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -573,18 +575,18 @@ public class RubyClientCodegen extends AbstractRubyCodegen { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map operations = (Map) objs.get("operations"); - HashMap modelMaps = new HashMap(); - HashMap processedModelMaps = new HashMap(); + OperationMap operations = objs.getOperations(); + HashMap modelMaps = new HashMap<>(); + HashMap processedModelMaps = new HashMap<>(); for (ModelMap modelMap : allModels) { CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } - List operationList = (List) operations.get("operation"); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { for (CodegenParameter p : op.allParams) { p.vendorExtensions.put("x-ruby-example", constructExampleCode(p, modelMaps, processedModelMaps)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java index 82f6b012c79..cde626ece1e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.StringUtils; import org.slf4j.Logger; @@ -525,11 +527,9 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - @SuppressWarnings("unchecked") - Map objectMap = (Map) objs.get("operations"); - @SuppressWarnings("unchecked") - List operations = (List) objectMap.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); + List operations = objectMap.getOperation(); for (CodegenOperation operation : operations) { // http method verb conversion, depending on client library (e.g. Hyper: PUT => Put, Reqwest: PUT => put) if (HYPER_LIBRARY.equals(getLibrary())) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java index 47e61ebe2fd..c6d73c6c2ea 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java @@ -33,8 +33,11 @@ import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ApiInfoMap; import org.openapitools.codegen.model.ModelMap; 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.URLPathUtils; import org.slf4j.Logger; @@ -968,9 +971,9 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { postProcessOperationWithModels(op, allModels); @@ -1370,12 +1373,9 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { * @return true if any operation has a callback, false otherwise */ private static boolean haveCallbacks(Map bundle) { - Map apiInfo = (Map) bundle.get("apiInfo"); - List apis = (List) apiInfo.get("apis"); - for (Object api : apis) { - Map apiData = (Map) api; - Map opss = (Map) apiData.get("operations"); - List ops = (List) opss.get("operation"); + ApiInfoMap apiInfo = (ApiInfoMap) bundle.get("apiInfo"); + for (OperationsMap api : apiInfo.getApis()) { + List ops = api.getOperations().getOperation(); for (CodegenOperation op : ops) { if (!op.callbacks.isEmpty()) { return true; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java index fbcf40acc8d..a74eabfcfe8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java @@ -26,6 +26,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -212,13 +214,12 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { if (registerNonStandardStatusCodes) { try { - @SuppressWarnings("unchecked") - Map> opsMap = (Map>) objs.get("operations"); - HashSet unknownCodes = new HashSet(); - for (CodegenOperation operation : opsMap.get("operation")) { + OperationMap opsMap = objs.getOperations(); + HashSet unknownCodes = new HashSet<>(); + for (CodegenOperation operation : opsMap.getOperation()) { for (CodegenResponse response : operation.responses) { if ("default".equals(response.code)) { continue; @@ -251,13 +252,7 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code } // Remove OAuth securities - Iterator it = codegenSecurities.iterator(); - while (it.hasNext()) { - final CodegenSecurity security = it.next(); - if (security.isOAuth) { - it.remove(); - } - } + codegenSecurities.removeIf(security -> security.isOAuth); if (codegenSecurities.isEmpty()) { return null; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java index 480f9ccab4b..dd50aec4889 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java @@ -26,6 +26,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -282,8 +284,8 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map baseObjs = super.postProcessOperationsWithModels(objs, allModels); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationsMap baseObjs = super.postProcessOperationsWithModels(objs, allModels); pathMatcherPatternsPostProcessor(baseObjs); marshallingPostProcessor(baseObjs); return baseObjs; @@ -344,13 +346,12 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements public static String PATH_MATCHER_PATTERNS_KEY = "pathMatcherPatterns"; - @SuppressWarnings("unchecked") - private static void pathMatcherPatternsPostProcessor(Map objs) { + private static void pathMatcherPatternsPostProcessor(OperationsMap objs) { if (objs != null) { HashMap patternMap = new HashMap<>(); - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { for (CodegenParameter parameter : operation.pathParams) { if (parameter.pattern != null && !parameter.pattern.isEmpty()) { @@ -371,8 +372,7 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements } // Responsible for setting up Marshallers/Unmarshallers - @SuppressWarnings("unchecked") - public static void marshallingPostProcessor(Map objs) { + public static void marshallingPostProcessor(OperationsMap objs) { if (objs == null) { return; @@ -384,9 +384,9 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements boolean hasCookieParams = false; boolean hasMultipart = false; - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List operationList = (List) operations.get("operation"); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { boolean isMultipart = op.isMultipart; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java index 45975268d62..4dde3ea3b6f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java @@ -22,6 +22,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; 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); } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { // Converts GET /foo/bar => get("foo" :: "bar") diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java index 0d2ea418a1d..c4d38de101c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java @@ -22,6 +22,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -202,9 +204,9 @@ public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements Cod } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - ArrayList oplist = (ArrayList) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List oplist = operations.getOperation(); for (CodegenOperation codegenOperation : oplist) { String path = codegenOperation.path; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java index 1e752dad453..eaa7dcf08a3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java @@ -23,8 +23,11 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.model.ApiInfoMap; import org.openapitools.codegen.model.ModelMap; 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.utils.ModelUtils; import org.slf4j.Logger; @@ -223,9 +226,8 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem .put("indented_4", new IndentedLambda(4, " ")); } - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { Map models = new HashMap<>(); for (ModelMap _mo : allModels) { @@ -233,9 +235,9 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem models.put(model.classname, _mo.getModel()); } - Map operations = (Map) objs.get("operations"); + OperationMap operations = objs.getOperations(); if (operations != null) { - List ops = (List) operations.get("operation"); + List ops = operations.getOperation(); for (CodegenOperation operation : ops) { Pattern pathVariableMatcher = Pattern.compile("\\{([^}]+)}"); Matcher match = pathVariableMatcher.matcher(operation.path); @@ -277,18 +279,15 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem return objs; } - @SuppressWarnings("unchecked") @Override public Map postProcessSupportingFileData(Map objs) { objs = super.postProcessSupportingFileData(objs); generateJSONSpecFile(objs); // Prettify routes file - Map apiInfo = (Map) objs.get("apiInfo"); - List> apis = (List>) apiInfo.get("apis"); - List ops = apis.stream() - .map(api -> (Map) api.get("operations")) - .flatMap(operations -> ((List) operations.get("operation")).stream()) + ApiInfoMap apiInfo = (ApiInfoMap) objs.get("apiInfo"); + List ops = apiInfo.getApis().stream() + .flatMap(api -> api.getOperations().getOperation().stream()) .collect(Collectors.toList()); int maxPathLength = ops.stream() .mapToInt(op -> op.httpMethod.length() + op.path.length()) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java index 7e3e2d38357..0d3c45fd9b8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java @@ -30,6 +30,8 @@ import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -313,13 +315,12 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { if (registerNonStandardStatusCodes) { try { - @SuppressWarnings("unchecked") - Map> opsMap = (Map>) objs.get("operations"); - HashSet unknownCodes = new HashSet(); - for (CodegenOperation operation : opsMap.get("operation")) { + OperationMap opsMap = objs.getOperations(); + HashSet unknownCodes = new HashSet<>(); + for (CodegenOperation operation : opsMap.getOperation()) { for (CodegenResponse response : operation.responses) { if ("default".equals(response.code)) { continue; @@ -352,13 +353,7 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code } // Remove OAuth securities - Iterator it = codegenSecurities.iterator(); - while (it.hasNext()) { - final CodegenSecurity security = it.next(); - if (security.isOAuth) { - it.remove(); - } - } + codegenSecurities.removeIf(security -> security.isOAuth); if (codegenSecurities.isEmpty()) { return null; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalatraServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalatraServerCodegen.java index 44249acf2b4..b22533ff2cc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalatraServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalatraServerCodegen.java @@ -20,6 +20,8 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.util.*; @@ -167,9 +169,9 @@ public class ScalatraServerCodegen extends AbstractScalaCodegen implements Codeg } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { // force http method to lower case op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 4708e10e491..e5a0e477315 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -62,6 +62,8 @@ import org.openapitools.codegen.meta.features.SecurityFeature; import org.openapitools.codegen.meta.features.WireFormatFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.templating.mustache.SplitStringLambda; import org.openapitools.codegen.templating.mustache.TrimWhitespaceLambda; import org.openapitools.codegen.utils.URLPathUtils; @@ -622,10 +624,10 @@ public class SpringCodegen extends AbstractJavaCodegen } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - final Map operations = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + final OperationMap operations = objs.getOperations(); if (operations != null) { - final List ops = (List) operations.get("operation"); + final List ops = operations.getOperation(); for (final CodegenOperation operation : ops) { final List responses = operation.responses; if (responses != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java index 4e5d92b6be6..b2210f39f51 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java @@ -29,6 +29,8 @@ import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.Markdown; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -142,9 +144,9 @@ public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfi } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); for (CodegenResponse response : op.responses) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java index d2fe4759c57..63457b57d7d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtmlGenerator.java @@ -26,6 +26,8 @@ import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.Markdown; import org.openapitools.codegen.utils.ModelUtils; @@ -125,9 +127,9 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); for (CodegenResponse response : op.responses) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index d4bd6237555..08afea2fa60 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -28,6 +28,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1182,16 +1184,16 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { - Map objectMap = (Map) objs.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap objectMap = objs.getOperations(); - HashMap modelMaps = new HashMap(); + HashMap modelMaps = new HashMap<>(); for (ModelMap modelMap: allModels) { CodegenModel m = modelMap.getModel(); modelMaps.put(m.classname, m); } - List operations = (List) objectMap.get("operation"); + List operations = objectMap.getOperation(); for (CodegenOperation operation : operations) { for (CodegenParameter cp : operation.allParams) { cp.vendorExtensions.put("x-swift-example", constructExampleCode(cp, modelMaps, new HashSet<>())); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java index 7b7a6102f1a..73903cdf959 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java @@ -22,6 +22,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.SemVer; import org.slf4j.Logger; @@ -385,13 +387,13 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { - Map objs = (Map) operations.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { + OperationMap objs = operations.getOperations(); // Add filename information for api imports - objs.put("apiFilename", getApiFilenameFromClassname(objs.get("classname").toString())); + objs.put("apiFilename", getApiFilenameFromClassname(objs.getClassname())); - List ops = (List) objs.get("operation"); + List ops = objs.getOperation(); boolean hasSomeFormParams = false; for (CodegenOperation op : ops) { if (op.getHasFormParams()) { @@ -446,8 +448,8 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode operations.put("hasSomeFormParams", hasSomeFormParams); // Add additional filename information for model imports in the services - List> imports = (List>) operations.get("imports"); - for (Map im : imports) { + List> imports = operations.getImports(); + for (Map im : imports) { // This property is not used in the templates any more, subject for removal im.put("filename", im.get("import")); im.put("classname", im.get("classname")); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAureliaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAureliaClientCodegen.java index e0479d1daad..be3224dbb7f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAureliaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAureliaClientCodegen.java @@ -20,6 +20,8 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import java.util.*; @@ -84,12 +86,12 @@ public class TypeScriptAureliaClientCodegen extends AbstractTypeScriptClientCode } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); HashSet modelImports = new HashSet<>(); - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { // Aurelia uses "asGet", "asPost", ... methods; change the method format op.httpMethod = camelize(op.httpMethod.toLowerCase(Locale.ROOT)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java index a0083a1e4b1..41574681763 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java @@ -24,6 +24,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import java.util.*; @@ -145,10 +147,10 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege } @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); - Map vals = (Map) objs.getOrDefault("operations", new HashMap<>()); - List operations = (List) vals.getOrDefault("operation", new ArrayList<>()); + OperationMap vals = objs.getOperations(); + List operations = vals.getOperation(); /* Filter all the operations that are multipart/form-data operations and set the vendor extension flag 'multipartFormData' for the template to work with. @@ -156,9 +158,7 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege operations.stream() .filter(op -> op.hasConsumes) .filter(op -> op.consumes.stream().anyMatch(opc -> opc.values().stream().anyMatch("multipart/form-data"::equals))) - .forEach(op -> { - op.vendorExtensions.putIfAbsent("multipartFormData", true); - }); + .forEach(op -> op.vendorExtensions.putIfAbsent("multipartFormData", true)); return objs; } @@ -191,7 +191,6 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege } @Override - @SuppressWarnings("unchecked") public ModelsMap postProcessModels(ModelsMap objs) { List models = postProcessModelsEnum(objs).getModels(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index e60af80b95a..d7a2af88dfe 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -35,6 +35,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -318,18 +320,17 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo } @Override - public Map postProcessOperationsWithModels(Map operations, List models) { + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List models) { // Add additional filename information for model imports in the apis - List> imports = (List>) operations.get("imports"); - for (Map im : imports) { - im.put("filename", ((String) im.get("import")).replace(".", "/")); - im.put("classname", getModelnameFromModelFilename(im.get("import").toString())); + List> imports = operations.getImports(); + for (Map im : imports) { + im.put("filename", im.get("import").replace(".", "/")); + im.put("classname", getModelnameFromModelFilename(im.get("import"))); } - @SuppressWarnings("unchecked") - Map operationsMap = (Map) operations.get("operations"); - List operationList = (List) operationsMap.get("operation"); + OperationMap operationsMap = operations.getOperations(); + List operationList = operationsMap.getOperation(); for (CodegenOperation operation: operationList) { List responses = operation.responses; operation.returnType = this.getReturnType(responses); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java index d8c056405b2..1f00bce4a3e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java @@ -30,6 +30,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.templating.mustache.IndentedLambda; import org.openapitools.codegen.utils.ModelUtils; @@ -572,9 +574,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { // Add supporting file only if we plan to generate files in /apis - if (operations.size() > 0 && !addedApiIndex) { + if (!operations.isEmpty() && !addedApiIndex) { addedApiIndex = true; supportingFiles.add(new SupportingFile("apis.index.mustache", apiPackage().replace('.', File.separatorChar), "index.ts")); if (this.getSagasAndRecords()) { @@ -584,7 +586,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } // Add supporting file only if we plan to generate files in /models - if (allModels.size() > 0 && !addedModelIndex) { + if (!allModels.isEmpty() && !addedModelIndex) { addedModelIndex = true; 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); } - private void escapeOperationIds(Map operations) { - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); - for (ExtendedCodegenOperation op : operationList) { + private void escapeOperationIds(OperationsMap operations) { + for (CodegenOperation _op : operations.getOperations().getOperation()) { + ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op; String param = op.operationIdCamelCase + "Request"; if (op.imports.contains(param)) { // 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 operations) { + private void addOperationModelImportInformation(OperationsMap operations) { // This method will add extra information to the operations.imports array. // The api template uses this information to import all the required // models for a given operation. - List> imports = (List>) operations.get("imports"); - List existingRecordClassNames = new ArrayList(); - List existingClassNames = new ArrayList(); - for (Map im : imports) { - String className = im.get("import").toString().replace(modelPackage() + ".", ""); + List> imports = operations.getImports(); + List existingRecordClassNames = new ArrayList<>(); + List existingClassNames = new ArrayList<>(); + for (Map im : imports) { + String className = im.get("import").replace(modelPackage() + ".", ""); existingClassNames.add(className); existingRecordClassNames.add(className + "Record"); im.put("className", className); } if (this.getSagasAndRecords()) { - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); - Set additionalPassthroughImports = new TreeSet(); - for (ExtendedCodegenOperation op : operationList) { - if (op.returnPassthrough != null && op.returnBaseTypeAlternate instanceof String) { + Set additionalPassthroughImports = new TreeSet<>(); + for (CodegenOperation _op : operations.getOperations().getOperation()) { + ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op; + if (op.returnPassthrough != null && op.returnBaseTypeAlternate != null) { if (op.returnTypeSupportsEntities && !existingRecordClassNames.contains(op.returnBaseTypeAlternate)) { additionalPassthroughImports.add(op.returnBaseTypeAlternate); } else if (!op.returnTypeSupportsEntities && !existingClassNames.contains(op.returnBaseTypeAlternate)) { @@ -809,14 +809,13 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } } - private void updateOperationParameterForEnum(Map operations) { + private void updateOperationParameterForEnum(OperationsMap operations) { // This method will add extra information as to whether or not we have enums and // update their names with the operation.id prefixed. // It will also set the uniqueId status if provided. - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); boolean hasEnum = false; - for (ExtendedCodegenOperation op : operationList) { + for (CodegenOperation _op : operations.getOperations().getOperation()) { + ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op; for (CodegenParameter cpParam : op.allParams) { ExtendedCodegenParameter param = (ExtendedCodegenParameter) cpParam; @@ -831,13 +830,12 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege operations.put("hasEnums", hasEnum); } - private void updateOperationParameterForSagaAndRecords(Map operations) { + private void updateOperationParameterForSagaAndRecords(OperationsMap operations) { // This method will add extra information as to whether or not we have enums and // update their names with the operation.id prefixed. // It will also set the uniqueId status if provided. - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); - for (ExtendedCodegenOperation op : operationList) { + for (CodegenOperation _op : operations.getOperations().getOperation()) { + ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op; for (CodegenParameter cpParam : op.allParams) { ExtendedCodegenParameter param = (ExtendedCodegenParameter) cpParam; @@ -881,13 +879,12 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } } - private void addOperationObjectResponseInformation(Map operations) { + private void addOperationObjectResponseInformation(OperationsMap operations) { // This method will modify the information on the operations' return type. // The api template uses this information to know when to return a text // response for a given simple response operation. - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); - for (ExtendedCodegenOperation op : operationList) { + for (CodegenOperation _op : operations.getOperations().getOperation()) { + ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op; if ("object".equals(op.returnType)) { op.isMap = true; op.returnSimpleType = false; @@ -896,7 +893,6 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } private void addOperationPrefixParameterInterfacesInformation(Map operations) { - Map _operations = (Map) operations.get("operations"); operations.put("prefixParameterInterfaces", getPrefixParameterInterfaces()); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java index 6f7ddbb3c5a..6fdb5f0d169 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java @@ -25,6 +25,8 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.util.*; @@ -197,13 +199,13 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { - Map objs = (Map) operations.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { + OperationMap objs = operations.getOperations(); // Add filename information for api imports - objs.put("apiFilename", getApiFilenameFromClassname(objs.get("classname").toString())); + objs.put("apiFilename", getApiFilenameFromClassname(objs.getClassname())); - List ops = (List) objs.get("operation"); + List ops = objs.getOperation(); for (CodegenOperation op : ops) { // Prep a string buffer where we're going to set up our new version of the string. StringBuilder pathBuffer = new StringBuilder(); @@ -246,10 +248,10 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo } // Add additional filename information for model imports in the services - List> imports = (List>) operations.get("imports"); - for (Map im : imports) { + List> imports = operations.getImports(); + for (Map im : imports) { im.put("filename", im.get("import")); - im.put("classname", getModelnameFromModelFilename(im.get("filename").toString())); + im.put("classname", getModelnameFromModelFilename(im.get("filename"))); } return operations; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java index a79d6627fca..5814238c94d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java @@ -22,6 +22,8 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.SemVer; import org.slf4j.Logger; @@ -267,13 +269,13 @@ public class TypeScriptNestjsClientCodegen extends AbstractTypeScriptClientCodeg } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { - Map objs = (Map) operations.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { + OperationMap objs = operations.getOperations(); // Add filename information for api imports - objs.put("apiFilename", getApiFilenameFromClassname(objs.get("classname").toString())); + objs.put("apiFilename", getApiFilenameFromClassname(objs.getClassname())); - List ops = (List) objs.get("operation"); + List ops = objs.getOperation(); boolean hasSomeFormParams = false; for (CodegenOperation op : ops) { if (op.getHasFormParams()) { @@ -327,8 +329,8 @@ public class TypeScriptNestjsClientCodegen extends AbstractTypeScriptClientCodeg operations.put("hasSomeFormParams", hasSomeFormParams); // Add additional filename information for model imports in the services - List> imports = (List>) operations.get("imports"); - for (Map im : imports) { + List> imports = operations.getImports(); + for (Map im : imports) { im.put("filename", im.get("import")); im.put("classname", im.get("classname")); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java index 2b761abafd9..a0685ecbe98 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java @@ -25,6 +25,8 @@ import io.swagger.v3.oas.models.responses.ApiResponse; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -198,13 +200,13 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { - Map objs = (Map) operations.get("operations"); + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { + OperationMap objs = operations.getOperations(); // 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 Map authMethodsMap = new HashMap<>(); - for (CodegenOperation op : (List) objs.get("operation")) { + for (CodegenOperation op : objs.getOperation()) { if (op.hasAuthMethods) { for (CodegenSecurity sec : op.authMethods) { authMethodsMap.put(sec.name, sec); @@ -219,12 +221,12 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen } // 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 - List> imports = (List>) operations.get("imports"); - for (Map im : imports) { - im.put("filename", im.get("import").toString()); + List> imports = operations.getImports(); + for (Map im : imports) { + im.put("filename", im.get("import")); } return operations; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptReduxQueryClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptReduxQueryClientCodegen.java index 3160d494c49..a4c13dbbe02 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptReduxQueryClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptReduxQueryClientCodegen.java @@ -22,6 +22,7 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import java.io.File; @@ -185,15 +186,15 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { // Add supporting file only if we plan to generate files in /apis - if (operations.size() > 0 && !addedApiIndex) { + if (!operations.isEmpty() && !addedApiIndex) { addedApiIndex = true; 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 - if (allModels.size() > 0 && !addedModelIndex) { + if (!allModels.isEmpty() && !addedModelIndex) { addedModelIndex = true; supportingFiles.add(new SupportingFile("models.index.mustache", modelPackage().replace('.', File.separatorChar), "index.ts")); } @@ -204,13 +205,13 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC return operations; } - private void addOperationModelImportInformation(Map operations) { + private void addOperationModelImportInformation(OperationsMap operations) { // This method will add extra information to the operations.imports array. // The api template uses this information to import all the required // models for a given operation. - List> imports = (List>) operations.get("imports"); - for (Map im : imports) { - String[] parts = im.get("import").toString().replace(modelPackage() + ".", "").split("( [|&] )|[<>]"); + List> imports = operations.getImports(); + for (Map im : imports) { + String[] parts = im.get("import").replace(modelPackage() + ".", "").split("( [|&] )|[<>]"); for (String s : parts) { if (needToImport(s)) { im.put("filename", im.get("import")); @@ -220,13 +221,11 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC } } - private void updateOperationParameterEnumInformation(Map operations) { + private void updateOperationParameterEnumInformation(OperationsMap operations) { // This method will add extra information as to whether or not we have enums and // update their names with the operation.id prefixed. - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); boolean hasEnum = false; - for (CodegenOperation op : operationList) { + for (CodegenOperation op : operations.getOperations().getOperation()) { for (CodegenParameter param : op.allParams) { if (Boolean.TRUE.equals(param.isEnum)) { hasEnum = true; @@ -239,13 +238,11 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC operations.put("hasEnums", hasEnum); } - private void addOperationObjectResponseInformation(Map operations) { + private void addOperationObjectResponseInformation(OperationsMap operations) { // This method will modify the information on the operations' return type. // The api template uses this information to know when to return a text // response for a given simple response operation. - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); - for (CodegenOperation op : operationList) { + for (CodegenOperation op : operations.getOperations().getOperation()) { if("object".equals(op.returnType)) { op.isMap = true; op.returnSimpleType = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java index 0cbd2be7c21..e9091517b3b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java @@ -23,6 +23,7 @@ import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -196,15 +197,14 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen } @Override - public Map postProcessOperationsWithModels(Map operations, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap operations, List allModels) { // Convert List of CodegenOperation to List of ExtendedCodegenOperation - Map _operations = (Map) operations.get("operations"); - List os = (List) _operations.get("operation"); - List newOs = new ArrayList(); + List os = operations.getOperations().getOperation(); + List newOs = new ArrayList<>(); for (CodegenOperation o : os) { newOs.add(new ExtendedCodegenOperation(o)); } - _operations.put("operation", newOs); + operations.getOperations().setOperation(newOs); this.addOperationModelImportInformation(operations); this.updateOperationParameterEnumInformation(operations); @@ -213,23 +213,22 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen return operations; } - private void addOperationModelImportInformation(Map operations) { + private void addOperationModelImportInformation(OperationsMap operations) { // This method will add extra information to the operations.imports array. // The api template uses this information to import all the required // models for a given operation. - List> imports = (List>) operations.get("imports"); - for (Map im : imports) { - im.put("className", im.get("import").toString().replace("models.", "")); + List> imports = operations.getImports(); + for (Map im : imports) { + im.put("className", im.get("import").replace("models.", "")); } } - private void updateOperationParameterEnumInformation(Map operations) { + private void updateOperationParameterEnumInformation(OperationsMap operations) { // This method will add extra information as to whether or not we have enums and // update their names with the operation.id prefixed. - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); boolean hasEnums = false; - for (ExtendedCodegenOperation op : operationList) { + for (CodegenOperation _op : operations.getOperations().getOperation()) { + ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op; for (CodegenParameter param : op.allParams) { if (Boolean.TRUE.equals(param.isEnum)) { hasEnums = true; @@ -249,10 +248,8 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen } } - private void addConditionalImportInformation(Map operations) { + private void addConditionalImportInformation(OperationsMap operations) { // This method will determine if there are required parameters and if there are list containers - Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); boolean hasRequiredParams = false; boolean hasListContainers = false; @@ -260,7 +257,8 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen boolean hasQueryParams = false; boolean hasPathParams = false; - for (ExtendedCodegenOperation op : operationList) { + for (CodegenOperation _op : operations.getOperations().getOperation()) { + ExtendedCodegenOperation op = (ExtendedCodegenOperation) _op; if (op.getHasRequiredParams()) { hasRequiredParams = true; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java index bd803f4b97c..0a35197f954 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java @@ -23,6 +23,7 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.text.Normalizer; @@ -94,12 +95,8 @@ public class WsdlSchemaCodegen extends DefaultCodegen implements CodegenConfig { } @Override - public Map postProcessOperationsWithModels(Map objs, - List allModels) { - - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); - for (CodegenOperation op : operationList) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + for (CodegenOperation op : objs.getOperations().getOperation()) { op.operationId = this.generateOperationId(op); // for xml compliant primitives, lowercase dataType of openapi diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ApiInfoMap.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ApiInfoMap.java new file mode 100644 index 00000000000..249ef9b437f --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/ApiInfoMap.java @@ -0,0 +1,17 @@ +package org.openapitools.codegen.model; + +import java.util.HashMap; +import java.util.List; + +public class ApiInfoMap extends HashMap { + + public void setApis(List apis) { + put("apis", apis); + } + + @SuppressWarnings("unchecked") + public List getApis() { + return (List) get("apis"); + } + +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/OperationMap.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/OperationMap.java new file mode 100644 index 00000000000..1d8806508e3 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/OperationMap.java @@ -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 { + + public void setOperation(CodegenOperation ops) { + put("operation", Collections.singletonList(ops)); + } + + public void setOperation(List ops) { + put("operation", ops); + } + + @SuppressWarnings("unchecked") + public List getOperation() { + return (List) 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"); + } + +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/OperationsMap.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/OperationsMap.java new file mode 100644 index 00000000000..2a24644cbfc --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/model/OperationsMap.java @@ -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 { + + public void setOperation(OperationMap objs) { + put("operations", objs); + } + + public OperationMap getOperations() { + return (OperationMap) get("operations"); + } + + public void setImports(List> imports) { + put("imports", imports); + } + + @SuppressWarnings("unchecked") + public List> getImports() { + return (List>) get("imports"); + } + +} diff --git a/modules/openapi-generator/src/main/resources/codegen/generatorClass.mustache b/modules/openapi-generator/src/main/resources/codegen/generatorClass.mustache index 96504e74098..4f89b0f502a 100644 --- a/modules/openapi-generator/src/main/resources/codegen/generatorClass.mustache +++ b/modules/openapi-generator/src/main/resources/codegen/generatorClass.mustache @@ -1,7 +1,7 @@ package {{generatorPackage}}; import org.openapitools.codegen.*; -import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.*; import io.swagger.models.properties.*; import java.util.*; @@ -36,18 +36,17 @@ public class {{generatorClass}} extends DefaultCodegen implements CodegenConfig /** * Provides an opportunity to inspect and modify operation data before the code is generated. */ - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { // to try debugging your code generator: // set a break point on the next line. // then debug the JUnit test called LaunchGeneratorInDebugger - Map results = super.postProcessOperationsWithModels(objs, allModels); + OperationsMap results = super.postProcessOperationsWithModels(objs, allModels); - Map ops = (Map)results.get("operations"); - ArrayList opList = (ArrayList)ops.get("operation"); + OperationMap ops = results.getOperations(); + List opList = ops.getOperation(); // iterate over the operation and perhaps modify something for(CodegenOperation co : opList){ @@ -196,4 +195,4 @@ public class {{generatorClass}} extends DefaultCodegen implements CodegenConfig //TODO: check that this logic is safe to escape quotation mark to avoid code injection return input.replace("\"", "\\\""); } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/codegen/kotlin/generatorClass.mustache b/modules/openapi-generator/src/main/resources/codegen/kotlin/generatorClass.mustache index 7c78604b805..17384f2f95d 100644 --- a/modules/openapi-generator/src/main/resources/codegen/kotlin/generatorClass.mustache +++ b/modules/openapi-generator/src/main/resources/codegen/kotlin/generatorClass.mustache @@ -2,7 +2,7 @@ package {{generatorPackage}} import org.openapitools.codegen.* -import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.*; import java.util.* import java.io.File @@ -37,11 +37,11 @@ open class {{generatorClass}}() : DefaultCodegen(), CodegenConfig { * Provides an opportunity to inspect and modify operation data before the code is generated. */ @Suppress("UNCHECKED_CAST") - override fun postProcessOperationsWithModels(objs: Map, allModels: List?): Map { + override fun postProcessOperationsWithModels(objs: OperationsMap, allModels: List?): OperationsMap { val results = super.postProcessOperationsWithModels(objs, allModels) - val ops = results["operations"] as Map - val opList = ops["operation"] as ArrayList + val ops = results.getOperations() + val opList = ops.getOperation() // iterate over the operation and perhaps modify something for (co: CodegenOperation in opList) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java index d2ae77e2190..6615034a1ea 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java @@ -14,6 +14,7 @@ import io.swagger.v3.oas.models.responses.ApiResponses; import org.openapitools.codegen.config.CodegenConfigurator; import org.openapitools.codegen.config.GlobalSettings; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.utils.ModelUtils; import org.testng.Assert; import org.testng.annotations.Test; @@ -654,7 +655,7 @@ public class DefaultGeneratorTest { List filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); List allModels = new ArrayList<>(); generator.generateModels(files, allModels, filteredSchemas); - List allOperations = new ArrayList<>(); + List allOperations = new ArrayList<>(); generator.generateApis(files, allOperations, allModels); Map bundle = generator.buildSupportFileBundle(allOperations, allModels); @@ -680,7 +681,7 @@ public class DefaultGeneratorTest { List filteredSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); List allModels = new ArrayList<>(); generator.generateModels(files, allModels, filteredSchemas); - List allOperations = new ArrayList<>(); + List allOperations = new ArrayList<>(); generator.generateApis(files, allOperations, allModels); Map bundle = generator.buildSupportFileBundle(allOperations, allModels); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaCXFClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaCXFClientCodegenTest.java index abe7aee3411..b2e7cf66993 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaCXFClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaCXFClientCodegenTest.java @@ -29,6 +29,8 @@ import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.GzipTestFeatures; import org.openapitools.codegen.languages.features.LoggingTestFeatures; import org.openapitools.codegen.languages.features.UseGenericResponseFeatures; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.testng.Assert; import org.testng.annotations.Test; @@ -52,9 +54,12 @@ public class JavaCXFClientCodegenTest { final JavaCXFClientCodegen codegen = new JavaCXFClientCodegen(); final CodegenOperation co = codegen.fromOperation("getAllPets", "GET", operation, null); - Map objs = new HashMap<>(); - objs.put("operations", Collections.singletonMap("operation", Collections.singletonList(co))); - objs.put("imports", Collections.emptyList()); + OperationMap operationMap = new OperationMap(); + operationMap.setOperation(co); + + OperationsMap objs = new OperationsMap(); + objs.setOperation(operationMap); + objs.setImports(Collections.emptyList()); codegen.postProcessOperationsWithModels(objs, Collections.emptyList()); Assert.assertEquals(co.responses.size(), 2); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 99892f884be..ad00fb1281d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -59,6 +59,8 @@ import org.openapitools.codegen.languages.AbstractJavaCodegen; import org.openapitools.codegen.languages.JavaClientCodegen; import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.CXFServerFeatures; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.testng.Assert; import org.testng.annotations.Ignore; import org.testng.annotations.Test; @@ -136,9 +138,12 @@ public class JavaClientCodegenTest { CodegenParameter pathParam2 = createPathParam("pathParam2"); codegenOperation.allParams.addAll(Arrays.asList(queryParamRequired, pathParam1, pathParam2, queryParamOptional)); - Map operations = ImmutableMap.of("operation", Arrays.asList(codegenOperation)); + OperationMap operations = new OperationMap(); + operations.setOperation(codegenOperation); - Map objs = ImmutableMap.of("operations", operations, "imports", new ArrayList>()); + OperationsMap objs = new OperationsMap(); + objs.setOperation(operations); + objs.setImports(new ArrayList<>()); javaClientCodegen.postProcessOperationsWithModels(objs, Collections.emptyList()); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/AbstractJavaJAXRSServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/AbstractJavaJAXRSServerCodegenTest.java index bd10d0beffc..e1c3d5f710a 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/AbstractJavaJAXRSServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/AbstractJavaJAXRSServerCodegenTest.java @@ -23,6 +23,8 @@ import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.languages.AbstractJavaJAXRSServerCodegen; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.testng.Assert; import org.testng.annotations.Test; @@ -108,11 +110,11 @@ public class AbstractJavaJAXRSServerCodegenTest { @Test public void testCommonPath() { final AbstractJavaJAXRSServerCodegen codegen = new P_AbstractJavaJAXRSServerCodegen(); - Map objs = new HashMap<>(); - Map> opMap = new HashMap<>(); + OperationsMap objs = new OperationsMap(); + OperationMap opMap = new OperationMap(); List operations = new ArrayList<>(); - objs.put("operations", opMap); - opMap.put("operation", operations); + objs.setOperation(opMap); + opMap.setOperation(operations); operations.add(getCo("/")); codegen.postProcessOperationsWithModels(objs, Collections.emptyList()); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java index 5ef7c843373..08bc443e334 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java @@ -25,6 +25,8 @@ import org.apache.commons.io.FileUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.RubyClientCodegen; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.testng.Assert; import org.testng.annotations.Test; @@ -164,10 +166,13 @@ public class RubyClientCodegenTest { modelMap.setModel(model); final CodegenOperation op = codegen.fromOperation(path, "post", p, null); - Map operations = ImmutableMap.of("operation", Collections.singletonList(op)); - Map objs = ImmutableMap.of("operations", operations, "imports", new ArrayList>()); + OperationMap operations = new OperationMap(); + operations.setOperation(op); + OperationsMap objs = new OperationsMap(); + objs.setOperation(operations); + objs.setImports(new ArrayList<>()); objs = codegen.postProcessOperationsWithModels(objs, Collections.singletonList(modelMap)); - CodegenOperation postProcessedOp = ((List) ((Map) objs.get("operations")).get("operation")).get(0); + CodegenOperation postProcessedOp = objs.getOperations().getOperation().get(0); Assert.assertEquals(postProcessedOp.bodyParams.size(), 1); CodegenParameter bp = postProcessedOp.bodyParams.get(0); Assert.assertEquals(bp.vendorExtensions.get("x-ruby-example"), "OnlinePetstore::Pet.new({name: 'doggie', photo_urls: ['photo_urls_example']})"); @@ -628,10 +633,13 @@ public class RubyClientCodegenTest { final Operation p = openAPI.getPaths().get(path).getDelete(); final CodegenOperation op = codegen.fromOperation(path, "delete", p, null); - Map operations = ImmutableMap.of("operation", Collections.singletonList(op)); - Map objs = ImmutableMap.of("operations", operations, "imports", new ArrayList>()); + OperationMap operations = new OperationMap(); + operations.setOperation(op); + OperationsMap objs = new OperationsMap(); + objs.setOperation(operations); + objs.setImports(new ArrayList<>()); objs = codegen.postProcessOperationsWithModels(objs, Collections.emptyList()); - CodegenOperation postProcessedOp = ((List) ((Map) objs.get("operations")).get("operation")).get(0); + CodegenOperation postProcessedOp = objs.getOperations().getOperation().get(0); CodegenParameter pp = postProcessedOp.pathParams.get(0); Assert.assertEquals(pp.vendorExtensions.get("x-ruby-example"), "'orderid123'"); @@ -648,10 +656,13 @@ public class RubyClientCodegenTest { final Operation p = openAPI.getPaths().get(path).getDelete(); final CodegenOperation op = codegen.fromOperation(path, "delete", p, null); - Map operations = ImmutableMap.of("operation", Collections.singletonList(op)); - Map objs = ImmutableMap.of("operations", operations, "imports", new ArrayList>()); + OperationMap operations = new OperationMap(); + operations.setOperation(op); + OperationsMap objs = new OperationsMap(); + objs.setOperation(operations); + objs.setImports(new ArrayList<>()); objs = codegen.postProcessOperationsWithModels(objs, Collections.emptyList()); - CodegenOperation postProcessedOp = ((List) ((Map) objs.get("operations")).get("operation")).get(0); + CodegenOperation postProcessedOp = objs.getOperations().getOperation().get(0); CodegenParameter pp = postProcessedOp.pathParams.get(0); Assert.assertEquals(pp.vendorExtensions.get("x-ruby-example"), "'orderid123'"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeClientCodegenTest.java index d08944e269c..dacc57d2f70 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeClientCodegenTest.java @@ -9,6 +9,8 @@ import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.TypeScriptNodeClientCodegen; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -145,20 +147,20 @@ public class TypeScriptNodeClientCodegenTest { @Test(description = "correctly produces imports without import mapping") public void postProcessOperationsWithModelsTestWithoutImportMapping() { final String importName = "../model/pet"; - Map operations = createPostProcessOperationsMapWithImportName(importName); + OperationsMap operations = createPostProcessOperationsMapWithImportName(importName); codegen.postProcessOperationsWithModels(operations, Collections.emptyList()); - List> extractedImports = (List>) operations.get("imports"); + List> extractedImports = operations.getImports(); Assert.assertEquals(extractedImports.get(0).get("filename"), importName); } @Test(description = "correctly produces imports with import mapping") public void postProcessOperationsWithModelsTestWithImportMapping() { final String importName = "@namespace/dir/category"; - Map operations = createPostProcessOperationsMapWithImportName(importName); + OperationsMap operations = createPostProcessOperationsMapWithImportName(importName); codegen.postProcessOperationsWithModels(operations, Collections.emptyList()); - List> extractedImports = (List>) operations.get("imports"); + List> extractedImports = operations.getImports(); Assert.assertEquals(extractedImports.get(0).get("filename"), importName); } @@ -221,22 +223,22 @@ public class TypeScriptNodeClientCodegenTest { Assert.assertEquals(tsImports.get(0).get("filename"), "./prefixChild"); } - private Map createPostProcessOperationsMapWithImportName(String importName) { - Map operations = new HashMap() {{ - put("operation", Collections.emptyList()); - put("classname", "Pet"); - }}; + private OperationsMap createPostProcessOperationsMapWithImportName(String importName) { + OperationMap operations = new OperationMap(); + operations.setClassname("Pet"); + operations.setOperation(new ArrayList<>()); - Map importList = new HashMap() {{ + Map importList = new HashMap() {{ put("import", importName); put("classname", "Pet"); }}; - List> imports = new ArrayList<>(); + List> imports = new ArrayList<>(); imports.add(importList); - return new HashMap() {{ - put("operations", operations); - put("imports", imports); - }}; + + OperationsMap operationsMap = new OperationsMap(); + operationsMap.setImports(imports); + operationsMap.setOperation(operations); + return operationsMap; } private HashMap createParameterForPostProcessAllModels(CodegenModel root, CodegenModel child) { diff --git a/samples/meta-codegen-kotlin/lib/src/main/kotlin/com/my/company/codegen/MyclientcodegenGenerator.kt b/samples/meta-codegen-kotlin/lib/src/main/kotlin/com/my/company/codegen/MyclientcodegenGenerator.kt index fa12a98b02f..ab4fdbd49d4 100644 --- a/samples/meta-codegen-kotlin/lib/src/main/kotlin/com/my/company/codegen/MyclientcodegenGenerator.kt +++ b/samples/meta-codegen-kotlin/lib/src/main/kotlin/com/my/company/codegen/MyclientcodegenGenerator.kt @@ -2,7 +2,7 @@ package com.my.company.codegen import org.openapitools.codegen.* -import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.*; import java.util.* import java.io.File @@ -37,11 +37,11 @@ open class MyclientcodegenGenerator() : DefaultCodegen(), CodegenConfig { * Provides an opportunity to inspect and modify operation data before the code is generated. */ @Suppress("UNCHECKED_CAST") - override fun postProcessOperationsWithModels(objs: Map, allModels: List?): Map { + override fun postProcessOperationsWithModels(objs: OperationsMap, allModels: List?): OperationsMap { val results = super.postProcessOperationsWithModels(objs, allModels) - val ops = results["operations"] as Map - val opList = ops["operation"] as ArrayList + val ops = results.getOperations() + val opList = ops.getOperation() // iterate over the operation and perhaps modify something for (co: CodegenOperation in opList) { diff --git a/samples/meta-codegen/lib/src/main/java/com/my/company/codegen/MyclientcodegenGenerator.java b/samples/meta-codegen/lib/src/main/java/com/my/company/codegen/MyclientcodegenGenerator.java index 4921a12ce3a..379443c0dfc 100644 --- a/samples/meta-codegen/lib/src/main/java/com/my/company/codegen/MyclientcodegenGenerator.java +++ b/samples/meta-codegen/lib/src/main/java/com/my/company/codegen/MyclientcodegenGenerator.java @@ -1,7 +1,7 @@ package com.my.company.codegen; import org.openapitools.codegen.*; -import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.*; import io.swagger.models.properties.*; import java.util.*; @@ -36,18 +36,17 @@ public class MyclientcodegenGenerator extends DefaultCodegen implements CodegenC /** * Provides an opportunity to inspect and modify operation data before the code is generated. */ - @SuppressWarnings("unchecked") @Override - public Map postProcessOperationsWithModels(Map objs, List allModels) { + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { // to try debugging your code generator: // set a break point on the next line. // then debug the JUnit test called LaunchGeneratorInDebugger - Map results = super.postProcessOperationsWithModels(objs, allModels); + OperationsMap results = super.postProcessOperationsWithModels(objs, allModels); - Map ops = (Map)results.get("operations"); - ArrayList opList = (ArrayList)ops.get("operation"); + OperationMap ops = results.getOperations(); + List opList = ops.getOperation(); // iterate over the operation and perhaps modify something for(CodegenOperation co : opList){ @@ -196,4 +195,4 @@ public class MyclientcodegenGenerator extends DefaultCodegen implements CodegenC //TODO: check that this logic is safe to escape quotation mark to avoid code injection return input.replace("\"", "\\\""); } -} \ No newline at end of file +}