From e73096d764831b82ebc51a9d1c68db8853baef08 Mon Sep 17 00:00:00 2001 From: Mattias-Sehlstedt <60173714+Mattias-Sehlstedt@users.noreply.github.com> Date: Tue, 4 Aug 2026 17:34:13 +0200 Subject: [PATCH] refactor: add utility methods for allOf, oneOf and anyOf CodegenModel checks --- .../codegen/languages/AbstractGoCodegen.java | 6 ++- .../languages/AbstractPythonCodegen.java | 19 +++---- .../AbstractPythonPydanticV1Codegen.java | 19 +++---- .../languages/AbstractRustCodegen.java | 4 +- .../languages/CSharpClientCodegen.java | 6 ++- .../languages/CSharpReducedClientCodegen.java | 6 ++- .../codegen/languages/GoClientCodegen.java | 6 ++- .../codegen/languages/JavaClientCodegen.java | 6 ++- .../languages/KotlinServerCodegen.java | 8 +-- .../codegen/languages/OCamlClientCodegen.java | 6 ++- .../PlantumlDocumentationCodegen.java | 5 +- .../languages/PowerShellClientCodegen.java | 11 +++-- .../languages/ProtobufSchemaCodegen.java | 7 +-- .../languages/PythonClientCodegen.java | 6 ++- .../codegen/utils/ModelUtils.java | 49 ++++++++++++++++++- 15 files changed, 116 insertions(+), 48 deletions(-) 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 0fc2795f30da..19f34eaf9786 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 @@ -32,6 +32,8 @@ import java.util.regex.Matcher; import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; @@ -866,13 +868,13 @@ public ModelsMap postProcessModels(ModelsMap objs) { } // if oneOf contains "null" type - if (model.oneOf != null && !model.oneOf.isEmpty() && model.oneOf.contains("nil")) { + if (hasOneOf(model) && model.oneOf.contains("nil")) { model.isNullable = true; model.oneOf.remove("nil"); } // if anyOf contains "null" type - if (model.anyOf != null && !model.anyOf.isEmpty() && model.anyOf.contains("nil")) { + if (hasAnyOf(model) && model.anyOf.contains("nil")) { model.isNullable = true; model.anyOf.remove("nil"); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java index d4aa4df83120..b02f4f141ce8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java @@ -46,6 +46,7 @@ import static org.openapitools.codegen.CodegenConstants.*; import static org.openapitools.codegen.utils.EnumUtils.getEnumVars; +import static org.openapitools.codegen.utils.ModelUtils.*; import static org.openapitools.codegen.utils.StringUtils.*; @@ -1059,7 +1060,7 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { } List codegenProperties = null; - if (!model.oneOf.isEmpty()) { // oneOfValidationError + if (hasOneOf(model)) { codegenProperties = model.getComposedSchemas().getOneOf(); moduleImports.add("typing", "Any"); moduleImports.add("typing", "List"); @@ -1067,7 +1068,7 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { moduleImports.add(PYDANTIC, "StrictStr"); moduleImports.add(PYDANTIC, "ValidationError"); moduleImports.add(PYDANTIC, "field_validator"); - } else if (!model.anyOf.isEmpty()) { // anyOF + } else if (hasAnyOf(model)) { codegenProperties = model.getComposedSchemas().getAnyOf(); moduleImports.add(PYDANTIC, "Field"); moduleImports.add(PYDANTIC, "StrictStr"); @@ -1083,7 +1084,7 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { } } - if (!model.allOf.isEmpty()) { // allOf + if (hasAllOf(model)) { for (CodegenProperty cp : model.allVars) { if (!cp.isPrimitiveType || cp.isModel) { if (cp.isArray || cp.isMap) { // if array or map @@ -1121,9 +1122,9 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { cp.vendorExtensions.put(X_PY_TYPING, typing); // setup x-py-name for each oneOf/anyOf schema - if (!model.oneOf.isEmpty()) { // oneOf + if (hasOneOf(model)) { cp.vendorExtensions.put(X_PY_NAME, String.format(Locale.ROOT, "oneof_schema_%d_validator", property_count++)); - } else if (!model.anyOf.isEmpty()) { // anyOf + } else if (hasAnyOf(model)) { cp.vendorExtensions.put(X_PY_NAME, String.format(Locale.ROOT, "anyof_schema_%d_validator", property_count++)); } } @@ -1301,9 +1302,9 @@ void createImportMapOfSet(String modelName, Map codegenMod } List codegenProperties = null; - if (cm.oneOf != null && !cm.oneOf.isEmpty()) { // oneOf + if (hasOneOf(cm)) { codegenProperties = cm.getComposedSchemas().getOneOf(); - } else if (cm.anyOf != null && !cm.anyOf.isEmpty()) { // anyOF + } else if (hasAnyOf(cm)) { codegenProperties = cm.getComposedSchemas().getAnyOf(); } else { // typical model codegenProperties = cm.vars; @@ -1352,9 +1353,9 @@ public void updateImportsFromCodegenModel(String modelName, CodegenModel cm, Set } List codegenProperties = null; - if (cm.oneOf != null && !cm.oneOf.isEmpty()) { // oneOfValidationError + if (hasOneOf(cm)) { codegenProperties = cm.getComposedSchemas().getOneOf(); - } else if (cm.anyOf != null && !cm.anyOf.isEmpty()) { // anyOF + } else if (hasAnyOf(cm)) { codegenProperties = cm.getComposedSchemas().getAnyOf(); } else { // typical model codegenProperties = cm.vars; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java index 9541b8751fdf..f69f811a1b1a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java @@ -42,6 +42,7 @@ import java.util.stream.Collectors; import static org.openapitools.codegen.CodegenConstants.*; +import static org.openapitools.codegen.utils.ModelUtils.*; import static org.openapitools.codegen.utils.StringUtils.*; public abstract class AbstractPythonPydanticV1Codegen extends DefaultCodegen implements CodegenConfig { @@ -850,7 +851,7 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { } List codegenProperties = null; - if (!model.oneOf.isEmpty()) { // oneOfValidationError + if (hasOneOf(model)) { codegenProperties = model.getComposedSchemas().getOneOf(); typingImports.add("Any"); typingImports.add("List"); @@ -858,7 +859,7 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { pydanticImports.add("StrictStr"); pydanticImports.add("ValidationError"); pydanticImports.add("validator"); - } else if (!model.anyOf.isEmpty()) { // anyOF + } else if (hasAnyOf(model)) { codegenProperties = model.getComposedSchemas().getAnyOf(); pydanticImports.add("Field"); pydanticImports.add("StrictStr"); @@ -873,7 +874,7 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { } } - if (!model.allOf.isEmpty()) { // allOf + if (hasAllOf(model)) { for (CodegenProperty cp : model.allVars) { if (!cp.isPrimitiveType || cp.isModel) { if (cp.isArray || cp.isMap) { // if array or map @@ -961,9 +962,9 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { cp.vendorExtensions.put(X_PY_TYPING, typing + " = " + fieldCustomization); // setup x-py-name for each oneOf/anyOf schema - if (!model.oneOf.isEmpty()) { // oneOf + if (hasOneOf(model)) { cp.vendorExtensions.put(X_PY_NAME, String.format(Locale.ROOT, "oneof_schema_%d_validator", property_count++)); - } else if (!model.anyOf.isEmpty()) { // anyOf + } else if (hasAnyOf(model)) { cp.vendorExtensions.put(X_PY_NAME, String.format(Locale.ROOT, "anyof_schema_%d_validator", property_count++)); } } @@ -1663,9 +1664,9 @@ void createImportMapOfSet(String modelName, Map codegenMod } List codegenProperties = null; - if (cm.oneOf != null && !cm.oneOf.isEmpty()) { // oneOf + if (hasOneOf(cm)) { codegenProperties = cm.getComposedSchemas().getOneOf(); - } else if (cm.anyOf != null && !cm.anyOf.isEmpty()) { // anyOF + } else if (hasAnyOf(cm)) { codegenProperties = cm.getComposedSchemas().getAnyOf(); } else { // typical model codegenProperties = cm.vars; @@ -1714,9 +1715,9 @@ public void updateImportsFromCodegenModel(String modelName, CodegenModel cm, Set } List codegenProperties = null; - if (cm.oneOf != null && !cm.oneOf.isEmpty()) { // oneOfValidationError + if (hasOneOf(cm)) { codegenProperties = cm.getComposedSchemas().getOneOf(); - } else if (cm.anyOf != null && !cm.anyOf.isEmpty()) { // anyOF + } else if (hasAnyOf(cm)) { codegenProperties = cm.getComposedSchemas().getAnyOf(); } else { // typical model codegenProperties = cm.vars; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java index 362c35e388f2..1698503abe89 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java @@ -15,6 +15,8 @@ import java.util.*; import java.util.function.Function; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; import static org.openapitools.codegen.utils.StringUtils.*; public abstract class AbstractRustCodegen extends DefaultCodegen implements CodegenConfig { @@ -292,7 +294,7 @@ public CodegenModel fromModel(String name, Schema model) { } else { mdl.arrayModelType = toModelName(mdl.arrayModelType); } - } else if ((!mdl.anyOf.isEmpty()) || (!mdl.oneOf.isEmpty())) { + } else if ((hasAnyOf(mdl)) || (hasOneOf(mdl))) { mdl.dataType = getSchemaType(model); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java index f5edd0d03b26..f926fea2550a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java @@ -41,6 +41,8 @@ import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.openapitools.codegen.CodegenConstants.X_CSHARP_VALUE_TYPE; import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; @@ -1688,12 +1690,12 @@ public ModelsMap postProcessModels(ModelsMap objs) { for (ModelMap mo : objs.getModels()) { CodegenModel cm = mo.getModel(); - if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.remove("Null")) { + if (hasOneOf(cm) && cm.oneOf.remove("Null")) { // if oneOf contains "null" type cm.isNullable = true; } - if (cm.anyOf != null && !cm.anyOf.isEmpty() && cm.anyOf.remove("Null")) { + if (hasAnyOf(cm) && cm.anyOf.remove("Null")) { // if anyOf contains "null" type cm.isNullable = true; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java index dcc7c6411e67..47e92317d464 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java @@ -39,6 +39,8 @@ import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.openapitools.codegen.CodegenConstants.X_CSHARP_VALUE_TYPE; import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; @@ -1081,13 +1083,13 @@ public ModelsMap postProcessModels(ModelsMap objs) { for (ModelMap mo : objs.getModels()) { CodegenModel cm = mo.getModel(); - if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.contains("ModelNull")) { + if (hasOneOf(cm) && cm.oneOf.contains("ModelNull")) { // if oneOf contains "null" type cm.isNullable = true; cm.oneOf.remove("ModelNull"); } - if (cm.anyOf != null && !cm.anyOf.isEmpty() && cm.anyOf.contains("ModelNull")) { + if (hasAnyOf(cm) && cm.anyOf.contains("ModelNull")) { // if anyOf contains "null" type cm.isNullable = true; cm.anyOf.remove("ModelNull"); 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 a5d8b4eae847..72232b875d8f 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 @@ -44,6 +44,8 @@ import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; import static org.openapitools.codegen.utils.EnumUtils.getEnumValues; import static org.openapitools.codegen.utils.EnumUtils.getEnumVars; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; import static org.openapitools.codegen.utils.StringUtils.camelize; /** @@ -543,7 +545,7 @@ public ModelsMap postProcessModels(ModelsMap objs) { boolean addedFmtImport = false; // oneOf - if (model.oneOf != null && !model.oneOf.isEmpty()) { + if (hasOneOf(model)) { imports.add(createMapping("import", "fmt")); addedFmtImport = true; @@ -554,7 +556,7 @@ public ModelsMap postProcessModels(ModelsMap objs) { } // anyOf - if (model.anyOf != null && !model.anyOf.isEmpty()) { + if (hasAnyOf(model)) { imports.add(createMapping("import", "fmt")); addedFmtImport = true; } 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 59c5be2a1842..35ffe6710be7 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 @@ -50,6 +50,8 @@ import static java.util.Collections.sort; import static org.openapitools.codegen.CodegenConstants.*; import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; import static org.openapitools.codegen.utils.StringUtils.camelize; /** @@ -1269,13 +1271,13 @@ public ModelsMap postProcessModels(ModelsMap objs) { cm.getVendorExtensions().putIfAbsent(X_IMPLEMENTS, new ArrayList()); if (isLibrary(JERSEY2) || isLibrary(JERSEY3) || isLibrary(NATIVE) || isLibrary(OKHTTP_GSON)) { - if (cm.oneOf != null && !cm.oneOf.isEmpty() && cm.oneOf.contains("ModelNull")) { + if (hasOneOf(cm) && cm.oneOf.contains("ModelNull")) { // if oneOf contains "null" type cm.isNullable = true; cm.oneOf.remove("ModelNull"); } - if (cm.anyOf != null && !cm.anyOf.isEmpty() && cm.anyOf.contains("ModelNull")) { + if (hasAnyOf(cm) && cm.anyOf.contains("ModelNull")) { // if anyOf contains "null" type cm.isNullable = true; cm.anyOf.remove("ModelNull"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java index a0ef5c457a2e..d721c1b677cc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java @@ -58,6 +58,8 @@ import static org.openapitools.codegen.languages.KotlinServerCodegen.Constants.USE_TAGS; import static org.openapitools.codegen.utils.EnumUtils.getEnumValues; import static org.openapitools.codegen.utils.EnumUtils.hasEnumValues; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; /** *

