diff --git a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/main/kotlin/io/github/springwolf/addons/kotlinx_serialization_model_converter/converter/KotlinxSerializationModelConverter.kt b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/main/kotlin/io/github/springwolf/addons/kotlinx_serialization_model_converter/converter/KotlinxSerializationModelConverter.kt index 9bc06a53b..8af081b9f 100644 --- a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/main/kotlin/io/github/springwolf/addons/kotlinx_serialization_model_converter/converter/KotlinxSerializationModelConverter.kt +++ b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/main/kotlin/io/github/springwolf/addons/kotlinx_serialization_model_converter/converter/KotlinxSerializationModelConverter.kt @@ -65,17 +65,14 @@ class KotlinxSerializationModelConverter(private val useFqn: Boolean = false) : val propertyType = property.returnType.jvmErasure when { - propertyType.isSubclassOf(List::class) -> { + propertyType.isSubclassOf(Collection::class) -> { propertySchema = ArraySchema() val value = (property.returnType.javaType as ParameterizedType).actualTypeArguments[0] propertySchema.items = resolveRefSchema(value, context) - } - propertyType.isSubclassOf(Set::class) -> { - propertySchema = ArraySchema() - val value = (property.returnType.javaType as ParameterizedType).actualTypeArguments[0] - propertySchema.items = resolveRefSchema(value, context) - propertySchema.uniqueItems = true + if (propertyType.isSubclassOf(Set::class)) { + propertySchema.uniqueItems = true + } } propertyType.isSubclassOf(Map::class) -> { diff --git a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/java/io/github/springwolf/addons/kotlinx_serialization_model_converter/converter/KotlinxSerializationTypeConverterTest.java b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/java/io/github/springwolf/addons/kotlinx_serialization_model_converter/converter/KotlinxSerializationTypeConverterTest.java index b5105a391..89934d490 100644 --- a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/java/io/github/springwolf/addons/kotlinx_serialization_model_converter/converter/KotlinxSerializationTypeConverterTest.java +++ b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/java/io/github/springwolf/addons/kotlinx_serialization_model_converter/converter/KotlinxSerializationTypeConverterTest.java @@ -68,6 +68,19 @@ void testClassWithListProperty() { assertThat(listField.getItems()).isNotNull(); assertThat(listField.getItems().getType()).isEqualTo("string"); } + + @Test + void testClassWithCollectionProperty() { + var result = modelConverters.readAll(new AnnotatedType(ClassWithCollectionProperty.class)); + Schema schema = result.get(ClassWithCollectionProperty.class.getSimpleName()); + + final Schema listField = (Schema) schema.getProperties().get("collection_field"); + assertThat(listField).isNotNull(); + assertThat(listField.getType()).isEqualTo("array"); + assertThat(listField.getNullable()).isFalse(); + assertThat(listField.getItems()).isNotNull(); + assertThat(listField.getItems().getType()).isEqualTo("string"); + } } @Nested diff --git a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/kotlin/io.github.springwolf.addons.kotlinx_serialization_model_converter.converter/SampleEvent.kt b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/kotlin/io.github.springwolf.addons.kotlinx_serialization_model_converter.converter/SampleEvent.kt index 3e4d77fb7..181c734b6 100644 --- a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/kotlin/io.github.springwolf.addons.kotlinx_serialization_model_converter.converter/SampleEvent.kt +++ b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/kotlin/io.github.springwolf.addons.kotlinx_serialization_model_converter.converter/SampleEvent.kt @@ -66,6 +66,12 @@ data class ClassWithSetProperty( val setField: Set, ) +@Serializable +data class ClassWithCollectionProperty( + @SerialName("collection_field") + val setField: Collection, +) + @Serializable data class ClassWithEnumProperty( @SerialName("enum_field")