@@ -43,6 +43,7 @@ import com.github.hauner.openapi.spring.model.datatypes.NoneDataType
4343import com.github.hauner.openapi.spring.model.datatypes.OffsetDateTimeDataType
4444import com.github.hauner.openapi.spring.model.datatypes.SetDataType
4545import com.github.hauner.openapi.spring.model.datatypes.StringDataType
46+ import com.github.hauner.openapi.spring.model.datatypes.StringEnumDataType
4647
4748/**
4849 * Converter to map OpenAPI schemas to Java data types.
@@ -88,7 +89,7 @@ class DataTypeConverter {
8889 createObjectDataType (dataTypeInfo, dataTypes)
8990
9091 } else {
91- createSimpleDataType (dataTypeInfo)
92+ createSimpleDataType (dataTypeInfo, dataTypes )
9293 }
9394 }
9495
@@ -153,7 +154,7 @@ class DataTypeConverter {
153154 objectType
154155 }
155156
156- private DataType createSimpleDataType (SchemaInfo schemaInfo ) {
157+ private DataType createSimpleDataType (SchemaInfo schemaInfo , DataTypes dataTypes ) {
157158
158159 TargetType targetType = getMappedDataType (new PrimitiveSchemaType (schemaInfo))
159160 if (targetType) {
@@ -190,7 +191,7 @@ class DataTypeConverter {
190191 simpleType = new BooleanDataType ()
191192 break
192193 case ' string' :
193- simpleType = new StringDataType ( )
194+ simpleType = createStringDataType (schemaInfo, dataTypes )
194195 break
195196 case ' string/date' :
196197 simpleType = new LocalDateDataType ()
@@ -205,6 +206,22 @@ class DataTypeConverter {
205206 simpleType
206207 }
207208
209+ private DataType createStringDataType (SchemaInfo info , DataTypes dataTypes ) {
210+ if (! info. isEnum()) {
211+ return new StringDataType ()
212+ }
213+
214+ // in case of an inline definition the name may be lowercase, make sure the enum
215+ // class gets an uppercase name!
216+ def enumType = new StringEnumDataType (
217+ type : info. name. capitalize (),
218+ pkg : [options. packageName, ' model' ]. join (' .' ),
219+ values : info. enumValues)
220+
221+ dataTypes. add (enumType)
222+ enumType
223+ }
224+
208225 TargetType getMappedDataType (SchemaType schemaType ) {
209226 // check endpoint mappings
210227 List<TypeMappingX > endpointMatches = schemaType. matchEndpointMapping (options. typeMappings)
0 commit comments