@@ -1418,17 +1418,19 @@ public String getSchemaType(Schema schema) {
1418
1418
}
1419
1419
}
1420
1420
1421
- if (StringUtils .isNotBlank (schema .get$ref ())) { // reference to another definition/schema
1421
+ Schema unaliasSchema = ModelUtils .unaliasSchema (globalSchemas , schema );
1422
+
1423
+ if (StringUtils .isNotBlank (unaliasSchema .get$ref ())) { // reference to another definition/schema
1422
1424
// get the schema/model name from $ref
1423
- String schemaName = ModelUtils .getSimpleRef (schema .get$ref ());
1425
+ String schemaName = ModelUtils .getSimpleRef (unaliasSchema .get$ref ());
1424
1426
if (StringUtils .isNotEmpty (schemaName )) {
1425
1427
return getAlias (schemaName );
1426
1428
} else {
1427
- LOGGER .warn ("Error obtaining the datatype from ref:" + schema .get$ref () + ". Default to 'object'" );
1429
+ LOGGER .warn ("Error obtaining the datatype from ref:" + unaliasSchema .get$ref () + ". Default to 'object'" );
1428
1430
return "object" ;
1429
1431
}
1430
1432
} else { // primitive type or model
1431
- return getAlias (getPrimitiveType (schema ));
1433
+ return getAlias (getPrimitiveType (unaliasSchema ));
1432
1434
}
1433
1435
}
1434
1436
@@ -2115,6 +2117,8 @@ public CodegenProperty fromProperty(String name, Schema p) {
2115
2117
allowableValues .put ("values" , _enum );
2116
2118
property .allowableValues = allowableValues ;
2117
2119
}
2120
+ } else if (ModelUtils .isFreeFormObject (p )){
2121
+ property .isFreeFormObject = true ;
2118
2122
}
2119
2123
2120
2124
property .dataType = getTypeDeclaration (p );
@@ -2918,7 +2922,7 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
2918
2922
}
2919
2923
2920
2924
if (parameter .getSchema () != null ) {
2921
- Schema parameterSchema = parameter .getSchema ();
2925
+ Schema parameterSchema = ModelUtils . unaliasSchema ( globalSchemas , parameter .getSchema () );
2922
2926
if (parameterSchema == null ) {
2923
2927
LOGGER .warn ("warning! Schema not found for parameter \" " + parameter .getName () + "\" , using String" );
2924
2928
parameterSchema = new StringSchema ().description ("//TODO automatically added by openapi-generator due to missing type definition." );
@@ -2992,7 +2996,6 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
2992
2996
// set boolean flag (e.g. isString)
2993
2997
setParameterBooleanFlagWithCodegenProperty (codegenParameter , codegenProperty );
2994
2998
2995
-
2996
2999
String parameterDataType = this .getParameterDataType (parameter , parameterSchema );
2997
3000
if (parameterDataType != null ) {
2998
3001
codegenParameter .dataType = parameterDataType ;
@@ -4635,6 +4638,25 @@ public CodegenParameter fromRequestBody(RequestBody
4635
4638
codegenProperty = codegenProperty .items ;
4636
4639
}
4637
4640
4641
+ } else if (ModelUtils .isFreeFormObject (schema )) {
4642
+ // HTTP request body is free form object
4643
+ CodegenProperty codegenProperty = fromProperty ("FREE_FORM_REQUEST_BODY" , schema );
4644
+ if (codegenProperty != null ) {
4645
+ if (StringUtils .isEmpty (bodyParameterName )) {
4646
+ codegenParameter .baseName = "body" ; // default to body
4647
+ } else {
4648
+ codegenParameter .baseName = bodyParameterName ;
4649
+ }
4650
+ codegenParameter .isPrimitiveType = true ;
4651
+ codegenParameter .baseType = codegenProperty .baseType ;
4652
+ codegenParameter .dataType = codegenProperty .dataType ;
4653
+ codegenParameter .description = codegenProperty .description ;
4654
+ codegenParameter .paramName = toParamName (codegenParameter .baseName );
4655
+ }
4656
+ setParameterBooleanFlagWithCodegenProperty (codegenParameter , codegenProperty );
4657
+ // set nullable
4658
+ setParameterNullable (codegenParameter , codegenProperty );
4659
+
4638
4660
} else if (ModelUtils .isObjectSchema (schema ) || ModelUtils .isComposedSchema (schema )) {
4639
4661
CodegenModel codegenModel = null ;
4640
4662
if (StringUtils .isNotBlank (name )) {
0 commit comments