From 3f65d6c3502d66fa0b0204c9f72f1f543e76c1bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Tue, 21 Aug 2018 12:26:54 +0200 Subject: [PATCH] [all] Support for Free-Form Objects (#849) Consider "additionalProperties: true" Fixes #796 --- .../openapitools/codegen/DefaultCodegen.java | 13 +++---- .../codegen/InlineModelResolver.java | 6 +-- .../codegen/examples/ExampleGenerator.java | 4 +- .../codegen/languages/AbstractAdaCodegen.java | 2 +- .../languages/AbstractApexCodegen.java | 14 +++---- .../languages/AbstractCSharpCodegen.java | 2 +- .../languages/AbstractEiffelCodegen.java | 4 +- .../codegen/languages/AbstractGoCodegen.java | 2 +- .../languages/AbstractJavaCodegen.java | 6 +-- .../languages/AbstractKotlinCodegen.java | 2 +- .../codegen/languages/AbstractPhpCodegen.java | 2 +- .../languages/AbstractRubyCodegen.java | 2 +- .../languages/AbstractScalaCodegen.java | 6 +-- .../AbstractTypeScriptClientCodegen.java | 4 +- .../languages/AndroidClientCodegen.java | 2 +- .../codegen/languages/ApexClientCodegen.java | 2 +- .../codegen/languages/BashClientCodegen.java | 2 +- .../languages/ConfluenceWikiCodegen.java | 2 +- .../languages/CppPistacheServerCodegen.java | 4 +- .../languages/CppQt5ClientCodegen.java | 4 +- .../CppQt5QHttpEngineServerCodegen.java | 4 +- .../languages/CppRestSdkClientCodegen.java | 4 +- .../languages/CppRestbedServerCodegen.java | 4 +- .../codegen/languages/DartClientCodegen.java | 2 +- .../languages/ElixirClientCodegen.java | 2 +- .../codegen/languages/ElmClientCodegen.java | 2 +- .../codegen/languages/FinchServerCodegen.java | 2 +- .../languages/HaskellHttpClientCodegen.java | 4 +- .../languages/HaskellServantCodegen.java | 4 +- .../languages/JMeterClientCodegen.java | 2 +- .../languages/JavascriptClientCodegen.java | 6 +-- ...JavascriptClosureAngularClientCodegen.java | 2 +- .../JavascriptFlowtypedClientCodegen.java | 4 +- .../codegen/languages/LuaClientCodegen.java | 2 +- .../codegen/languages/ObjcClientCodegen.java | 2 +- .../codegen/languages/PerlClientCodegen.java | 2 +- .../languages/PhpSilexServerCodegen.java | 2 +- .../languages/PhpSymfonyServerCodegen.java | 2 +- .../languages/PowerShellClientCodegen.java | 2 +- .../languages/PythonClientCodegen.java | 2 +- .../PythonFlaskConnexionServerCodegen.java | 2 +- .../codegen/languages/RClientCodegen.java | 2 +- .../codegen/languages/RustClientCodegen.java | 2 +- .../codegen/languages/RustServerCodegen.java | 4 +- .../languages/ScalaAkkaClientCodegen.java | 2 +- .../languages/ScalaGatlingCodegen.java | 2 +- .../languages/StaticHtml2Generator.java | 2 +- .../languages/StaticHtmlGenerator.java | 2 +- .../codegen/languages/Swift3Codegen.java | 6 +-- .../codegen/languages/Swift4Codegen.java | 6 +-- .../codegen/languages/SwiftClientCodegen.java | 4 +- .../TypeScriptAngularClientCodegen.java | 2 +- .../TypeScriptFetchClientCodegen.java | 4 +- .../TypeScriptInversifyClientCodegen.java | 3 +- .../TypeScriptJqueryClientCodegen.java | 2 +- .../codegen/utils/ModelUtils.java | 13 +++++++ .../codegen/java/JavaClientCodegenTest.java | 31 +++++++++++++++- .../src/test/resources/3_0/issue796.yaml | 37 +++++++++++++++++++ 58 files changed, 172 insertions(+), 95 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/issue796.yaml 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 8e1b5ea349b..00d4e463e1d 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 @@ -75,7 +75,6 @@ import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -import java.util.stream.Stream; public class DefaultCodegen implements CodegenConfig { private static final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class); @@ -1094,7 +1093,7 @@ public class DefaultCodegen implements CodegenConfig { */ public String toInstantiationType(Schema schema) { if (ModelUtils.isMapSchema(schema)) { - Schema additionalProperties = (Schema) schema.getAdditionalProperties(); + Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); String type = additionalProperties.getType(); if (null == type) { LOGGER.error("No Type defined for Additional Property " + additionalProperties + "\n" // @@ -1998,7 +1997,7 @@ public class DefaultCodegen implements CodegenConfig { property.maxItems = p.getMaxProperties(); // handle inner property - CodegenProperty cp = fromProperty("inner", (Schema) p.getAdditionalProperties()); + CodegenProperty cp = fromProperty("inner", ModelUtils.getAdditionalProperties(p)); updatePropertyForMap(property, cp); } else { // model // TODO revise the logic below @@ -2288,7 +2287,7 @@ public class DefaultCodegen implements CodegenConfig { CodegenProperty innerProperty = fromProperty("response", as.getItems()); op.returnBaseType = innerProperty.baseType; } else if (ModelUtils.isMapSchema(responseSchema)) { - CodegenProperty innerProperty = fromProperty("response", (Schema) responseSchema.getAdditionalProperties()); + CodegenProperty innerProperty = fromProperty("response", ModelUtils.getAdditionalProperties(responseSchema)); op.returnBaseType = innerProperty.baseType; } else { if (cm.complexType != null) { @@ -2674,7 +2673,7 @@ public class DefaultCodegen implements CodegenConfig { } } else if (ModelUtils.isMapSchema(parameterSchema)) { // for map parameter - CodegenProperty codegenProperty = fromProperty("inner", (Schema) parameterSchema.getAdditionalProperties()); + CodegenProperty codegenProperty = fromProperty("inner", ModelUtils.getAdditionalProperties(parameterSchema)); codegenParameter.items = codegenProperty; codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; codegenParameter.baseType = codegenProperty.dataType; @@ -4381,7 +4380,7 @@ public class DefaultCodegen implements CodegenConfig { } if (ModelUtils.isMapSchema(schema)) { - Schema inner = (Schema) schema.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(schema); if (inner == null) { inner = new StringSchema().description("//TODO automatically added by openapi-generator"); schema.setAdditionalProperties(inner); @@ -4469,7 +4468,7 @@ public class DefaultCodegen implements CodegenConfig { imports.add(codegenParameter.baseType); } else { CodegenProperty codegenProperty = fromProperty("property", schema); - if (schema.getAdditionalProperties() != null) {// http body is map + if (ModelUtils.getAdditionalProperties(schema) != null) {// http body is map LOGGER.error("Map should be supported. Please report to openapi-generator github repo about the issue."); } else if (codegenProperty != null) { String codegenModelName, codegenModelDescription; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index 742942e4967..a17b13c15a6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -238,7 +238,7 @@ public class InlineModelResolver { } } else if (property instanceof MapSchema) { MapSchema mp = (MapSchema) property; - Schema innerProperty = (Schema) mp.getAdditionalProperties(); + Schema innerProperty = ModelUtils.getAdditionalProperties(mp); if (innerProperty instanceof ObjectSchema) { ObjectSchema op = (ObjectSchema) innerProperty; if (op.getProperties() != null && op.getProperties().size() > 0) { @@ -431,7 +431,7 @@ public class InlineModelResolver { } } if (ModelUtils.isMapSchema(property)) { - Schema inner = (Schema) property.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(property); if (inner instanceof ObjectSchema) { ObjectSchema op = (ObjectSchema) inner; if (op.getProperties() != null && op.getProperties().size() > 0) { @@ -519,7 +519,7 @@ public class InlineModelResolver { model.setDescription(description); model.setName(object.getName()); model.setExample(example); - model.setItems((Schema) object.getAdditionalProperties()); + model.setItems(ModelUtils.getAdditionalProperties(object)); return model; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java index 8bce5a3cd1e..47552634f4f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java @@ -236,10 +236,10 @@ public class ExampleGenerator { Map mp = new HashMap(); if (property.getName() != null) { mp.put(property.getName(), - resolvePropertyToExample(propertyName, mediaType, (Schema) property.getAdditionalProperties(), processedModels)); + resolvePropertyToExample(propertyName, mediaType, ModelUtils.getAdditionalProperties(property), processedModels)); } else { mp.put("key", - resolvePropertyToExample(propertyName, mediaType, (Schema) property.getAdditionalProperties(), processedModels)); + resolvePropertyToExample(propertyName, mediaType, ModelUtils.getAdditionalProperties(property), processedModels)); } return mp; } else if (ModelUtils.isUUIDSchema(property)) { 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 af2ef2c1d1b..17590e57b43 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 @@ -329,7 +329,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg return getTypeDeclaration(inner) + "_Vectors.Vector"; } if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); String name = getTypeDeclaration(inner) + "_Map"; if (name.startsWith("Swagger.")) { return name; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java index cfae5b1a588..f784110c357 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java @@ -18,12 +18,12 @@ package org.openapitools.codegen.languages; import java.util.*; -import org.apache.commons.lang3.StringUtils; import com.google.common.base.Strings; +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenParameter; -import org.openapitools.codegen.CodegenModel; -import org.openapitools.codegen.CodegenConfig; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.DefaultCodegen; @@ -196,7 +196,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code } return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); if (inner == null) { LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined"); @@ -229,11 +229,11 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code } else if (ModelUtils.isMapSchema(p)) { final MapSchema ap = (MapSchema) p; final String pattern = "new HashMap<%s>()"; - if (ap.getAdditionalProperties() == null) { + if (ModelUtils.getAdditionalProperties(ap) == null) { return null; } - return String.format(pattern, String.format("String, %s", getTypeDeclaration((Schema) ap.getAdditionalProperties()))); + return String.format(pattern, String.format("String, %s", getTypeDeclaration(ModelUtils.getAdditionalProperties(ap)))); } else if (ModelUtils.isLongSchema(p)) { if (p.getDefault() != null) { return p.getDefault().toString() + "l"; @@ -366,7 +366,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code } else if (ModelUtils.isLongSchema(p)) { example = example.isEmpty() ? "123456789L" : example + "L"; } else if (ModelUtils.isMapSchema(p)) { - example = "new " + getTypeDeclaration(p) + "{'key'=>" + toExampleValue((Schema) p.getAdditionalProperties()) + "}"; + example = "new " + getTypeDeclaration(p) + "{'key'=>" + toExampleValue(ModelUtils.getAdditionalProperties(p)) + "}"; } else if (ModelUtils.isPasswordSchema(p)) { example = example.isEmpty() ? "password123" : escapeText(example); 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 023f6f51e12..844efb2d9e8 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 @@ -811,7 +811,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co return getArrayTypeDeclaration((ArraySchema) p); } else if (ModelUtils.isMapSchema(p)) { // Should we also support maps of maps? - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + ""; } return super.getTypeDeclaration(p); 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 55341daf942..15c3981ecd1 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 @@ -290,7 +290,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co Schema inner = ap.getItems(); return "LIST [" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } @@ -557,7 +557,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co @Override public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { - Schema additionalProperties2 = (Schema) p.getAdditionalProperties(); + Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p); String type = additionalProperties2.getType(); if (null == type) { LOGGER.error("No Type defined for Additional Schema " + additionalProperties2 + "\n" // 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 2db13c3af69..9608b46ad68 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 @@ -258,7 +258,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege Schema inner = ap.getItems(); return "[]" + getTypeDeclaration(inner); } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[string]" + getTypeDeclaration(inner); } //return super.getTypeDeclaration(p); 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 ea1b16fbfbe..3a10522c769 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 @@ -679,7 +679,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); if (inner == null) { LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined. Default to string"); inner = new StringSchema().description("TODO default missing array inner type to string"); @@ -728,11 +728,11 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } else { pattern = "new HashMap<%s>()"; } - if (p.getAdditionalProperties() == null) { + if (ModelUtils.getAdditionalProperties(p) == null) { return null; } - String typeDeclaration = String.format("String, %s", getTypeDeclaration((Schema) p.getAdditionalProperties())); + String typeDeclaration = String.format("String, %s", getTypeDeclaration(ModelUtils.getAdditionalProperties(p))); Object java8obj = additionalProperties.get("java8"); if (java8obj != null) { Boolean java8 = Boolean.valueOf(java8obj.toString()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index 726b69f73b3..de7ef787535 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -282,7 +282,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co if (ModelUtils.isArraySchema(p)) { return getArrayTypeDeclaration((ArraySchema) p); } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); // Maps will be keyed only by primitive Kotlin string return getSchemaType(p) + ""; 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 4144899b0f0..d03951e5933 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 @@ -332,7 +332,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg Schema inner = ap.getItems(); return getTypeDeclaration(inner) + "[]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]"; } else if (StringUtils.isNotBlank(p.get$ref())) { // model String type = super.getTypeDeclaration(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java index 5848febe0b2..fee44c74105 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java @@ -88,7 +88,7 @@ abstract class AbstractRubyCodegen extends DefaultCodegen implements CodegenConf Schema inner = ((ArraySchema) schema).getItems(); return getSchemaType(schema) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(schema)) { - Schema inner = (Schema) schema.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(schema); return getSchemaType(schema) + ""; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java index 4993950e862..05b9f4dea4e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java @@ -181,7 +181,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]"; } @@ -206,7 +206,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { @Override public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { - String inner = getSchemaType((Schema) p.getAdditionalProperties()); + String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return instantiationTypes.get("map") + "[String, " + inner + "]"; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; @@ -235,7 +235,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { } else if (ModelUtils.isIntegerSchema(p)) { return null; } else if (ModelUtils.isMapSchema(p)) { - String inner = getSchemaType((Schema) p.getAdditionalProperties()); + String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "new HashMap[String, " + inner + "]() "; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index 5a02de72028..491fdf0b03e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -227,7 +227,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp Schema inner = ap.getItems(); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "{ [key: string]: " + getTypeDeclaration(inner) + "; }"; } else if (ModelUtils.isFileSchema(p)) { return "any"; @@ -246,7 +246,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp inner = mp1.getItems(); return this.getSchemaType(p) + "<" + this.getParameterDataType(parameter, inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - inner = (Schema) p.getAdditionalProperties(); + inner = ModelUtils.getAdditionalProperties(p); return "{ [key: string]: " + this.getParameterDataType(parameter, inner) + "; }"; } else if (ModelUtils.isStringSchema(p)) { // Handle string enums diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java index 65674eaf39c..ea267ac8cb8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java @@ -189,7 +189,7 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi Schema inner = ap.getItems(); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + ""; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java index 8af857cc287..105245101fc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java @@ -227,7 +227,7 @@ public class ApexClientCodegen extends AbstractApexCodegen { Long def = (Long) p.getDefault(); out = def == null ? out : def.toString() + "L"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); String s = inner == null ? "Object" : getTypeDeclaration(inner); out = String.format("new Map()", s); } else if (ModelUtils.isStringSchema(p)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java index 2dd33784fe3..3c8b4c1b69b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java @@ -388,7 +388,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); 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 b9243aaa260..02fa7d65680 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 @@ -99,7 +99,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); 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 322509976b4..7e4f698d820 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 @@ -305,7 +305,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + ""; } else if (ModelUtils.isByteArraySchema(p)) { @@ -343,7 +343,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { else if (ModelUtils.isByteArraySchema(p)) { return "\"\""; } else if (ModelUtils.isMapSchema(p)) { - String inner = getSchemaType((Schema) p.getAdditionalProperties()); + String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "std::map()"; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java index bb06b36b1af..eef0e00f612 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java @@ -294,7 +294,7 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo Schema inner = ap.getItems(); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">*"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "*"; } if (foundationClasses.contains(openAPIType)) { @@ -325,7 +325,7 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo } return "0"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "new QMap()"; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java index 9ca30263bf9..8f3ca235b2a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java @@ -323,7 +323,7 @@ public class CppQt5QHttpEngineServerCodegen extends AbstractCppCodegen implement Schema inner = ap.getItems(); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + ""; } else if (ModelUtils.isBinarySchema(p)) { return getSchemaType(p) + "*"; @@ -359,7 +359,7 @@ public class CppQt5QHttpEngineServerCodegen extends AbstractCppCodegen implement } return "0"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "QMap()"; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; 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 df0e6722863..ee740d9a0f4 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 @@ -308,7 +308,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { Schema inner = ap.getItems(); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + ""; } else if (ModelUtils.isStringSchema(p) || ModelUtils.isDateSchema(p) || ModelUtils.isDateTimeSchema(p) @@ -339,7 +339,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { } return "0"; } else if (ModelUtils.isMapSchema(p)) { - String inner = getSchemaType((Schema) p.getAdditionalProperties()); + String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "std::map()"; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; 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 1dc73dca8b2..028eee1467f 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 @@ -270,7 +270,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { Schema inner = ap.getItems(); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + ""; } else if (ModelUtils.isByteArraySchema(p)) { return "std::string"; @@ -307,7 +307,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { } else if (ModelUtils.isByteArraySchema(p)) { return "\"\""; } else if (ModelUtils.isMapSchema(p)) { - String inner = getSchemaType((Schema) p.getAdditionalProperties()); + String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "std::map()"; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java index 6203fb04980..d2d83170d94 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java @@ -307,7 +307,7 @@ public class DartClientCodegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + ""; } 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 2ee741de696..48da0380353 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 @@ -447,7 +447,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig Schema inner = ap.getItems(); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "%{optional(String.t) => " + getTypeDeclaration(inner) + "}"; } else if (ModelUtils.isPasswordSchema(p)) { return "String.t"; 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 46f6e36edae..a7f9de7c2f3 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 @@ -486,7 +486,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return getTypeDeclaration(inner); } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getTypeDeclaration(inner); } return super.getTypeDeclaration(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FinchServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FinchServerCodegen.java index e4a849f1946..5519a128eb7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FinchServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FinchServerCodegen.java @@ -239,7 +239,7 @@ public class FinchServerCodegen extends DefaultCodegen implements CodegenConfig Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]"; } 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 a0bbfecc632..60d5177bda4 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 @@ -548,7 +548,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC Schema inner = ap.getItems(); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "(Map.Map String " + getTypeDeclaration(inner) + ")"; } return super.getTypeDeclaration(p); @@ -570,7 +570,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC @Override public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { - Schema additionalProperties2 = (Schema) p.getAdditionalProperties(); + Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p); String type = additionalProperties2.getType(); if (null == type) { LOGGER.error("No Type defined for Additional Schema " + additionalProperties2 + "\n" // diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java index 15dcf7c98b7..decc83e340f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java @@ -293,7 +293,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf Schema inner = ap.getItems(); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "Map.Map String " + getTypeDeclaration(inner); } return fixModelChars(super.getTypeDeclaration(p)); @@ -328,7 +328,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf @Override public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { - Schema additionalProperties2 = (Schema) p.getAdditionalProperties(); + Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p); String type = additionalProperties2.getType(); if (null == type) { LOGGER.error("No Type defined for Additional Property " + additionalProperties2 + "\n" // diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java index 830e5b06ade..912ad43a7e4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java @@ -174,7 +174,7 @@ public class JMeterClientCodegen extends DefaultCodegen implements CodegenConfig Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); 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 0bbefee3bed..77e804f1837 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 @@ -601,7 +601,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo Schema inner = ap.getItems(); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "{String: " + getTypeDeclaration(inner) + "}"; } return super.getTypeDeclaration(p); @@ -863,9 +863,9 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo codegenModel.getVendorExtensions().put("x-itemType", getSchemaType(am.getItems())); } } else if (ModelUtils.isMapSchema(model)) { - if (model.getAdditionalProperties() != null) { + if (ModelUtils.getAdditionalProperties(model) != null) { codegenModel.getVendorExtensions().put("x-isMap", true); - codegenModel.getVendorExtensions().put("x-itemType", getSchemaType((Schema) model.getAdditionalProperties())); + codegenModel.getVendorExtensions().put("x-itemType", getSchemaType(ModelUtils.getAdditionalProperties(model))); } else { String type = model.getType(); if (isPrimitiveType(type)){ 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 9fc66c4f053..c756bf8ac9b 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 @@ -236,7 +236,7 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem Schema inner = ap.getItems(); return getSchemaType(p) + ""; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "Object"; } else if (ModelUtils.isFileSchema(p)) { return "Object"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptFlowtypedClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptFlowtypedClientCodegen.java index bb415e2bc41..87782458229 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptFlowtypedClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptFlowtypedClientCodegen.java @@ -119,7 +119,7 @@ public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCo @Override protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { - codegenModel.additionalPropertiesType = getTypeDeclaration((Schema) schema.getAdditionalProperties()); + codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema)); addImport(codegenModel, codegenModel.additionalPropertiesType); } @@ -141,7 +141,7 @@ public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCo inner = ((ArraySchema) p).getItems(); return this.getSchemaType(p) + "<" + this.getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - inner = (Schema) p.getAdditionalProperties(); + inner = ModelUtils.getAdditionalProperties(p); return "{ [key: string]: " + this.getTypeDeclaration(inner) + "; }"; } else if (ModelUtils.isFileSchema(p)) { return "any"; 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 bd4bc1c5be0..b5125aab3b7 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 @@ -337,7 +337,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return getTypeDeclaration(inner); } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getTypeDeclaration(inner); } 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 11a7508dc63..8a46bc575ae 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 @@ -377,7 +377,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { return getSchemaType(p) + "<" + innerTypeDeclaration + ">*"; } } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); String innerTypeDeclaration = getTypeDeclaration(inner); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java index 08172a2cdce..21ccb6aad03 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java @@ -220,7 +220,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); 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 4c94c7a55f3..84cf10331cc 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 @@ -163,7 +163,7 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); 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 897ae1716c3..e045cefab3d 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 @@ -497,7 +497,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg } if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getTypeDeclaration(inner); } 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 789cc14c9c0..9536d72c9a9 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 @@ -383,7 +383,7 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo Schema inner = ap.getItems(); return getTypeDeclaration(inner) + "[]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); // TODO not sure if the following map/hash declaration is correct return "{String, " + getTypeDeclaration(inner) + "}"; } else if (!languageSpecificPrimitives.contains(getSchemaType(p))) { 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 eed683f061c..d3b5e9c7c4a 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 @@ -404,7 +404,7 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "(str, " + getTypeDeclaration(inner) + ")"; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFlaskConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFlaskConnexionServerCodegen.java index 974135c545a..b1a5c7cf486 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFlaskConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFlaskConnexionServerCodegen.java @@ -289,7 +289,7 @@ public class PythonFlaskConnexionServerCodegen extends DefaultCodegen implements Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[str, " + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); 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 dde0e9a2100..b3da6e6a82d 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 @@ -286,7 +286,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return getTypeDeclaration(inner); } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getTypeDeclaration(inner); } 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 76411f0406c..dd65ab3afc8 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 @@ -288,7 +288,7 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return "Vec<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "::std::collections::HashMap"; } 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 63fd9d8091c..70bfeb56edd 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 @@ -730,7 +730,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { typeDeclaration.append(innerType).append(">"); return typeDeclaration.toString(); } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); String innerType = getTypeDeclaration(inner); StringBuilder typeDeclaration = new StringBuilder(typeMapping.get("map")).append("<").append(typeMapping.get("string")).append(", "); typeDeclaration.append(innerType).append(">"); @@ -797,7 +797,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return instantiationTypes.get("array") + "<" + getSchemaType(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return instantiationTypes.get("map") + "<" + typeMapping.get("string") + ", " + getSchemaType(inner) + ">"; } else { return null; 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 2da46afb59f..d3a42542a8f 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 @@ -276,7 +276,7 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code } else if (ModelUtils.isIntegerSchema(p)) { return null; } else if (ModelUtils.isMapSchema(p)) { - String inner = getSchemaType((Schema) p.getAdditionalProperties()); + String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "Map[String, " + inner + "].empty "; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java index 178ed14cee2..11ae41342e8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java @@ -347,7 +347,7 @@ public class ScalaGatlingCodegen extends AbstractScalaCodegen implements Codegen Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); 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 32e198a1652..9aa8fdaa101 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 @@ -131,7 +131,7 @@ public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfi Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); 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 feaac9dbc5d..eced61c947e 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 @@ -118,7 +118,7 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig Schema inner = ap.getItems(); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift3Codegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift3Codegen.java index e248007a873..06c56bad2e7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift3Codegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift3Codegen.java @@ -230,7 +230,7 @@ public class Swift3Codegen extends DefaultCodegen implements CodegenConfig { @Override protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { - final Schema additionalProperties = (Schema) schema.getAdditionalProperties(); + final Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); if (additionalProperties != null) { codegenModel.additionalPropertiesType = getSchemaType(additionalProperties); @@ -333,7 +333,7 @@ public class Swift3Codegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "[String:" + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); @@ -422,7 +422,7 @@ public class Swift3Codegen extends DefaultCodegen implements CodegenConfig { @Override public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { - return getSchemaType((Schema) p.getAdditionalProperties()); + return getSchemaType(ModelUtils.getAdditionalProperties(p)); } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; String inner = getSchemaType(ap.getItems()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java index 70808f006c4..e920854bf6c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java @@ -284,7 +284,7 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { - final Schema additionalProperties = (Schema) schema.getAdditionalProperties(); + final Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); if (additionalProperties != null) { codegenModel.additionalPropertiesType = getSchemaType(additionalProperties); @@ -420,7 +420,7 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { Schema inner = ap.getItems(); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "[String:" + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); @@ -524,7 +524,7 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { @Override public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { - return getSchemaType((Schema) p.getAdditionalProperties()); + return getSchemaType(ModelUtils.getAdditionalProperties(p)); } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; String inner = getSchemaType(ap.getItems()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftClientCodegen.java index 1870dda5950..9cc19982eb6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftClientCodegen.java @@ -270,7 +270,7 @@ public class SwiftClientCodegen extends DefaultCodegen implements CodegenConfig Schema inner = ap.getItems(); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { - Schema inner = (Schema) p.getAdditionalProperties(); + Schema inner = ModelUtils.getAdditionalProperties(p); return "[String:" + getTypeDeclaration(inner) + "]"; } return super.getTypeDeclaration(p); @@ -359,7 +359,7 @@ public class SwiftClientCodegen extends DefaultCodegen implements CodegenConfig @Override public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { - String inner = getSchemaType((Schema) p.getAdditionalProperties()); + String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "[String:" + inner + "]"; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; 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 ecfd9b5b1ca..2b0f087a34f 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 @@ -98,7 +98,7 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode @Override protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { - codegenModel.additionalPropertiesType = getTypeDeclaration((Schema) schema.getAdditionalProperties()); + codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema)); addImport(codegenModel, codegenModel.additionalPropertiesType); } 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 bb1161d21e0..0cfe7934419 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 @@ -114,7 +114,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege inner = ((ArraySchema) p).getItems(); return this.getSchemaType(p) + "<" + this.getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { - inner = (Schema) p.getAdditionalProperties(); + inner = ModelUtils.getAdditionalProperties(p); return "{ [key: string]: " + this.getTypeDeclaration(inner) + "; }"; } else if (ModelUtils.isFileSchema(p)) { return "any"; @@ -127,7 +127,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege @Override protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { - codegenModel.additionalPropertiesType = getTypeDeclaration((Schema) schema.getAdditionalProperties()); + codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema)); addImport(codegenModel, codegenModel.additionalPropertiesType); } 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 82c9008891d..6d2e1c749f6 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 @@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.media.FileSchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; +import org.openapitools.codegen.utils.ModelUtils; import java.io.File; import java.text.SimpleDateFormat; @@ -77,7 +78,7 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo @Override protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { - codegenModel.additionalPropertiesType = getTypeDeclaration((Schema) schema.getAdditionalProperties()); + codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema)); addImport(codegenModel, codegenModel.additionalPropertiesType); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptJqueryClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptJqueryClientCodegen.java index 135663c2cf5..2dd61d362b3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptJqueryClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptJqueryClientCodegen.java @@ -136,7 +136,7 @@ public class TypeScriptJqueryClientCodegen extends AbstractTypeScriptClientCodeg @Override protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) { - codegenModel.additionalPropertiesType = getSchemaType((Schema) schema.getAdditionalProperties()); + codegenModel.additionalPropertiesType = getSchemaType(ModelUtils.getAdditionalProperties(schema)); addImport(codegenModel, codegenModel.additionalPropertiesType); } 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 c5afa2dd8b1..f87d2650984 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 @@ -307,6 +307,9 @@ public class ModelUtils { if (schema.getAdditionalProperties() instanceof Schema) { return true; } + if (schema.getAdditionalProperties() instanceof Boolean && (Boolean)schema.getAdditionalProperties()) { + return true; + } return false; } @@ -657,4 +660,14 @@ public class ModelUtils { return schema; } + public static Schema getAdditionalProperties(Schema schema) { + if(schema.getAdditionalProperties() instanceof Schema) { + return (Schema) schema.getAdditionalProperties(); + } + if(schema.getAdditionalProperties() instanceof Boolean && (Boolean)schema.getAdditionalProperties()) { + return new ObjectSchema(); + } + return null; + } + } 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 94f4aa7c05c..41b04b50c28 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 @@ -37,8 +37,6 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.ClientOptInput; import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenModel; -import org.openapitools.codegen.CodegenModelFactory; -import org.openapitools.codegen.CodegenModelType; import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.CodegenProperty; @@ -307,6 +305,35 @@ public class JavaClientCodegenTest { output.deleteOnExit(); } + @Test + public void testFreeFormObjects() { + final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/issue796.yaml", null, new ParseOptions()).getOpenAPI(); + JavaClientCodegen codegen = new JavaClientCodegen(); + + Schema test1 = openAPI.getComponents().getSchemas().get("MapTest1"); + CodegenModel cm1 = codegen.fromModel("MapTest1", test1, openAPI.getComponents().getSchemas()); + Assert.assertEquals(cm1.getDataType(), "Map"); + Assert.assertEquals(cm1.getParent(), "HashMap"); + Assert.assertEquals(cm1.getClassname(), "MapTest1"); + + Schema test2 = openAPI.getComponents().getSchemas().get("MapTest2"); + CodegenModel cm2 = codegen.fromModel("MapTest2", test2, openAPI.getComponents().getSchemas()); + Assert.assertEquals(cm2.getDataType(), "Map"); + Assert.assertEquals(cm2.getParent(), "HashMap"); + Assert.assertEquals(cm2.getClassname(), "MapTest2"); + + Schema test3 = openAPI.getComponents().getSchemas().get("MapTest3"); + CodegenModel cm3 = codegen.fromModel("MapTest3", test3, openAPI.getComponents().getSchemas()); + Assert.assertEquals(cm3.getDataType(), "Map"); + Assert.assertEquals(cm3.getParent(), "HashMap"); + Assert.assertEquals(cm3.getClassname(), "MapTest3"); + + Schema other = openAPI.getComponents().getSchemas().get("OtherObj"); + CodegenModel cm = codegen.fromModel("OtherObj", other, openAPI.getComponents().getSchemas()); + Assert.assertEquals(cm.getDataType(), "Object"); + Assert.assertEquals(cm.getClassname(), "OtherObj"); + } + private void ensureContainsFile(Map generatedFiles, File root, String filename) { File file = new File(root, filename); String absoluteFilename = file.getAbsolutePath().replace("\\", "/"); diff --git a/modules/openapi-generator/src/test/resources/3_0/issue796.yaml b/modules/openapi-generator/src/test/resources/3_0/issue796.yaml new file mode 100644 index 00000000000..4b3103ec08a --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue796.yaml @@ -0,0 +1,37 @@ +openapi: 3.0.1 +info: + title: Issue 796 + license: + name: Apache-2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + version: 1.0.0 +servers: +- url: http://localhost:123/api +paths: + /test: + get: + tags: + - test + responses: + 201: + description: Successful response +components: + schemas: + MapTest1: + type: object + description: This type example 1 + additionalProperties: {} + MapTest2: + type: object + description: This type example 2 + additionalProperties: true + MapTest3: + type: object + description: This type example 3 + additionalProperties: + type: object + OtherObj: + type: object + description: This type example 4 + additionalProperties: false +