@@ -10,6 +10,7 @@ import com.google.googlejavaformat.java.JavaFormatterOptions
1010import io.openapiprocessor.core.converter.ApiOptions
1111import io.openapiprocessor.core.model.Api
1212import io.openapiprocessor.core.model.Interface
13+ import io.openapiprocessor.core.model.datatypes.InterfaceDataType
1314import io.openapiprocessor.core.model.datatypes.StringEnumDataType
1415import io.openapiprocessor.core.support.toURL
1516import io.openapiprocessor.core.model.datatypes.ModelDataType
@@ -29,7 +30,8 @@ class ApiWriter(
2930 private val options : ApiOptions ,
3031 private val interfaceWriter : InterfaceWriter ,
3132 private val dataTypeWriter : DataTypeWriter ,
32- private val enumWriter : StringEnumWriter
33+ private val enumWriter : StringEnumWriter ,
34+ private val interfaceDataTypeWriter : InterfaceDataTypeWriter
3335) {
3436 private var log: Logger = LoggerFactory .getLogger(this .javaClass.name)
3537
@@ -46,6 +48,7 @@ class ApiWriter(
4648 createTargetFolders()
4749 writeInterfaces(api)
4850 writeObjectDataTypes(api)
51+ writeInterfaceDataTypes(api)
4952 writeEnumDataTypes(api)
5053 }
5154
@@ -67,6 +70,15 @@ class ApiWriter(
6770 }
6871 }
6972
73+ private fun writeInterfaceDataTypes (api : Api ) {
74+ api.forEachInterfaceDataType() {
75+ val target = modelFolder.resolve (" ${it.getTypeName()} .java" )
76+ val writer = BufferedWriter (PathWriter (target))
77+ writeDataType(writer, it)
78+ writer.close()
79+ }
80+ }
81+
7082 private fun writeEnumDataTypes (api : Api ) {
7183 api.forEachEnumDataType {
7284 val target = modelFolder.resolve(" ${it.getTypeName()} .java" )
@@ -88,6 +100,12 @@ class ApiWriter(
88100 writer.write(format(raw.toString ()))
89101 }
90102
103+ private fun writeDataType (writer : Writer , dataType : InterfaceDataType ) {
104+ val raw = StringWriter ()
105+ interfaceDataTypeWriter.write(raw, dataType)
106+ writer.write(format(raw.toString ()))
107+ }
108+
91109 private fun writeEnumDataType (writer : Writer , enumDataType : StringEnumDataType ) {
92110 val raw = StringWriter ()
93111 enumWriter.write(raw, enumDataType)
0 commit comments