Skip to content
This repository was archived by the owner on Mar 16, 2025. It is now read-only.

Commit 0d47dd9

Browse files
committed
#91, add model suffix to generic parameters
1 parent 50a0a24 commit 0d47dd9

File tree

3 files changed

+49
-7
lines changed

3 files changed

+49
-7
lines changed

src/main/kotlin/io/openapiprocessor/core/converter/DataTypeConverter.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,24 @@ class DataTypeConverter(
7474
}
7575

7676
fun createMappedDataType(targetType: TargetType, schemaInfo: SchemaInfo? = null): MappedDataType {
77+
val genericDataTypeNames = mutableListOf<DataTypeName>()
78+
79+
targetType.genericNames.forEach {
80+
val dataTypeName = when {
81+
it.startsWith(options.packageName) -> {
82+
DataTypeName(it, getTypeNameWithSuffix(it))
83+
}
84+
else -> {
85+
DataTypeName(it)
86+
}
87+
}
88+
genericDataTypeNames.add(dataTypeName)
89+
}
90+
7791
return MappedDataType(
7892
targetType.getName(),
7993
targetType.getPkg(),
80-
targetType.genericNames.map { DataTypeName(it) },
94+
genericDataTypeNames,
8195
null,
8296
schemaInfo?.getDeprecated() ?: false
8397
)

src/main/kotlin/io/openapiprocessor/core/model/datatypes/MappedDataType.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ open class MappedDataType(
1919
): DataType {
2020

2121
override fun getName(): String {
22+
return if (genericTypes.isEmpty()) {
23+
type
24+
} else {
25+
"${type}<${genericIds.joinToString(", ")}>"
26+
}
27+
}
28+
29+
override fun getTypeName(): String {
2230
return if (genericTypes.isEmpty()) {
2331
type
2432
} else {
@@ -42,15 +50,22 @@ open class MappedDataType(
4250
.toSet()
4351
}
4452

53+
private val genericIds: List<String>
54+
get() {
55+
return genericTypes.map {
56+
getClassName(it.id)
57+
}
58+
}
59+
4560
private val genericTypeNames: List<String>
4661
get() {
4762
return genericTypes.map {
4863
getClassName(it.type)
4964
}
5065
}
5166

52-
private fun getClassName(type: String): String {
53-
return type.substringAfterLast('.')
67+
private fun getClassName(source: String): String {
68+
return source.substringAfterLast('.')
5469
}
5570

5671
}

src/test/kotlin/io/openapiprocessor/core/converter/DataTypeConverterSuffixSpec.kt

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ import io.kotest.core.spec.style.StringSpec
99
import io.kotest.matchers.shouldBe
1010
import io.kotest.matchers.types.shouldBeInstanceOf
1111
import io.kotest.matchers.types.shouldBeSameInstanceAs
12+
import io.openapiprocessor.core.converter.mapping.TargetType
1213
import io.openapiprocessor.core.model.DataTypes
1314
import io.openapiprocessor.core.model.HttpMethod
14-
import io.openapiprocessor.core.model.datatypes.AllOfObjectDataType
15-
import io.openapiprocessor.core.model.datatypes.ArrayDataType
16-
import io.openapiprocessor.core.model.datatypes.ObjectDataType
17-
import io.openapiprocessor.core.model.datatypes.StringEnumDataType
15+
import io.openapiprocessor.core.model.datatypes.*
1816
import io.openapiprocessor.core.support.getBodySchemaInfo
1917
import io.openapiprocessor.core.support.getSchemaInfo
2018
import io.openapiprocessor.core.support.parse
@@ -215,4 +213,19 @@ components:
215213
datatype.getTypeName().shouldBe("FooSuffix[]")
216214
}
217215

216+
"adds suffix to mapped data type generics" {
217+
val options = ApiOptions()
218+
options.packageName = "model"
219+
options.modelNameSuffix = "Suffix"
220+
221+
// when:
222+
val converter = DataTypeConverter(options)
223+
val datatype = converter.createMappedDataType(
224+
TargetType("other.Foo", listOf("model.Bar")))
225+
226+
// then:
227+
datatype.shouldBeInstanceOf<MappedDataType>()
228+
datatype.getName().shouldBe("Foo<Bar>")
229+
datatype.getTypeName().shouldBe("Foo<BarSuffix>")
230+
}
218231
})

0 commit comments

Comments
 (0)