diff --git a/src/main/antlr/To.g4 b/src/main/antlr/To.g4 index 96805b41..2feba67c 100644 --- a/src/main/antlr/To.g4 +++ b/src/main/antlr/To.g4 @@ -41,7 +41,6 @@ typeArgumentList typeArgument : type | '?' - | .*? ; diff --git a/src/main/kotlin/io/openapiprocessor/core/model/datatypes/MappedDataType.kt b/src/main/kotlin/io/openapiprocessor/core/model/datatypes/MappedDataType.kt index 6e1a2d5d..67fd9c3c 100644 --- a/src/main/kotlin/io/openapiprocessor/core/model/datatypes/MappedDataType.kt +++ b/src/main/kotlin/io/openapiprocessor/core/model/datatypes/MappedDataType.kt @@ -44,7 +44,7 @@ open class MappedDataType( } override fun getImports(): Set { - return setOf("${getPackageName()}.$type") + genericTypes + return setOf("${getPackageName()}.$type") + genericTypes.filter { it != "?" } } private fun getGenericTypeNames(): List { diff --git a/src/main/kotlin/io/openapiprocessor/core/processor/mapping/v2/parser/ToExtractor.kt b/src/main/kotlin/io/openapiprocessor/core/processor/mapping/v2/parser/ToExtractor.kt index fbdd72d0..3c5d01aa 100644 --- a/src/main/kotlin/io/openapiprocessor/core/processor/mapping/v2/parser/ToExtractor.kt +++ b/src/main/kotlin/io/openapiprocessor/core/processor/mapping/v2/parser/ToExtractor.kt @@ -35,9 +35,12 @@ class ToExtractor: ToBaseListener() { ctx.typeArguments () ?.typeArgumentList () ?.typeArgument () - ?.filter { it.type() != null } ?.forEach { - typeArguments.add(it.type ().text) + if (it.text == "?") { + typeArguments.add("?") + } else if (it.type() != null) { + typeArguments.add(it.type ().text) + } } } diff --git a/src/test/groovy/com/github/hauner/openapi/core/model/datatypes/MappedDataTypeSpec.groovy b/src/test/groovy/com/github/hauner/openapi/core/model/datatypes/MappedDataTypeSpec.groovy index 57a2b4e5..599aa5e5 100644 --- a/src/test/groovy/com/github/hauner/openapi/core/model/datatypes/MappedDataTypeSpec.groovy +++ b/src/test/groovy/com/github/hauner/openapi/core/model/datatypes/MappedDataTypeSpec.groovy @@ -32,6 +32,7 @@ class MappedDataTypeSpec extends Specification { where: generics | typeName [] | 'Foo' + ['?'] | 'Foo' ['java.lang.String'] | 'Foo' ['java.lang.String', 'java.lang.String'] | 'Foo' } @@ -46,6 +47,7 @@ class MappedDataTypeSpec extends Specification { where: generics | imports [] | ['model.Foo'] + ['?'] | ['model.Foo'] ['java.lang.String'] | ['model.Foo', 'java.lang.String'] ['java.lang.String', 'java.lang.String'] | ['model.Foo', 'java.lang.String'] } diff --git a/src/test/groovy/io/openapiprocessor/core/processor/mapping/v2/parser/ToParserSpec.groovy b/src/test/groovy/io/openapiprocessor/core/processor/mapping/v2/parser/ToParserSpec.groovy index 9722b0dc..813773a6 100644 --- a/src/test/groovy/io/openapiprocessor/core/processor/mapping/v2/parser/ToParserSpec.groovy +++ b/src/test/groovy/io/openapiprocessor/core/processor/mapping/v2/parser/ToParserSpec.groovy @@ -35,7 +35,7 @@ class ToParserSpec extends Specification { 'io.openapiprocessor.Foo' | 'io.openapiprocessor.Foo' | [] ' io . openapiprocessor . Foo ' | 'io.openapiprocessor.Foo' | [] 'A<>' | 'A' | [] - 'A' | 'A' | [] + 'A' | 'A' | ['?'] 'A' | 'A' | ['b.B', 'c.C'] 'A' | 'A' | ['B', 'C'] }