Mustache templates are located in @@ -522,8 +524,7 @@ public Map postProcessAllModels(Map objs) // For allOf pattern: if parent has properties, mark child's inherited properties // Skip this for oneOf/anyOf patterns where parent properties are merged from children boolean parentIsOneOfOrAnyOf = parentModel != null - && ((parentModel.oneOf != null && !parentModel.oneOf.isEmpty()) - || (parentModel.anyOf != null && !parentModel.anyOf.isEmpty())); + && (hasOneOf(parentModel) || (hasAnyOf(parentModel))); if (parentModel != null && parentModel.getHasVars() && !parentIsOneOfOrAnyOf) { Set parentPropNames = new HashSet<>(); @@ -572,8 +573,7 @@ public Map postProcessAllModels(Map objs) CodegenModel owner = allModelsMap.get(ownerName); if (owner != null && owner.getDiscriminator() != null) { String discriminatorPropBaseName = owner.getDiscriminator().getPropertyBaseName(); - boolean isOneOfOrAnyOfPattern = (owner.oneOf != null && !owner.oneOf.isEmpty()) - || (owner.anyOf != null && !owner.anyOf.isEmpty()); + boolean isOneOfOrAnyOfPattern = hasOneOf(owner) || hasAnyOf(owner); // hasParentProperties controls whether the sealed class has properties in its constructor // This should be false for oneOf/anyOf patterns (parent is a type union, no direct properties) 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 bb0c8f1b7756..a6500d64398a 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 @@ -43,6 +43,8 @@ import static org.apache.commons.lang3.StringUtils.capitalize; import static org.openapitools.codegen.CodegenConstants.ENUM_NAME; import static org.openapitools.codegen.CodegenConstants.ENUM_VALUES; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; import static org.openapitools.codegen.utils.StringUtils.escape; import static org.openapitools.codegen.utils.StringUtils.underscore; @@ -221,11 +223,11 @@ public Map postProcessAllModels(Map supero enrichPropertiesWithEnumDefaultValues(cm.getParentVars()); } - if (!cm.oneOf.isEmpty()) { + if (hasOneOf(cm)) { // Add a boolean if it is a `oneOf`, because Mustache does not let us check if a list is non-empty cm.getVendorExtensions().put("x-ocaml-isOneOf", true); } - if (!cm.anyOf.isEmpty()) { + if (hasAnyOf(cm)) { // Add a boolean if it is a `anyOf`, because Mustache does not let us check if a list is non-empty cm.getVendorExtensions().put("x-ocaml-isAnyOf", true); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java index 74e22d295f87..4b0c94618a8b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java @@ -20,6 +20,7 @@ import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,6 +28,8 @@ import java.util.*; import java.util.stream.Collectors; +import static org.openapitools.codegen.utils.ModelUtils.hasAllOf; + /** *

