Refactor getAdditionalProperties, isFreeFormObject (#16065)

* refactor getAdditionalProperties, isFreeFormObject

* change warn to debug
This commit is contained in:
William Cheng 2023-07-13 08:32:42 +08:00 committed by GitHub
parent 16c149a91e
commit c6f6ef92d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
82 changed files with 157 additions and 209 deletions

View File

@ -1037,7 +1037,7 @@ public class DefaultCodegen implements CodegenConfig {
addOneOfInterfaceModel((ComposedSchema) items, nOneOf);
}
} else if (ModelUtils.isMapSchema(s)) {
Schema addProps = getAdditionalProperties(s);
Schema addProps = ModelUtils.getAdditionalProperties(s);
if (addProps != null && ModelUtils.isComposedSchema(addProps)) {
addOneOfNameExtension((ComposedSchema) addProps, nOneOf);
addOneOfInterfaceModel((ComposedSchema) addProps, nOneOf);
@ -1951,7 +1951,7 @@ public class DefaultCodegen implements CodegenConfig {
*/
public String toInstantiationType(Schema schema) {
if (ModelUtils.isMapSchema(schema)) {
Schema additionalProperties = getAdditionalProperties(schema);
Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
String inner = getSchemaType(additionalProperties);
return instantiationTypes.get("map") + "<String, " + inner + ">";
} else if (ModelUtils.isArraySchema(schema)) {
@ -2067,7 +2067,7 @@ public class DefaultCodegen implements CodegenConfig {
if (content.size() > 1) {
// @see ModelUtils.getSchemaFromContent()
once(LOGGER).warn("Multiple MediaTypes found, using only the first one");
once(LOGGER).debug("Multiple MediaTypes found, using only the first one");
}
MediaType mediaType = content.values().iterator().next();
@ -2274,7 +2274,7 @@ public class DefaultCodegen implements CodegenConfig {
}
protected Schema<?> getSchemaAdditionalProperties(Schema schema) {
Schema<?> inner = getAdditionalProperties(schema);
Schema<?> inner = ModelUtils.getAdditionalProperties(schema);
if (inner == null) {
LOGGER.error("`{}` (map property) does not have a proper inner type defined. Default to type:string", schema.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");
@ -2302,7 +2302,7 @@ public class DefaultCodegen implements CodegenConfig {
} else if (names.size() == 1) {
return names.get(0);
} else {
LOGGER.warn("allOf with multiple schemas defined. Using only the first one: {}", names.get(0));
LOGGER.debug("allOf with multiple schemas defined. Using only the first one: {}", names.get(0));
return names.get(0);
}
}
@ -2452,7 +2452,7 @@ public class DefaultCodegen implements CodegenConfig {
return schema.getFormat();
}
return "string";
} else if (isFreeFormObject(schema)) {
} else if (ModelUtils.isFreeFormObject(schema)) {
// Note: the value of a free-form object cannot be an arbitrary type. Per OAS specification,
// it must be a map of string to values.
return "object";
@ -2854,7 +2854,7 @@ public class DefaultCodegen implements CodegenConfig {
if (ModelUtils.isMapSchema(schema)) {
// an object or anyType composed schema that has additionalProperties set
addAdditionPropertiesToCodeGenModel(m, schema);
} else if (ModelUtils.isFreeFormObject(openAPI, schema)) {
} else if (ModelUtils.isFreeFormObject(schema)) {
// non-composed object type with no properties + additionalProperties
// additionalProperties must be null, ObjectSchema, or empty Schema
addAdditionPropertiesToCodeGenModel(m, schema);
@ -3685,7 +3685,7 @@ public class DefaultCodegen implements CodegenConfig {
property.maxItems = p.getMaxProperties();
// handle inner property
Schema innerSchema = unaliasSchema(getAdditionalProperties(p));
Schema innerSchema = unaliasSchema(ModelUtils.getAdditionalProperties(p));
if (innerSchema == null) {
LOGGER.error("Undefined map inner type for `{}`. Default to String.", p.getName());
innerSchema = new StringSchema().description("//TODO automatically added by openapi-generator due to undefined type");
@ -3696,7 +3696,7 @@ public class DefaultCodegen implements CodegenConfig {
}
protected void updatePropertyForObject(CodegenProperty property, Schema p) {
if (isFreeFormObject(p)) {
if (ModelUtils.isFreeFormObject(p)) {
// non-composed object type with no properties + additionalProperties
// additionalProperties must be null, ObjectSchema, or empty Schema
property.isFreeFormObject = true;
@ -4055,7 +4055,7 @@ public class DefaultCodegen implements CodegenConfig {
!ModelUtils.isComposedSchema(p) &&
p.getAdditionalProperties() == null && p.getNot() == null && p.getEnum() == null);
if (!ModelUtils.isArraySchema(p) && !ModelUtils.isMapSchema(p) && !isFreeFormObject(p) && !isAnyTypeWithNothingElseSet) {
if (!ModelUtils.isArraySchema(p) && !ModelUtils.isMapSchema(p) && !ModelUtils.isFreeFormObject(p) && !isAnyTypeWithNothingElseSet) {
/* schemas that are not Array, not ModelUtils.isMapSchema, not isFreeFormObject, not AnyType with nothing else set
* so primitive schemas int, str, number, referenced schemas, AnyType schemas with properties, enums, or composition
*/
@ -4322,7 +4322,7 @@ public class DefaultCodegen implements CodegenConfig {
CodegenProperty innerProperty = fromProperty("response", getSchemaItems(as), false);
op.returnBaseType = innerProperty.baseType;
} else if (ModelUtils.isMapSchema(responseSchema)) {
CodegenProperty innerProperty = fromProperty("response", getAdditionalProperties(responseSchema), false);
CodegenProperty innerProperty = fromProperty("response", ModelUtils.getAdditionalProperties(responseSchema), false);
op.returnBaseType = innerProperty.baseType;
} else {
if (cm.complexType != null) {
@ -4873,7 +4873,7 @@ public class DefaultCodegen implements CodegenConfig {
r.isDouble = Boolean.TRUE;
}
} else if (ModelUtils.isTypeObjectSchema(responseSchema)) {
if (ModelUtils.isFreeFormObject(openAPI, responseSchema)) {
if (ModelUtils.isFreeFormObject(responseSchema)) {
r.isFreeFormObject = true;
} else {
r.isModel = true;
@ -4984,7 +4984,7 @@ public class DefaultCodegen implements CodegenConfig {
private void updateParameterForMap(CodegenParameter codegenParameter, Schema parameterSchema, Set<String> imports) {
CodegenProperty codegenProperty = fromProperty("inner", getAdditionalProperties(parameterSchema), false);
CodegenProperty codegenProperty = fromProperty("inner", ModelUtils.getAdditionalProperties(parameterSchema), false);
codegenParameter.items = codegenProperty;
codegenParameter.mostInnerItems = codegenProperty.mostInnerItems;
codegenParameter.baseType = codegenProperty.dataType;
@ -5176,7 +5176,7 @@ public class DefaultCodegen implements CodegenConfig {
if (ModelUtils.isMapSchema(parameterSchema)) { // for map parameter
updateParameterForMap(codegenParameter, parameterSchema, imports);
}
if (ModelUtils.isFreeFormObject(openAPI, parameterSchema)) {
if (ModelUtils.isFreeFormObject(parameterSchema)) {
codegenParameter.isFreeFormObject = true;
}
addVarsRequiredVarsAdditionalProps(parameterSchema, codegenParameter);
@ -6975,7 +6975,7 @@ public class DefaultCodegen implements CodegenConfig {
}
}
} else if (ModelUtils.isTypeObjectSchema(ps)) {
if (ModelUtils.isFreeFormObject(openAPI, ps)) {
if (ModelUtils.isFreeFormObject(ps)) {
codegenParameter.isFreeFormObject = true;
}
} else if (ModelUtils.isNullType(ps)) {
@ -7145,7 +7145,7 @@ public class DefaultCodegen implements CodegenConfig {
if (ModelUtils.isGenerateAliasAsModel(schema) && StringUtils.isNotBlank(name)) {
this.addBodyModelSchema(codegenParameter, name, schema, imports, bodyParameterName, true);
} else {
Schema inner = getAdditionalProperties(schema);
Schema inner = ModelUtils.getAdditionalProperties(schema);
if (inner == null) {
LOGGER.error("No inner type supplied for map parameter `{}`. Default to type:string", schema.getName());
inner = new StringSchema().description("//TODO automatically added by openapi-generator");
@ -7212,7 +7212,7 @@ public class DefaultCodegen implements CodegenConfig {
if (ModelUtils.isMapSchema(schema)) {
// Schema with additionalproperties: true (including composed schemas with additionalproperties: true)
updateRequestBodyForMap(codegenParameter, schema, name, imports, bodyParameterName);
} else if (isFreeFormObject(schema)) {
} else if (ModelUtils.isFreeFormObject(schema)) {
// non-composed object type with no properties + additionalProperties
// additionalProperties must be null, ObjectSchema, or empty Schema
codegenParameter.isFreeFormObject = true;
@ -7985,7 +7985,7 @@ public class DefaultCodegen implements CodegenConfig {
return false;
}
if (isFreeFormObject(schema)) {
if (ModelUtils.isFreeFormObject(schema)) {
// make sure it's not free form object
return false;
}
@ -8001,60 +8001,6 @@ public class DefaultCodegen implements CodegenConfig {
return false;
}
/**
* Check to see if the schema is a free form object.
*
* A free form object is an object (i.e. 'type: object' in a OAS document) that:
* 1) Does not define properties, and
* 2) Is not a composed schema (no anyOf, oneOf, allOf), and
* 3) additionalproperties is not defined, or additionalproperties: true, or additionalproperties: {}.
*
* Examples:
*
* components:
* schemas:
* arbitraryObject:
* type: object
* description: This is a free-form object.
* The value must be a map of strings to values. The value cannot be 'null'.
* It cannot be array, string, integer, number.
* arbitraryNullableObject:
* type: object
* description: This is a free-form object.
* The value must be a map of strings to values. The value can be 'null',
* It cannot be array, string, integer, number.
* nullable: true
* arbitraryTypeValue:
* description: This is NOT a free-form object.
* The value can be any type except the 'null' value.
*
* @param schema potentially containing a '$ref'
* @return true if it's a free-form object
*/
protected boolean isFreeFormObject(Schema schema) {
// TODO remove this method and replace all usages with ModelUtils.isFreeFormObject
return ModelUtils.isFreeFormObject(this.openAPI, schema);
}
/**
* Returns the additionalProperties Schema for the specified input schema.
* <p>
* The additionalProperties keyword is used to control the handling of additional, undeclared
* properties, that is, properties whose names are not listed in the properties keyword.
* The additionalProperties keyword may be either a boolean or an object.
* If additionalProperties is a boolean and set to false, no additional properties are allowed.
* By default when the additionalProperties keyword is not specified in the input schema,
* any additional properties are allowed. This is equivalent to setting additionalProperties
* to the boolean value True or setting additionalProperties: {}
*
* @param schema the input schema that may or may not have the additionalProperties keyword.
* @return the Schema of the additionalProperties. The null value is returned if no additional
* properties are allowed.
*/
protected Schema getAdditionalProperties(Schema schema) {
return ModelUtils.getAdditionalProperties(openAPI, schema);
}
/**
* Check if the given MIME is a JSON MIME.
* JSON MIME examples:

View File

@ -488,7 +488,7 @@ public class DefaultGenerator implements Generator {
Schema schema = schemas.get(name);
if (ModelUtils.isFreeFormObject(this.openAPI, schema)) { // check to see if it's a free-form object
if (ModelUtils.isFreeFormObject(schema)) { // check to see if it's a free-form object
// there are 3 free form use cases
// 1. free form with no validation that is not allOf included in any composed schemas
// 2. free form with validation

View File

@ -798,7 +798,7 @@ public class InlineModelResolver {
}
}
if (ModelUtils.isMapSchema(property)) {
Schema inner = ModelUtils.getAdditionalProperties(openAPI, property);
Schema inner = ModelUtils.getAdditionalProperties(property);
if (inner instanceof ObjectSchema) {
ObjectSchema op = (ObjectSchema) inner;
if (op.getProperties() != null && op.getProperties().size() > 0) {

View File

@ -269,10 +269,10 @@ public class ExampleGenerator {
Map<String, Object> mp = new HashMap<String, Object>();
if (property.getName() != null) {
mp.put(property.getName(),
resolvePropertyToExample(propertyName, mediaType, ModelUtils.getAdditionalProperties(openAPI, property), processedModels));
resolvePropertyToExample(propertyName, mediaType, ModelUtils.getAdditionalProperties(property), processedModels));
} else {
mp.put("key",
resolvePropertyToExample(propertyName, mediaType, ModelUtils.getAdditionalProperties(openAPI, property), processedModels));
resolvePropertyToExample(propertyName, mediaType, ModelUtils.getAdditionalProperties(property), processedModels));
}
return mp;
} else if (ModelUtils.isUUIDSchema(property)) {

View File

@ -456,7 +456,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg
return getTypeDeclaration(inner) + "_Vectors.Vector";
}
if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
String name = getTypeDeclaration(inner) + "_Map";
if (name.startsWith(openApiPackageName)) {
return name;

View File

@ -197,7 +197,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code
}
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
if (inner == null) {
LOGGER.warn("{}(map property) does not have a proper inner type defined", p.getName());
@ -230,11 +230,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 (getAdditionalProperties(ap) == null) {
if (ModelUtils.getAdditionalProperties(ap) == null) {
return null;
}
return String.format(Locale.ROOT, pattern, String.format(Locale.ROOT, "String, %s", getTypeDeclaration(getAdditionalProperties(ap))));
return String.format(Locale.ROOT, pattern, String.format(Locale.ROOT, "String, %s", getTypeDeclaration(ModelUtils.getAdditionalProperties(ap))));
} else if (ModelUtils.isLongSchema(p)) {
if (p.getDefault() != null) {
return p.getDefault().toString() + "l";
@ -367,7 +367,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(getAdditionalProperties(p)) + "}";
example = "new " + getTypeDeclaration(p) + "{'key'=>" + toExampleValue(ModelUtils.getAdditionalProperties(p)) + "}";
} else if (ModelUtils.isPasswordSchema(p)) {
example = example.isEmpty() ? "password123" : escapeText(example);

View File

@ -1168,7 +1168,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 = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<string, " + getTypeDeclaration(inner) + ">";
}
return super.getTypeDeclaration(p);

View File

@ -518,7 +518,7 @@ public abstract class AbstractDartCodegen extends DefaultCodegen {
if (ModelUtils.isMapSchema(target)) {
// Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines
// additionalproperties: true
Schema<?> inner = getAdditionalProperties(target);
Schema<?> inner = ModelUtils.getAdditionalProperties(target);
if (inner == null) {
LOGGER.error("`{}` (map property) does not have a proper inner type defined. Default to type:string", p.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");

View File

@ -297,7 +297,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
Schema inner = ap.getItems();
return "LIST [" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + " [" + getTypeDeclaration(inner) + "]";
}
@ -569,7 +569,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co
public String toInstantiationType(Schema p) {
return getTypeDeclaration(p);
// if (ModelUtils.isMapSchema(p)) {
// Schema additionalProperties2 = getAdditionalProperties(p);
// Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p);
// String type = additionalProperties2.getType();
// if (null == type) {
// LOGGER.error("No Type defined for Additional Schema " + additionalProperties2 + "\n" //

View File

@ -880,7 +880,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co
return getArrayTypeDeclaration((ArraySchema) p);
} else if (ModelUtils.isMapSchema(p)) {
// Should we also support maps of maps?
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<string, " + getTypeDeclaration(inner) + ">";
}
return super.getTypeDeclaration(p);

View File

@ -365,7 +365,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
}
return "[]" + typDecl;
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[string]" + getTypeDeclaration(unaliasSchema(inner));
}

View File

@ -21,6 +21,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.google.common.base.Strings;
import com.google.common.collect.Sets;
import io.swagger.models.Model;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.PathItem;
@ -930,7 +931,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
} else if (ModelUtils.isMapSchema(target)) {
// Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines
// additionalproperties: true
Schema<?> inner = getAdditionalProperties(target);
Schema<?> inner = ModelUtils.getAdditionalProperties(target);
if (inner == null) {
LOGGER.error("`{}` (map property) does not have a proper inner type defined. Default to type:string", p.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");
@ -1064,7 +1065,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
return null;
}
if (getAdditionalProperties(schema) == null) {
if (ModelUtils.getAdditionalProperties(schema) == null) {
return null;
}
@ -1220,7 +1221,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
if (content.size() > 1) {
// @see ModelUtils.getSchemaFromContent()
LOGGER.warn("Multiple MediaTypes found, using only the first one");
LOGGER.debug("Multiple MediaTypes found, using only the first one");
}
MediaType mediaType = content.values().iterator().next();
@ -2226,7 +2227,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
}
// See https://github.com/OpenAPITools/openapi-generator/pull/1729#issuecomment-449937728
Schema s = getAdditionalProperties(schema);
Schema s = ModelUtils.getAdditionalProperties(schema);
// 's' may be null if 'additionalProperties: false' in the OpenAPI schema.
if (s != null) {
codegenModel.additionalPropertiesType = getSchemaType(s);

View File

@ -328,10 +328,10 @@ public abstract class AbstractJuliaCodegen extends DefaultCodegen {
Schema inner = ap.getItems();
return getSchemaType(schema) + "{" + getTypeDeclaration(inner) + "}";
} else if (ModelUtils.isSet(schema)) {
Schema inner = getAdditionalProperties(schema);
Schema inner = ModelUtils.getAdditionalProperties(schema);
return getSchemaType(schema) + "{" + getTypeDeclaration(inner) + "}";
} else if (ModelUtils.isMapSchema(schema)) {
Schema inner = getAdditionalProperties(schema);
Schema inner = ModelUtils.getAdditionalProperties(schema);
return getSchemaType(schema) + "{String, " + getTypeDeclaration(inner) + "}";
}
return super.getTypeDeclaration(schema);

View File

@ -386,7 +386,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
} else if (ModelUtils.isMapSchema(target)) {
// Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines
// additionalproperties: true
Schema<?> inner = getAdditionalProperties(target);
Schema<?> inner = ModelUtils.getAdditionalProperties(target);
if (inner == null) {
LOGGER.error("`{}` (map property) does not have a proper inner type defined. Default to type:string", p.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");
@ -1138,7 +1138,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
addAdditionPropertiesToCodeGenModel(m, schema);
} else {
m.setIsMap(false);
if (ModelUtils.isFreeFormObject(openAPI, schema)) {
if (ModelUtils.isFreeFormObject(schema)) {
// non-composed object type with no properties + additionalProperties
// additionalProperties must be null, ObjectSchema, or empty Schema
addAdditionPropertiesToCodeGenModel(m, schema);

View File

@ -364,7 +364,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
}
return getTypeDeclaration(inner) + "[]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
if (inner == null) {
LOGGER.warn("{}(map property) does not have a proper inner type defined. Default to string", p.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");

View File

@ -346,7 +346,7 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[str, " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -122,7 +122,7 @@ abstract public class AbstractRubyCodegen extends DefaultCodegen implements Code
Schema inner = ((ArraySchema) schema).getItems();
return getSchemaType(schema) + "<" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(schema)) {
Schema inner = getAdditionalProperties(schema);
Schema inner = ModelUtils.getAdditionalProperties(schema);
return getSchemaType(schema) + "<String, " + getTypeDeclaration(inner) + ">";
}

View File

@ -369,7 +369,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
Schema<?> items = getSchemaItems((ArraySchema) schema);
return getSchemaType(target) + "[" + getTypeDeclaration(items) + "]";
} else if (ModelUtils.isMapSchema(target)) {
Schema<?> inner = getAdditionalProperties(target);
Schema<?> inner = ModelUtils.getAdditionalProperties(target);
if (inner == null) {
LOGGER.error("`{}` (map property) does not have a proper inner type defined. Default to type:string", p.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");
@ -396,7 +396,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
@Override
public String toInstantiationType(Schema p) {
if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return instantiationTypes.get("map") + "[String, " + inner + "]";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;
@ -425,7 +425,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen {
} else if (ModelUtils.isIntegerSchema(p)) {
return null;
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "new HashMap[String, " + inner + "]() ";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;

View File

@ -624,7 +624,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 = getAdditionalProperties(p);
inner = ModelUtils.getAdditionalProperties(p);
return "{ [key: string]: " + this.getParameterDataType(parameter, inner) + "; }";
} else if (ModelUtils.isStringSchema(p)) {
// Handle string enums

View File

@ -225,7 +225,7 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi
Schema inner = ap.getItems();
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<String, " + getTypeDeclaration(inner) + ">";
}

View File

@ -236,7 +236,7 @@ public class ApexClientCodegen extends AbstractApexCodegen {
Long def = (Long) p.getDefault();
out = def == null ? out : def + "L";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
String s = inner == null ? "Object" : getTypeDeclaration(inner);
out = String.format(Locale.ROOT, "new Map<String, %s>()", s);
} else if (ModelUtils.isStringSchema(p)) {

View File

@ -433,7 +433,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig {
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -1496,7 +1496,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
@Override
public String toInstantiationType(Schema schema) {
if (ModelUtils.isMapSchema(schema)) {
Schema additionalProperties = getAdditionalProperties(schema);
Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
String inner = getSchemaType(additionalProperties);
if (ModelUtils.isMapSchema(additionalProperties)) {
inner = toInstantiationType(additionalProperties);
@ -1657,7 +1657,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
addAdditionPropertiesToCodeGenModel(m, schema);
} else {
m.setIsMap(false);
if (ModelUtils.isFreeFormObject(openAPI, schema)) {
if (ModelUtils.isFreeFormObject(schema)) {
// non-composed object type with no properties + additionalProperties
// additionalProperties must be null, ObjectSchema, or empty Schema
addAdditionPropertiesToCodeGenModel(m, schema);

View File

@ -1117,7 +1117,7 @@ public class CSharpReducedClientCodegen extends AbstractCSharpCodegen {
@Override
public String toInstantiationType(Schema schema) {
if (ModelUtils.isMapSchema(schema)) {
Schema additionalProperties = getAdditionalProperties(schema);
Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
String inner = getSchemaType(additionalProperties);
if (ModelUtils.isMapSchema(additionalProperties)) {
inner = toInstantiationType(additionalProperties);
@ -1184,7 +1184,7 @@ public class CSharpReducedClientCodegen extends AbstractCSharpCodegen {
addAdditionPropertiesToCodeGenModel(m, schema);
} else {
m.setIsMap(false);
if (ModelUtils.isFreeFormObject(openAPI, schema)) {
if (ModelUtils.isFreeFormObject(schema)) {
// non-composed object type with no properties + additionalProperties
// additionalProperties must be null, ObjectSchema, or empty Schema
addAdditionPropertiesToCodeGenModel(m, schema);

View File

@ -112,7 +112,7 @@ public class ConfluenceWikiCodegen extends DefaultCodegen implements CodegenConf
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -386,7 +386,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
}
if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<std::string, " + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isByteArraySchema(p)) {
return "std::string";
@ -471,7 +471,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen {
return "\"\"";
}
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "std::map<std::string, " + inner + ">()";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;

View File

@ -190,7 +190,7 @@ public abstract class CppQtAbstractCodegen extends AbstractCppCodegen implements
Schema inner = ap.getItems();
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<QString, " + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isBinarySchema(p)) {
return getSchemaType(p);
@ -226,7 +226,7 @@ public abstract class CppQtAbstractCodegen extends AbstractCppCodegen implements
}
return "0";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "QMap<QString, " + getTypeDeclaration(inner) + ">()";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;

View File

@ -371,7 +371,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
Schema inner = ap.getItems();
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<utility::string_t, " + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isFileSchema(p) || ModelUtils.isBinarySchema(p)) {
return "std::shared_ptr<" + openAPIType + ">";
@ -404,7 +404,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
}
return "0";
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "std::map<utility::string_t, " + inner + ">()";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;
@ -417,7 +417,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
return "new " + toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()";
} else if (ModelUtils.isStringSchema(p)) {
return "utility::conversions::to_string_t(\"\")";
} else if (isFreeFormObject(p)) {
} else if (ModelUtils.isFreeFormObject(p)) {
return "new Object()";
}

View File

@ -383,7 +383,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
Schema inner = ap.getItems();
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<std::string, " + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isByteArraySchema(p)) {
return "std::string";
@ -466,7 +466,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen {
return "\"\"";
}
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "std::map<std::string, " + inner + ">()";
} else if (ModelUtils.isSet(p)) {
ArraySchema ap = (ArraySchema) p;

View File

@ -355,7 +355,7 @@ public class CppRestbedServerDeprecatedCodegen extends AbstractCppCodegen {
Schema inner = ap.getItems();
return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<std::string, " + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isByteArraySchema(p)) {
return "std::string";
@ -430,7 +430,7 @@ public class CppRestbedServerDeprecatedCodegen extends AbstractCppCodegen {
return "\"\"";
}
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "std::map<std::string, " + inner + ">()";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;

View File

@ -387,7 +387,7 @@ public class CppUE4ClientCodegen extends AbstractCppCodegen {
ArraySchema ap = (ArraySchema) p;
return getSchemaType(p) + "<" + getTypeDeclaration(ap.getItems()) + ">";
} else if (ModelUtils.isMapSchema(p)) {
return getSchemaType(p) + "<FString, " + getTypeDeclaration(getAdditionalProperties(p)) + ">";
return getSchemaType(p) + "<FString, " + getTypeDeclaration(ModelUtils.getAdditionalProperties(p)) + ">";
}
if (pointerClasses.contains(openAPIType)) {

View File

@ -575,7 +575,7 @@ public class CrystalClientCodegen extends DefaultCodegen {
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
final Schema additionalProperties = getAdditionalProperties(schema);
final Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
if (additionalProperties != null) {
codegenModel.additionalPropertiesType = getSchemaType(additionalProperties);
@ -812,7 +812,7 @@ public class CrystalClientCodegen extends DefaultCodegen {
Schema inner = ((ArraySchema) schema).getItems();
return getSchemaType(schema) + "(" + getTypeDeclaration(inner) + ")";
} else if (ModelUtils.isMapSchema(schema)) {
Schema inner = getAdditionalProperties(schema);
Schema inner = ModelUtils.getAdditionalProperties(schema);
return getSchemaType(schema) + "(String, " + getTypeDeclaration(inner) + ")";
}

View File

@ -550,7 +550,7 @@ public class ElixirClientCodegen extends DefaultCodegen {
Schema inner = ap.getItems();
return "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "%{optional(String.t) => " + getTypeDeclaration(inner) + "}";
} else if (ModelUtils.isPasswordSchema(p)) {
return "String.t";

View File

@ -468,7 +468,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
Schema inner = ap.getItems();
return getTypeDeclaration(inner);
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getTypeDeclaration(inner);
}
return super.getTypeDeclaration(p);

View File

@ -473,7 +473,7 @@ public class GoServerCodegen extends AbstractGoCodegen {
addAdditionPropertiesToCodeGenModel(m, schema);
} else {
m.setIsMap(false);
if (ModelUtils.isFreeFormObject(openAPI, schema)) {
if (ModelUtils.isFreeFormObject(schema)) {
// non-composed object type with no properties + additionalProperties
// additionalProperties must be null, ObjectSchema, or empty Schema
addAdditionPropertiesToCodeGenModel(m, schema);

View File

@ -649,7 +649,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
Schema inner = ap.getItems();
return "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "(Map.Map String " + getTypeDeclaration(inner) + ")";
}
return super.getTypeDeclaration(p);
@ -671,7 +671,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
@Override
public String toInstantiationType(Schema p) {
if (ModelUtils.isMapSchema(p)) {
Schema additionalProperties2 = getAdditionalProperties(p);
Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p);
String type = additionalProperties2.getType();
if (null == type) {
LOGGER.error("No Type defined for Additional Schema {}\n\tIn Schema: {}", additionalProperties2, p);

View File

@ -382,7 +382,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
Schema inner = ap.getItems();
return "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "(Map.Map String " + getTypeDeclaration(inner) + ")";
}
return fixModelChars(super.getTypeDeclaration(p));
@ -417,7 +417,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf
@Override
public String toInstantiationType(Schema p) {
if (ModelUtils.isMapSchema(p)) {
Schema additionalProperties2 = getAdditionalProperties(p);
Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p);
String type = additionalProperties2.getType();
if (null == type) {
LOGGER.error("No Type defined for Additional Property {}\n\tIn Property: {}", additionalProperties2, p);

View File

@ -305,7 +305,7 @@ public class HaskellYesodServerCodegen extends DefaultCodegen implements Codegen
Schema inner = ap.getItems();
return "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "(Map.Map String " + getTypeDeclaration(inner) + ")";
}
return fixModelChars(super.getTypeDeclaration(p));
@ -340,7 +340,7 @@ public class HaskellYesodServerCodegen extends DefaultCodegen implements Codegen
@Override
public String toInstantiationType(Schema p) {
if (ModelUtils.isMapSchema(p)) {
Schema additionalProperties2 = getAdditionalProperties(p);
Schema additionalProperties2 = ModelUtils.getAdditionalProperties(p);
String type = additionalProperties2.getType();
if (null == type) {
LOGGER.error("No Type defined for Additional Property {}\n\tIn Property: {}", additionalProperties2, p);

View File

@ -208,7 +208,7 @@ public class JMeterClientCodegen extends DefaultCodegen implements CodegenConfig
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -369,7 +369,7 @@ public class JavaCXFServerCodegen extends AbstractJavaJAXRSServerCodegen
addAdditionPropertiesToCodeGenModel(m, schema);
} else {
m.setIsMap(false);
if (ModelUtils.isFreeFormObject(openAPI, schema)) {
if (ModelUtils.isFreeFormObject(schema)) {
// non-composed object type with no properties + additionalProperties
// additionalProperties must be null, ObjectSchema, or empty Schema
addAdditionPropertiesToCodeGenModel(m, schema);

View File

@ -614,7 +614,7 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod
Schema inner = ap.getItems();
return "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "{String: " + getTypeDeclaration(inner) + "}";
}
return super.getTypeDeclaration(p);
@ -879,8 +879,8 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod
codegenModel.vendorExtensions.put("x-item-type", itemType);
}
} else if (ModelUtils.isMapSchema(model)) {
if (codegenModel != null && getAdditionalProperties(model) != null) {
String itemType = getSchemaType(getAdditionalProperties(model));
if (codegenModel != null && ModelUtils.getAdditionalProperties(model) != null) {
String itemType = getSchemaType(ModelUtils.getAdditionalProperties(model));
codegenModel.vendorExtensions.put("x-is-map", true);
codegenModel.vendorExtensions.put("x-item-type", itemType);
} else {

View File

@ -599,7 +599,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
Schema inner = ap.getItems();
return "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "{String: " + getTypeDeclaration(inner) + "}";
}
return super.getTypeDeclaration(p);
@ -866,8 +866,8 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
codegenModel.vendorExtensions.put("x-item-type", itemType);
}
} else if (ModelUtils.isMapSchema(model)) {
if (codegenModel != null && getAdditionalProperties(model) != null) {
String itemType = getSchemaType(getAdditionalProperties(model));
if (codegenModel != null && ModelUtils.getAdditionalProperties(model) != null) {
String itemType = getSchemaType(ModelUtils.getAdditionalProperties(model));
codegenModel.vendorExtensions.put("x-is-map", true);
codegenModel.vendorExtensions.put("x-item-type", itemType);
} else {

View File

@ -229,7 +229,7 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem
Schema inner = ap.getItems();
return getSchemaType(p) + "<!" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "Object<!string, "+ getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isFileSchema(p)) {
return "Object";

View File

@ -26,6 +26,7 @@ import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.utils.ModelUtils;
import java.util.*;
@ -114,7 +115,7 @@ public class JavascriptFlowtypedClientCodegen extends AbstractTypeScriptClientCo
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -372,7 +372,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
Schema inner = ap.getItems();
return getTypeDeclaration(inner);
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getTypeDeclaration(inner);
}

View File

@ -282,7 +282,7 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig {
}
return "seq[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
if (inner == null) {
inner = new StringSchema();
}

View File

@ -590,7 +590,7 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig
}
return getTypeDeclaration(inner) + " list";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
if (inner == null) {
LOGGER.warn("{}(map property) does not have a proper inner type defined. Default to string", p.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");

View File

@ -392,7 +392,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig {
return getSchemaType(p) + "<" + innerTypeDeclaration + ">*";
}
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
String innerTypeDeclaration = getTypeDeclaration(inner);

View File

@ -263,7 +263,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -179,7 +179,7 @@ public class PhpSilexServerCodegen extends DefaultCodegen implements CodegenConf
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -544,7 +544,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
}
if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getTypeDeclaration(inner);
}

View File

@ -612,7 +612,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "<string, " + getTypeDeclaration(inner) + ">";
}
return super.getTypeDeclaration(p);

View File

@ -396,7 +396,7 @@ public class PythonClientCodegen extends AbstractPythonCodegen implements Codege
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[str, " + getTypeDeclaration(inner) + "]";
}
@ -1507,7 +1507,7 @@ public class PythonClientCodegen extends AbstractPythonCodegen implements Codege
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
final Schema additionalProperties = getAdditionalProperties(schema);
final Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
if (additionalProperties != null) {
codegenModel.additionalPropertiesType = getSchemaType(additionalProperties);

View File

@ -214,7 +214,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[str, " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -519,7 +519,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "(" + getTypeDeclaration(inner) + ")";
}

View File

@ -25,6 +25,7 @@ import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -596,7 +597,7 @@ public class RubyClientCodegen extends AbstractRubyCodegen {
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
final Schema additionalProperties = getAdditionalProperties(schema);
final Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
if (additionalProperties != null) {
codegenModel.additionalPropertiesType = getSchemaType(additionalProperties);

View File

@ -436,7 +436,7 @@ public class RustClientCodegen extends AbstractRustCodegen implements CodegenCon
}
return "Vec<" + getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(unaliasSchema)) {
Schema inner = getAdditionalProperties(unaliasSchema);
Schema inner = ModelUtils.getAdditionalProperties(unaliasSchema);
if (inner == null) {
LOGGER.warn("{}(map property) does not have a proper inner type defined. Default to string", unaliasSchema.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");

View File

@ -988,7 +988,7 @@ public class RustServerCodegen extends AbstractRustCodegen implements CodegenCon
String innerType = getTypeDeclaration(inner);
return typeMapping.get("array") + "<" + innerType + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
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(">");
@ -1022,7 +1022,7 @@ public class RustServerCodegen extends AbstractRustCodegen implements CodegenCon
Schema inner = ap.getItems();
return instantiationTypes.get("array") + "<" + getSchemaType(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return instantiationTypes.get("map") + "<" + typeMapping.get("string") + ", " + getSchemaType(inner) + ">";
} else {
return null;
@ -1084,7 +1084,7 @@ public class RustServerCodegen extends AbstractRustCodegen implements CodegenCon
additionalProperties.put("usesXmlNamespaces", true);
}
Schema additionalProperties = getAdditionalProperties(model);
Schema additionalProperties = ModelUtils.getAdditionalProperties(model);
if (additionalProperties != null) {
mdl.additionalPropertiesType = getTypeDeclaration(additionalProperties);

View File

@ -287,7 +287,7 @@ public class ScalaAkkaClientCodegen extends AbstractScalaCodegen implements Code
} else if (ModelUtils.isIntegerSchema(p)) {
return null;
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "Map[String, " + inner + "].empty ";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;

View File

@ -265,7 +265,7 @@ public class ScalaFinchServerCodegen extends DefaultCodegen implements CodegenCo
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
}

View File

@ -388,7 +388,7 @@ public class ScalaGatlingCodegen extends AbstractScalaCodegen implements Codegen
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -363,7 +363,7 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem
}
if (ModelUtils.isMapSchema(p)) {
Schema ap = getAdditionalProperties(p);
Schema ap = ModelUtils.getAdditionalProperties(p);
String inner = getSchemaType(ap);
return "Map.empty[String, " + inner + "]";
}

View File

@ -405,7 +405,7 @@ public class ScalaSttp4ClientCodegen extends AbstractScalaCodegen implements Cod
} else if (ModelUtils.isIntegerSchema(p)) {
return null;
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "Map[String, " + inner + "].empty ";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;

View File

@ -423,7 +423,7 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code
} else if (ModelUtils.isIntegerSchema(p)) {
return null;
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "Map[String, " + inner + "].empty ";
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;

View File

@ -184,7 +184,7 @@ public class ScalazClientCodegen extends AbstractScalaCodegen implements Codegen
} else if (ModelUtils.isIntegerSchema(p)) {
return null;
} else if (ModelUtils.isMapSchema(p)) {
String inner = getSchemaType(getAdditionalProperties(p));
String inner = getSchemaType(ModelUtils.getAdditionalProperties(p));
return "Map.empty[String, " + inner + "] ";
} else if (ModelUtils.isArraySchema(p)) {

View File

@ -137,7 +137,7 @@ public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfi
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -120,7 +120,7 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig
Schema inner = ap.getItems();
return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return getSchemaType(p) + "[String, " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);

View File

@ -389,7 +389,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel,
Schema schema) {
final Schema additionalProperties = getAdditionalProperties(schema);
final Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
if (additionalProperties != null) {
Schema inner = null;
@ -397,7 +397,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
ArraySchema ap = (ArraySchema) schema;
inner = ap.getItems();
} else if (ModelUtils.isMapSchema(schema)) {
inner = getAdditionalProperties(schema);
inner = ModelUtils.getAdditionalProperties(schema);
}
codegenModel.additionalPropertiesType = inner != null ? getTypeDeclaration(inner) : getSchemaType(additionalProperties);
@ -680,7 +680,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
Schema inner = ap.getItems();
return ModelUtils.isSet(p) ? "Set<" + getTypeDeclaration(inner) + ">" : "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p);
Schema inner = ModelUtils.getAdditionalProperties(p);
return "[String: " + getTypeDeclaration(inner) + "]";
}
return super.getTypeDeclaration(p);
@ -796,7 +796,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
@Override
public String toInstantiationType(Schema p) {
if (ModelUtils.isMapSchema(p)) {
return getSchemaType(getAdditionalProperties(p));
return getSchemaType(ModelUtils.getAdditionalProperties(p));
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;
String inner = getSchemaType(ap.getItems());

View File

@ -294,7 +294,7 @@ public class SwiftCombineClientCodegen extends DefaultCodegen implements Codegen
} else if (ModelUtils.isMapSchema(target)) {
// Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines
// additionalproperties: true
Schema<?> inner = getAdditionalProperties(target);
Schema<?> inner = ModelUtils.getAdditionalProperties(target);
if (inner == null) {
LOGGER.error("`{}` (map property) does not have a proper inner type defined. Default to type:string", p.getName());
inner = new StringSchema().description("TODO default missing map inner type to string");
@ -424,7 +424,7 @@ public class SwiftCombineClientCodegen extends DefaultCodegen implements Codegen
@Override
public String toInstantiationType(Schema p) {
if (ModelUtils.isMapSchema(p)) {
return getSchemaType(getAdditionalProperties(p));
return getSchemaType(ModelUtils.getAdditionalProperties(p));
} else if (ModelUtils.isArraySchema(p)) {
ArraySchema ap = (ArraySchema) p;
String inner = getSchemaType(ap.getItems());

View File

@ -141,7 +141,7 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -210,7 +210,7 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -1041,7 +1041,7 @@ public class TypeScriptClientCodegen extends AbstractTypeScriptClientCodegen imp
if (content.size() > 1) {
// @see ModelUtils.getSchemaFromContent()
once(LOGGER).warn("Multiple MediaTypes found, using only the first one");
once(LOGGER).debug("Multiple MediaTypes found, using only the first one");
}
MediaType mediaType = content.values().iterator().next();

View File

@ -325,7 +325,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -27,6 +27,7 @@ import org.openapitools.codegen.model.ModelMap;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.model.OperationMap;
import org.openapitools.codegen.model.OperationsMap;
import org.openapitools.codegen.utils.ModelUtils;
import java.io.File;
import java.util.*;
@ -80,7 +81,7 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -112,7 +112,7 @@ public class TypeScriptJqueryClientCodegen extends AbstractTypeScriptClientCodeg
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getSchemaType(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getSchemaType(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -103,7 +103,7 @@ public class TypeScriptNestjsClientCodegen extends AbstractTypeScriptClientCodeg
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -334,7 +334,7 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
super.addAdditionPropertiesToCodeGenModel(codegenModel, schema);
Schema additionalProperties = getAdditionalProperties(schema);
Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
codegenModel.additionalPropertiesType = getSchemaType(additionalProperties);
if ("array".equalsIgnoreCase(codegenModel.additionalPropertiesType)) {
codegenModel.additionalPropertiesType += '<' + getSchemaType(((ArraySchema) additionalProperties).getItems()) + '>';

View File

@ -123,7 +123,7 @@ public class TypeScriptReduxQueryClientCodegen extends AbstractTypeScriptClientC
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -117,7 +117,7 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(getAdditionalProperties(schema));
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}

View File

@ -741,11 +741,10 @@ public class ModelUtils {
* description: This is NOT a free-form object.
* The value can be any type except the 'null' value.
*
* @param openAPI the object that encapsulates the OAS document.
* @param schema potentially containing a '$ref'
* @return true if it's a free-form object
*/
public static boolean isFreeFormObject(OpenAPI openAPI, Schema schema) {
public static boolean isFreeFormObject(Schema schema) {
if (schema == null) {
// TODO: Is this message necessary? A null schema is not a free-form object, so the result is correct.
once(LOGGER).error("Schema cannot be null in isFreeFormObject check");
@ -765,7 +764,7 @@ public class ModelUtils {
if ("object".equals(schema.getType())) {
// no properties
if ((schema.getProperties() == null || schema.getProperties().isEmpty())) {
Schema addlProps = getAdditionalProperties(openAPI, schema);
Schema addlProps = ModelUtils.getAdditionalProperties(schema);
if (schema.getExtensions() != null && schema.getExtensions().containsKey(freeFormExplicit)) {
// User has hard-coded vendor extension to handle free-form evaluation.
@ -1006,7 +1005,7 @@ public class ModelUtils {
if (content.size() > 1) {
// Other content types are currently ignored by codegen. If you see this warning,
// reorder the OAS spec to put the desired content type first.
once(LOGGER).warn("Multiple schemas found in the OAS 'content' section, returning only the first one ({})",
once(LOGGER).debug("Multiple schemas found in the OAS 'content' section, returning only the first one ({})",
entry.getKey());
}
return entry.getValue().getSchema();
@ -1194,12 +1193,11 @@ public class ModelUtils {
* any additional properties are allowed. This is equivalent to setting additionalProperties
* to the boolean value True or setting additionalProperties: {}
*
* @param openAPI the object that encapsulates the OAS document.
* @param schema the input schema that may or may not have the additionalProperties keyword.
* @return the Schema of the additionalProperties. The null value is returned if no additional
* properties are allowed.
*/
public static Schema getAdditionalProperties(OpenAPI openAPI, Schema schema) {
public static Schema getAdditionalProperties(Schema schema) {
Object addProps = schema.getAdditionalProperties();
if (addProps instanceof Schema) {
return (Schema) addProps;

View File

@ -296,7 +296,7 @@ public class DefaultCodegenTest {
Schema schema = openAPI.getComponents().getSchemas().get("AdditionalPropertiesClass");
Assert.assertNull(schema.getAdditionalProperties());
Schema addProps = ModelUtils.getAdditionalProperties(openAPI, schema);
Schema addProps = ModelUtils.getAdditionalProperties(schema);
// The petstore-with-fake-endpoints-models-for-testing.yaml does not set the
// 'additionalProperties' keyword for this model, hence assert the value to be null.
Assert.assertNull(addProps);
@ -342,7 +342,7 @@ public class DefaultCodegenTest {
// additionalProperties: true.
// UPDATE fixed in swagger parser 2.1.14
Assert.assertTrue((Boolean) map_with_additional_properties_sc.getAdditionalProperties());
addProps = ModelUtils.getAdditionalProperties(openAPI, map_with_additional_properties_sc);
addProps = ModelUtils.getAdditionalProperties(map_with_additional_properties_sc);
Assert.assertEquals(addProps, new Schema());
Assert.assertNotNull(map_with_additional_properties_cp.getAdditionalProperties());
@ -355,7 +355,7 @@ public class DefaultCodegenTest {
// additionalProperties: false.
// UPDATE fixed in swagger parser 2.1.14
Assert.assertFalse((Boolean) map_without_additional_properties_sc.getAdditionalProperties());
addProps = ModelUtils.getAdditionalProperties(openAPI, map_without_additional_properties_sc);
addProps = ModelUtils.getAdditionalProperties(map_without_additional_properties_sc);
Assert.assertNull(addProps);
Assert.assertNull(map_without_additional_properties_cp.getAdditionalProperties());
@ -387,7 +387,7 @@ public class DefaultCodegenTest {
Schema schema = openAPI.getComponents().getSchemas().get("AdditionalPropertiesClass");
Assert.assertNull(schema.getAdditionalProperties());
Schema addProps = ModelUtils.getAdditionalProperties(openAPI, schema);
Schema addProps = ModelUtils.getAdditionalProperties(schema);
// The petstore-with-fake-endpoints-models-for-testing.yaml does not set the
// 'additionalProperties' keyword for this model, hence assert the value to be null.
Assert.assertNull(addProps);
@ -433,7 +433,7 @@ public class DefaultCodegenTest {
// additionalProperties: true.
// UPDATE fixed in swagger parser 2.1.14
Assert.assertTrue((Boolean) map_with_additional_properties_sc.getAdditionalProperties());
addProps = ModelUtils.getAdditionalProperties(openAPI, map_with_additional_properties_sc);
addProps = ModelUtils.getAdditionalProperties(map_with_additional_properties_sc);
Assert.assertEquals(addProps, new Schema());
Assert.assertNotNull(map_with_additional_properties_cp.getAdditionalProperties());
@ -446,7 +446,7 @@ public class DefaultCodegenTest {
// additionalProperties: false.
// UPDATE fixed in swagger parser 2.1.14
Assert.assertFalse((Boolean) map_without_additional_properties_sc.getAdditionalProperties());
addProps = ModelUtils.getAdditionalProperties(openAPI, map_without_additional_properties_sc);
addProps = ModelUtils.getAdditionalProperties(map_without_additional_properties_sc);
Assert.assertEquals(addProps, null);
Assert.assertNull(map_without_additional_properties_cp.getAdditionalProperties());
@ -470,7 +470,7 @@ public class DefaultCodegenTest {
// When the 'additionalProperties' keyword is not present, the schema may be
// extended with any undeclared properties.
Schema addProps = ModelUtils.getAdditionalProperties(openAPI, componentSchema);
Schema addProps = ModelUtils.getAdditionalProperties(componentSchema);
Assert.assertNotNull(addProps);
Assert.assertEquals(addProps, new Schema());
CodegenModel cm = codegen.fromModel("AdditionalPropertiesClass", componentSchema);
@ -515,7 +515,7 @@ public class DefaultCodegenTest {
// which means by default undeclared properties are allowed.
Assert.assertNotNull(map_with_undeclared_properties_anytype_1_sc);
Assert.assertNull(map_with_undeclared_properties_anytype_1_sc.getAdditionalProperties());
addProps = ModelUtils.getAdditionalProperties(openAPI, map_with_undeclared_properties_anytype_1_sc);
addProps = ModelUtils.getAdditionalProperties(map_with_undeclared_properties_anytype_1_sc);
Assert.assertNotNull(addProps);
Assert.assertEquals(addProps, new Schema());
Assert.assertNotNull(map_with_undeclared_properties_anytype_1_cp.getAdditionalProperties());
@ -525,7 +525,7 @@ public class DefaultCodegenTest {
// which means by default undeclared properties are allowed.
Assert.assertNotNull(map_with_undeclared_properties_anytype_2_sc);
Assert.assertNull(map_with_undeclared_properties_anytype_2_sc.getAdditionalProperties());
addProps = ModelUtils.getAdditionalProperties(openAPI, map_with_undeclared_properties_anytype_2_sc);
addProps = ModelUtils.getAdditionalProperties(map_with_undeclared_properties_anytype_2_sc);
Assert.assertNotNull(addProps);
Assert.assertEquals(addProps, new Schema());
Assert.assertNotNull(map_with_undeclared_properties_anytype_2_cp.getAdditionalProperties());
@ -538,7 +538,7 @@ public class DefaultCodegenTest {
// additionalProperties: true.
Assert.assertNotNull(map_with_undeclared_properties_anytype_3_sc.getAdditionalProperties());
Assert.assertEquals(map_with_undeclared_properties_anytype_3_sc.getAdditionalProperties(), Boolean.TRUE);
addProps = ModelUtils.getAdditionalProperties(openAPI, map_with_undeclared_properties_anytype_3_sc);
addProps = ModelUtils.getAdditionalProperties(map_with_undeclared_properties_anytype_3_sc);
Assert.assertNotNull(addProps);
Assert.assertEquals(addProps, new Schema());
Assert.assertNotNull(map_with_undeclared_properties_anytype_3_cp.getAdditionalProperties());
@ -551,7 +551,7 @@ public class DefaultCodegenTest {
// additionalProperties: false.
Assert.assertNotNull(empty_map_sc.getAdditionalProperties());
Assert.assertEquals(empty_map_sc.getAdditionalProperties(), Boolean.FALSE);
addProps = ModelUtils.getAdditionalProperties(openAPI, empty_map_sc);
addProps = ModelUtils.getAdditionalProperties(empty_map_sc);
Assert.assertNull(addProps);
Assert.assertNull(empty_map_cp.getAdditionalProperties());
@ -576,7 +576,7 @@ public class DefaultCodegenTest {
Schema schema = openAPI.getComponents().getSchemas().get("AdditionalPropertiesClass");
Assert.assertNull(schema.getAdditionalProperties());
Schema addProps = ModelUtils.getAdditionalProperties(openAPI, schema);
Schema addProps = ModelUtils.getAdditionalProperties(schema);
Assert.assertNull(addProps);
}

View File

@ -133,7 +133,7 @@ public class ModelUtilsTest {
Schema commandSchema = ModelUtils.getSchema(openAPI, "Command");
Assert.assertTrue(ModelUtils.isModel(commandSchema));
Assert.assertFalse(ModelUtils.isFreeFormObject(openAPI, commandSchema));
Assert.assertFalse(ModelUtils.isFreeFormObject(commandSchema));
}
@Test
@ -238,23 +238,23 @@ public class ModelUtilsTest {
OpenAPI openAPI = new OpenAPI().openapi("3.0.0");
// Create initial "empty" object schema.
ObjectSchema objSchema = new ObjectSchema();
Assert.assertTrue(ModelUtils.isFreeFormObject(openAPI, objSchema));
Assert.assertTrue(ModelUtils.isFreeFormObject(objSchema));
// Set additionalProperties to an empty ObjectSchema.
objSchema.setAdditionalProperties(new ObjectSchema());
Assert.assertTrue(ModelUtils.isFreeFormObject(openAPI, objSchema));
Assert.assertTrue(ModelUtils.isFreeFormObject(objSchema));
// Add a single property to the schema (no longer a free-form object).
Map<String, Schema> props = new HashMap<>();
props.put("prop1", new StringSchema());
objSchema.setProperties(props);
Assert.assertFalse(ModelUtils.isFreeFormObject(openAPI, objSchema));
Assert.assertFalse(ModelUtils.isFreeFormObject(objSchema));
// Test a non-object schema
Assert.assertFalse(ModelUtils.isFreeFormObject(openAPI, new StringSchema()));
Assert.assertFalse(ModelUtils.isFreeFormObject(new StringSchema()));
// Test a null schema
Assert.assertFalse(ModelUtils.isFreeFormObject(openAPI, null));
Assert.assertFalse(ModelUtils.isFreeFormObject(null));
}
@Test