@@ -32,8 +32,8 @@ import com.github.hauner.openapi.spring.model.datatypes.CollectionDataType
3232import com.github.hauner.openapi.spring.model.datatypes.DataTypeConstraints
3333import com.github.hauner.openapi.spring.model.datatypes.ListDataType
3434import com.github.hauner.openapi.spring.model.datatypes.LocalDateDataType
35- import com.github.hauner.openapi.spring.model.datatypes.MapDataType
3635import com.github.hauner.openapi.spring.model.datatypes.MappedDataType
36+ import com.github.hauner.openapi.spring.model.datatypes.MappedMapDataType
3737import com.github.hauner.openapi.spring.model.datatypes.ObjectDataType
3838import com.github.hauner.openapi.spring.model.datatypes.DataType
3939import com.github.hauner.openapi.spring.model.datatypes.DoubleDataType
@@ -74,17 +74,11 @@ class DataTypeConverter {
7474 */
7575 DataType convert (SchemaInfo dataTypeInfo , DataTypes dataTypes ) {
7676
77- if (dataTypeInfo. isArray ()) {
78- createArrayDataType (dataTypeInfo, dataTypes)
79-
80- } else if (dataTypeInfo. isRefObject ()) {
81- def datatype = dataTypes. findRef (dataTypeInfo. ref)
82- if (datatype) {
83- return datatype
84- }
77+ if (dataTypeInfo. isRefObject ()) {
78+ createRefDataType(dataTypeInfo, dataTypes)
8579
86- def refTypeInfo = dataTypeInfo. buildForRef ()
87- convert (refTypeInfo , dataTypes)
80+ } else if ( dataTypeInfo. isArray ()) {
81+ createArrayDataType (dataTypeInfo , dataTypes)
8882
8983 } else if (dataTypeInfo. isObject ()) {
9084 createObjectDataType (dataTypeInfo, dataTypes)
@@ -117,41 +111,48 @@ class DataTypeConverter {
117111 arrayType
118112 }
119113
114+ private DataType createRefDataType (SchemaInfo schemaInfo , DataTypes dataTypes ) {
115+ convert (schemaInfo. buildForRef (), dataTypes)
116+ }
117+
120118 private DataType createObjectDataType (SchemaInfo schemaInfo , DataTypes dataTypes ) {
121119 def objectType
122120
123121 TargetType targetType = getMappedDataType (new ObjectSchemaType (schemaInfo))
124122 if (targetType) {
125- objectType = new MappedDataType (
126- type : targetType. name,
127- pkg : targetType. pkg,
128- genericTypes : targetType. genericNames
129- )
130-
131- dataTypes. add (schemaInfo. name, objectType)
132- return objectType
123+ switch (targetType?. typeName) {
124+ case Map . name:
125+ case ' org.springframework.util.MultiValueMap' :
126+ objectType = new MappedMapDataType (
127+ type : targetType. name,
128+ pkg : targetType. pkg,
129+ genericTypes : targetType. genericNames
130+ )
131+ return objectType
132+ default :
133+ objectType = new MappedDataType (
134+ type : targetType. name,
135+ pkg : targetType. pkg,
136+ genericTypes : targetType. genericNames
137+ )
138+
139+ // probably not required anymore
140+ dataTypes. add (schemaInfo. name, objectType)
141+ return objectType
142+ }
133143 }
134144
135- switch (schemaInfo. getXJavaType ()) {
136- case Map . name:
137- objectType = new MapDataType ()
138- dataTypes. add (schemaInfo. name, objectType)
139- break
140-
141- default :
142- objectType = new ObjectDataType (
143- type : schemaInfo. name,
144- pkg : [options. packageName, ' model' ]. join (' .' )
145- )
146-
147- schemaInfo. eachProperty { String propName , SchemaInfo propDataTypeInfo ->
148- def propType = convert (propDataTypeInfo, dataTypes)
149- objectType. addObjectProperty (propName, propType)
150- }
145+ objectType = new ObjectDataType (
146+ type : schemaInfo. name,
147+ pkg : [options. packageName, ' model' ]. join (' .' )
148+ )
151149
152- dataTypes. add (objectType)
150+ schemaInfo. eachProperty { String propName , SchemaInfo propDataTypeInfo ->
151+ def propType = convert (propDataTypeInfo, dataTypes)
152+ objectType. addObjectProperty (propName, propType)
153153 }
154154
155+ dataTypes. add (objectType)
155156 objectType
156157 }
157158
0 commit comments