Mustache templates are located in {@code src/main/resources/plantuml/}. */ @@ -79,7 +82,7 @@ public Map postProcessSupportingFileData(Map obj .collect(Collectors.toList()); List subtypeCodegenModelList = codegenModelList.stream() - .filter(codegenModel -> !codegenModel.allOf.isEmpty()) + .filter(ModelUtils::hasAllOf) .collect(Collectors.toList()); 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 7d06b6bf155e..54dcc31db675 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 @@ -38,8 +38,9 @@ import java.util.*; import static java.util.UUID.randomUUID; -import static org.openapitools.codegen.CodegenConstants.ENUM_VALUES; import static org.openapitools.codegen.utils.EnumUtils.getEnumValues; +import static org.openapitools.codegen.utils.ModelUtils.hasAnyOf; +import static org.openapitools.codegen.utils.ModelUtils.hasOneOf; import static org.openapitools.codegen.utils.StringUtils.camelize; /** @@ -1060,11 +1061,11 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List objs, Map postProcessAllModels(Map objs) for (ModelsMap modelsMap : objs.values()) { for (ModelMap modelMap : modelsMap.getModels()) { CodegenModel model = modelMap.getModel(); - if (model == null || !model.oneOf.isEmpty() || !model.anyOf.isEmpty()) { + if (model == null || hasOneOf(model) || hasAnyOf(model)) { continue; } List generatedProperties = generatedProperties(model); @@ -993,7 +995,7 @@ public void postProcessParameter(CodegenParameter parameter) { @Override public void postProcessModelProperty(CodegenModel model, CodegenProperty property) { super.postProcessModelProperty(model, property); - if (!model.oneOf.isEmpty() || !model.anyOf.isEmpty()) { + if (hasOneOf(model) || hasAnyOf(model)) { return; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index 5135dbad91cc..17ce0a391b46 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -2344,6 +2344,21 @@ public static boolean hasAllOf(Schema schema) { return false; } + /** + * Returns true if the model contains allOf and may or may not have + * properties/oneOf/anyOf defined. + * + * @param model the model + * @return true if allOf is not empty + */ + public static boolean hasAllOf(CodegenModel model) { + if (model != null && model.allOf != null && !model.allOf.isEmpty()) { + return true; + } + + return false; + } + /** * Returns true if the schema contains allOf and properties, * and no oneOf/anyOf defined. @@ -2383,7 +2398,7 @@ public static boolean isOneOf(Schema schema) { * properties/allOf/anyOf defined. * * @param schema the schema - * @return true if allOf is not empty + * @return true if oneOf is not empty */ public static boolean hasOneOf(Schema schema) { if (schema != null && schema.getOneOf() != null && !schema.getOneOf().isEmpty()) { @@ -2393,6 +2408,21 @@ public static boolean hasOneOf(Schema schema) { return false; } + /** + * Returns true if the model contains oneOf and may or may not have + * properties/allOf/anyOf defined. + * + * @param model the model + * @return true if oneOf is not empty + */ + public static boolean hasOneOf(CodegenModel model) { + if (model != null && model.oneOf != null && !model.oneOf.isEmpty()) { + return true; + } + + return false; + } + /** * Returns true if the schema contains anyOf but * no properties/allOf/anyOf defined. @@ -2429,6 +2459,21 @@ public static boolean hasAnyOf(Schema schema) { return false; } + /** + * Returns true if the model contains anyOf and may or may not have + * properties/allOf/oneOf defined. + * + * @param model the model + * @return true if anyOf is not empty + */ + public static boolean hasAnyOf(CodegenModel model) { + if (model != null && model.anyOf != null && !model.anyOf.isEmpty()) { + return true; + } + + return false; + } + /** * Returns true if the schema contains a $ref * @@ -2617,7 +2662,7 @@ public static boolean isNullTypeSchema(OpenAPI openAPI, Schema schema) { schema = ModelUtils.getReferencedSchema(openAPI, schema); // allOf/anyOf/oneOf - if (ModelUtils.hasAllOf(schema) || ModelUtils.hasOneOf(schema) || ModelUtils.hasAnyOf(schema)) { + if (hasAllOf(schema) || hasOneOf(schema) || hasAnyOf(schema)) { return false; }