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

Commit 6a2a844

Browse files
committed
#91, should be able to distinguish between name & type name
1 parent 19fa9b2 commit 6a2a844

File tree

7 files changed

+71
-77
lines changed

7 files changed

+71
-77
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ class ApiConverter(
186186
val addType = MappedDataType(
187187
tt.getName(),
188188
tt.getPkg(),
189-
tt.genericNames,
189+
tt.genericNames.map { DataTypeName(it) },
190190
null,
191191
false
192192
)

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class DataTypeConverter(
8585
return MappedDataType(
8686
targetType.getName(),
8787
targetType.getPkg(),
88-
targetType.genericNames,
88+
targetType.genericNames.map { DataTypeName(it) },
8989
null,
9090
schemaInfo.getDeprecated()
9191
)
@@ -203,14 +203,14 @@ class DataTypeConverter(
203203
return MappedMapDataType(
204204
targetType.getName(),
205205
targetType.getPkg(),
206-
targetType.genericNames,
206+
targetType.genericNames.map { DataTypeName(it) },
207207
null,
208208
schemaInfo.getDeprecated())
209209
else -> {
210210
return MappedDataType(
211211
targetType.getName(),
212212
targetType.getPkg(),
213-
targetType.genericNames,
213+
targetType.genericNames.map { DataTypeName(it) },
214214
null,
215215
schemaInfo.getDeprecated()
216216
)
@@ -247,7 +247,7 @@ class DataTypeConverter(
247247
return MappedDataType (
248248
targetType.getName(),
249249
targetType.getPkg(),
250-
targetType.genericNames,
250+
targetType.genericNames.map { DataTypeName(it) },
251251
null,
252252
schemaInfo.getDeprecated(),
253253
true

src/main/kotlin/io/openapiprocessor/core/model/DataTypeCollector.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ class DataTypeCollector(
3030
}
3131
is MappedDataType -> {
3232
dataType.genericTypes
33-
.filter { it.startsWith(generatedPackageName) }
33+
.filter { it.id.startsWith(generatedPackageName) }
3434
.forEach {
35-
val name = it.substringAfterLast(".")
35+
val name = it.id.substringAfterLast(".")
3636
val found = dataTypes.find(name)
3737
if (found != null) {
3838
collect(found)

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ package io.openapiprocessor.core.model.datatypes
99
* OpenAPI schema mapped to a java type.
1010
*/
1111
open class MappedDataType(
12-
1312
private val type: String,
1413
private val pkg: String,
15-
/*private*/ val genericTypes: List<String> = emptyList(),
14+
val genericTypes: List<DataTypeName> = emptyList(),
1615
override val constraints: DataTypeConstraints? = null,
1716
override val deprecated: Boolean = false,
1817
val simpleDataType: Boolean = false
@@ -23,7 +22,7 @@ open class MappedDataType(
2322
return if (genericTypes.isEmpty()) {
2423
type
2524
} else {
26-
"${type}<${getGenericTypeNames().joinToString(", ")}>"
25+
"${type}<${genericTypeNames.joinToString(", ")}>"
2726
}
2827
}
2928

@@ -32,17 +31,18 @@ open class MappedDataType(
3231
}
3332

3433
override fun getImports(): Set<String> {
35-
return setOf("${getPackageName()}.$type") + genericTypes.filter { it != "?" }
34+
return setOf("${getPackageName()}.$type") + genericTypes.map { it.type }.filter { it != "?" }
3635
}
3736

38-
private fun getGenericTypeNames(): List<String> {
39-
return genericTypes.map {
40-
getClassName (it)
37+
private val genericTypeNames: List<String>
38+
get() {
39+
return genericTypes.map {
40+
getClassName(it.type)
41+
}
4142
}
42-
}
4343

44-
private fun getClassName(ref: String): String {
45-
return ref.substring(ref.lastIndexOf('.') + 1)
44+
private fun getClassName(type: String): String {
45+
return type.substringAfterLast('.')
4646
}
4747

4848
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ package io.openapiprocessor.core.model.datatypes
2828
class MappedMapDataType(
2929
type: String,
3030
pkg: String,
31-
genericTypes: List<String> = emptyList(),
31+
genericTypes: List<DataTypeName> = emptyList(),
3232
constraints: DataTypeConstraints? = null,
3333
deprecated: Boolean = false
3434
) : MappedDataType(type, pkg, genericTypes, constraints, deprecated)

src/test/groovy/com/github/hauner/openapi/core/model/datatypes/MappedDataTypeSpec.groovy

Lines changed: 0 additions & 59 deletions
This file was deleted.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Copyright 2019 https://github.com/openapi-processor/openapi-processor-core
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core.model.datatypes
7+
8+
import io.kotest.core.spec.style.StringSpec
9+
import io.kotest.datatest.withData
10+
import io.kotest.matchers.shouldBe
11+
12+
class MappedDataTypeSpec: StringSpec ({
13+
14+
"get name of type with (optional) generic parameters" {
15+
class TypeName (val generics: List<String>, val typeName: String)
16+
17+
withData(
18+
TypeName(emptyList(), "Foo"),
19+
TypeName(listOf("?"), "Foo<?>"),
20+
TypeName(listOf("java.lang.String"), "Foo<String>"),
21+
TypeName(listOf("java.lang.String", "java.lang.String"), "Foo<String, String>")
22+
) { data ->
23+
val type = MappedDataType(
24+
"Foo",
25+
"model",
26+
data.generics.map { DataTypeName(it) })
27+
28+
type.getTypeName() shouldBe data.typeName
29+
}
30+
}
31+
32+
"get imports of type with (optional) generic parameters" {
33+
class TypeImports (val generics: List<String>, val imports: List<String>)
34+
35+
withData(
36+
TypeImports(emptyList(), listOf("model.Foo")),
37+
TypeImports(listOf("?"), listOf("model.Foo")),
38+
TypeImports(
39+
listOf("java.lang.String"),
40+
listOf("model.Foo", "java.lang.String")),
41+
TypeImports(
42+
listOf("java.lang.String", "java.lang.String"),
43+
listOf("model.Foo", "java.lang.String"))
44+
) { data ->
45+
val type = MappedDataType(
46+
"Foo",
47+
"model",
48+
data.generics.map { DataTypeName(it) })
49+
50+
type.getImports() shouldBe data.imports
51+
}
52+
}
53+
})

0 commit comments

Comments
 (0)