forked from loafle/openapi-generator-original
Refactor getAdditionalProperties, isFreeFormObject (#16065)
* refactor getAdditionalProperties, isFreeFormObject * change warn to debug
This commit is contained in:
parent
16c149a91e
commit
c6f6ef92d0
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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)) {
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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" //
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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) + ">";
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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) + ">";
|
||||
}
|
||||
|
@ -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)) {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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()";
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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)) {
|
||||
|
@ -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) + ")";
|
||||
}
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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";
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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) + ")";
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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) + "]";
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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 + "]";
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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)) {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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());
|
||||
|
@ -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());
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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()) + '>';
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user