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 8af081b9f..68c779e56 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 @@ -25,13 +25,14 @@ class KotlinxSerializationModelConverter(private val useFqn: Boolean = false) : annotatedType: AnnotatedType, context: ModelConverterContext, chain: Iterator ): Schema<*>? { if (annotatedType.type is Class<*>) { - val kClass = (annotatedType.type as Class<*>).kotlin + val jClass = annotatedType.type as Class<*> + val kClass = jClass.kotlin val isKotlinSerializable = kClass.findAnnotation() != null if (isKotlinSerializable) { val schema = ObjectSchema() schema.nullable = false - schema.name = kClass.simpleName + schema.name = getClassName(jClass) kClass.memberProperties.forEach { property -> val propertySchema = getPropertySchema(property, context) @@ -94,8 +95,10 @@ class KotlinxSerializationModelConverter(private val useFqn: Boolean = false) : private fun resolveRefSchema(type: Type, context: ModelConverterContext): Schema<*> { val typeSchema = context.resolve(AnnotatedType(type)) if (typeSchema.type == "object") { - val name = getClassName(type as Class<*>) - context.defineModel(name, typeSchema) + val typeClass = type as Class<*> + val name = getClassName(typeClass) + // Deletes any previously defined model with the simpleName + context.defineModel(name, typeSchema, type, typeClass.simpleName) return Schema().`$ref`(RefUtils.constructRef(name)) } return typeSchema 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 89934d490..86f94962c 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 @@ -129,7 +129,7 @@ void testClassWithNestedProperty() { assertThat(nestedClass.getType()).isNull(); assertThat(nestedClass.get$ref()).isEqualTo("#/components/schemas/ClassWithNestedProperty$NestedClass"); - final Schema nestedModel = result.get(ClassWithNestedProperty.NestedClass.class.getSimpleName()); + final Schema nestedModel = result.get("ClassWithNestedProperty$NestedClass"); assertThat(nestedModel).isNotNull(); assertThat(nestedModel.getType()).isEqualTo("object"); assertThat(nestedModel.getProperties()).hasSize(3); @@ -144,8 +144,7 @@ void serializeKotlin() { converters.addConverter(modelConverter); var media = converters.readAll(new AnnotatedType(SampleEvent.class)); - // FIXME: The NestedClass is duplicated - assertThat(media).hasSize(3); + assertThat(media).hasSize(2); final Schema model = media.get(SampleEvent.class.getSimpleName()); assertThat(model).isNotNull(); assertThat(model.getType()).isEqualTo("object"); diff --git a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/resources/fqn.json b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/resources/fqn.json index 216ff335e..b282c6f23 100644 --- a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/resources/fqn.json +++ b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/resources/fqn.json @@ -1,22 +1,5 @@ { - "NestedClass" : { - "type" : "object", - "properties" : { - "color" : { - "type" : "string", - "enum" : [ "RED", "GREEN", "BLUE" ] - }, - "id" : { - "type" : "integer", - "format" : "int32" - }, - "name" : { - "type" : "string" - } - }, - "required" : [ "color", "id", "name" ] - }, - "SampleEvent" : { + "io.github.springwolf.addons.kotlinx_serialization_model_converter.converter.SampleEvent" : { "type" : "object", "properties" : { "boolean_field" : { diff --git a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/resources/simple.json b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/resources/simple.json index c97730030..8f7182887 100644 --- a/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/resources/simple.json +++ b/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter/src/test/resources/simple.json @@ -1,21 +1,4 @@ { - "NestedClass" : { - "type" : "object", - "properties" : { - "color" : { - "type" : "string", - "enum" : [ "RED", "GREEN", "BLUE" ] - }, - "id" : { - "type" : "integer", - "format" : "int32" - }, - "name" : { - "type" : "string" - } - }, - "required" : [ "color", "id", "name" ] - }, "SampleEvent" : { "type" : "object", "properties" : {