diff --git a/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/components/DefaultComponentsService.java b/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/components/DefaultComponentsService.java index f96be0aed..9e24c1861 100644 --- a/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/components/DefaultComponentsService.java +++ b/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/components/DefaultComponentsService.java @@ -182,9 +182,9 @@ private void processAsyncApiPayloadAnnotation(Map schemas, Strin } private String registerString() { - String schemaName = "String"; + String schemaName = String.class.getName(); // TODO: take fqn into account StringSchema schema = new StringSchema(); - schema.setName(String.class.getName()); + schema.setName(schemaName); this.schemas.put(schemaName, schema); postProcessSchema(schema, DEFAULT_CONTENT_TYPE); diff --git a/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/scanners/common/payload/PayloadService.java b/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/scanners/common/payload/PayloadService.java index 78c43986f..a2bf85412 100644 --- a/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/scanners/common/payload/PayloadService.java +++ b/springwolf-core/src/main/java/io/github/springwolf/core/asyncapi/scanners/common/payload/PayloadService.java @@ -54,7 +54,7 @@ private Pair buildSchema(String contentType, Class payl SchemaObject schema = componentsService.resolveSchema(componentsSchemaName); schema.setTitle(payloadType.getSimpleName()); - return Pair.of(payloadType.getName(), schema); + return Pair.of(componentsSchemaName, schema); } private Pair useUnusedPayload() { diff --git a/springwolf-core/src/test/java/io/github/springwolf/core/asyncapi/scanners/common/payload/PayloadServiceTest.java b/springwolf-core/src/test/java/io/github/springwolf/core/asyncapi/scanners/common/payload/PayloadServiceTest.java index dc730f839..ae8bd3c1c 100644 --- a/springwolf-core/src/test/java/io/github/springwolf/core/asyncapi/scanners/common/payload/PayloadServiceTest.java +++ b/springwolf-core/src/test/java/io/github/springwolf/core/asyncapi/scanners/common/payload/PayloadServiceTest.java @@ -54,7 +54,7 @@ public void shouldUsePayloadFromAsyncOperationAnnotation() { var result = payloadService.extractSchema(asyncOperation, null); // then - assertThat(result.getKey()).isEqualTo("java.lang.String"); + assertThat(result.getKey()).isEqualTo(schemaName); assertThat(result.getValue()).isEqualTo(schemaObject); } @@ -81,7 +81,7 @@ public void shouldExtractPayloadFromMethod() { var result = payloadService.extractSchema(asyncOperation, method); // then - assertThat(result.getKey()).isEqualTo("java.lang.String"); + assertThat(result.getKey()).isEqualTo(schemaName); assertThat(result.getValue()).isEqualTo(schemaObject); } diff --git a/springwolf-core/src/test/java/io/github/springwolf/core/integrationtests/AsyncApiDocumentIntegrationTest.java b/springwolf-core/src/test/java/io/github/springwolf/core/integrationtests/AsyncApiDocumentIntegrationTest.java index 3e3bd0a58..64508e227 100644 --- a/springwolf-core/src/test/java/io/github/springwolf/core/integrationtests/AsyncApiDocumentIntegrationTest.java +++ b/springwolf-core/src/test/java/io/github/springwolf/core/integrationtests/AsyncApiDocumentIntegrationTest.java @@ -40,7 +40,8 @@ void asyncListenerAnnotationIsFound() { assertThat(asyncAPI.getChannels()).containsOnlyKeys("listener-channel"); assertThat(asyncAPI.getOperations()).containsOnlyKeys("listener-channel_receive_listen"); assertThat(asyncAPI.getComponents().getMessages()).containsOnlyKeys("java.lang.String"); - assertThat(asyncAPI.getComponents().getSchemas()).containsOnlyKeys("HeadersNotDocumented", "String"); + assertThat(asyncAPI.getComponents().getSchemas()) + .containsOnlyKeys("HeadersNotDocumented", "java.lang.String"); } } @@ -63,7 +64,8 @@ void asyncPublisherAnnotationIsFound() { assertThat(asyncAPI.getChannels()).containsOnlyKeys("publisher-channel"); assertThat(asyncAPI.getOperations()).containsOnlyKeys("publisher-channel_send_publish"); assertThat(asyncAPI.getComponents().getMessages()).containsOnlyKeys("java.lang.String"); - assertThat(asyncAPI.getComponents().getSchemas()).containsOnlyKeys("HeadersNotDocumented", "String"); + assertThat(asyncAPI.getComponents().getSchemas()) + .containsOnlyKeys("HeadersNotDocumented", "java.lang.String"); } } diff --git a/springwolf-examples/springwolf-kafka-example/src/test/resources/asyncapi.json b/springwolf-examples/springwolf-kafka-example/src/test/resources/asyncapi.json index 443f5611b..3dec9a19e 100644 --- a/springwolf-examples/springwolf-kafka-example/src/test/resources/asyncapi.json +++ b/springwolf-examples/springwolf-kafka-example/src/test/resources/asyncapi.json @@ -55,14 +55,14 @@ }, "multi-payload-topic": { "messages": { + "io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount": { + "$ref": "#/components/messages/io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" + }, "io.github.springwolf.examples.kafka.dtos.AnotherPayloadDto": { "$ref": "#/components/messages/io.github.springwolf.examples.kafka.dtos.AnotherPayloadDto" }, "io.github.springwolf.examples.kafka.dtos.ExamplePayloadDto": { "$ref": "#/components/messages/io.github.springwolf.examples.kafka.dtos.ExamplePayloadDto" - }, - "javax.money.MonetaryAmount": { - "$ref": "#/components/messages/javax.money.MonetaryAmount" } } }, @@ -80,11 +80,11 @@ }, "string-topic": { "messages": { + "String": { + "$ref": "#/components/messages/String" + }, "io.github.springwolf.examples.kafka.consumers.StringConsumer$StringEnvelope": { "$ref": "#/components/messages/io.github.springwolf.examples.kafka.consumers.StringConsumer$StringEnvelope" - }, - "java.lang.String": { - "$ref": "#/components/messages/java.lang.String" } } }, @@ -443,16 +443,16 @@ "type": "string", "description": "Spring Type Id Header", "enum": [ - "javax.money.MonetaryAmount" + "io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" ], "examples": [ - "javax.money.MonetaryAmount" + "io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" ] } }, "examples": [ { - "__TypeId__": "javax.money.MonetaryAmount" + "__TypeId__": "io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" } ], "x-json-schema": { @@ -461,7 +461,7 @@ "__TypeId__": { "description": "Spring Type Id Header", "enum": [ - "javax.money.MonetaryAmount" + "io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" ], "type": "string" } @@ -476,16 +476,16 @@ "type": "string", "description": "Spring Type Id Header", "enum": [ - "java.lang.String" + "String" ], "examples": [ - "java.lang.String" + "String" ] } }, "examples": [ { - "__TypeId__": "java.lang.String" + "__TypeId__": "String" } ], "x-json-schema": { @@ -494,7 +494,7 @@ "__TypeId__": { "description": "Spring Type Id Header", "enum": [ - "java.lang.String" + "String" ], "type": "string" } @@ -1078,6 +1078,49 @@ } }, "messages": { + "String": { + "headers": { + "$ref": "#/components/schemas/SpringKafkaDefaultHeaders-String" + }, + "payload": { + "schemaFormat": "application/vnd.aai.asyncapi+json;version=3.0.0", + "schema": { + "$ref": "#/components/schemas/String" + } + }, + "name": "String", + "title": "String", + "bindings": { + "kafka": { + "bindingVersion": "0.5.0" + } + } + }, + "io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount": { + "headers": { + "$ref": "#/components/schemas/SpringKafkaDefaultHeaders-MonetaryAmount" + }, + "payload": { + "schemaFormat": "application/vnd.aai.asyncapi+json;version=3.0.0", + "schema": { + "$ref": "#/components/schemas/io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" + } + }, + "name": "io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount", + "title": "MonetaryAmount", + "bindings": { + "kafka": { + "key": { + "type": "string", + "description": "Kafka Consumer Message Key", + "examples": [ + "example-key" + ] + }, + "bindingVersion": "0.5.0" + } + } + }, "io.github.springwolf.examples.kafka.consumers.StringConsumer$StringEnvelope": { "headers": { "$ref": "#/components/schemas/HeadersNotUsed" @@ -1232,49 +1275,6 @@ "bindingVersion": "0.5.0" } } - }, - "java.lang.String": { - "headers": { - "$ref": "#/components/schemas/SpringKafkaDefaultHeaders-String" - }, - "payload": { - "schemaFormat": "application/vnd.aai.asyncapi+json;version=3.0.0", - "schema": { - "$ref": "#/components/schemas/String" - } - }, - "name": "java.lang.String", - "title": "String", - "bindings": { - "kafka": { - "bindingVersion": "0.5.0" - } - } - }, - "javax.money.MonetaryAmount": { - "headers": { - "$ref": "#/components/schemas/SpringKafkaDefaultHeaders-MonetaryAmount" - }, - "payload": { - "schemaFormat": "application/vnd.aai.asyncapi+json;version=3.0.0", - "schema": { - "$ref": "#/components/schemas/io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" - } - }, - "name": "javax.money.MonetaryAmount", - "title": "MonetaryAmount", - "bindings": { - "kafka": { - "key": { - "type": "string", - "description": "Kafka Consumer Message Key", - "examples": [ - "example-key" - ] - }, - "bindingVersion": "0.5.0" - } - } } } }, @@ -1350,10 +1350,10 @@ "$ref": "#/channels/multi-payload-topic/messages/io.github.springwolf.examples.kafka.dtos.ExamplePayloadDto" }, { - "$ref": "#/channels/multi-payload-topic/messages/io.github.springwolf.examples.kafka.dtos.AnotherPayloadDto" + "$ref": "#/channels/multi-payload-topic/messages/io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" }, { - "$ref": "#/channels/multi-payload-topic/messages/javax.money.MonetaryAmount" + "$ref": "#/channels/multi-payload-topic/messages/io.github.springwolf.examples.kafka.dtos.AnotherPayloadDto" } ] }, @@ -1383,7 +1383,7 @@ }, "messages": [ { - "$ref": "#/channels/multi-payload-topic/messages/javax.money.MonetaryAmount" + "$ref": "#/channels/multi-payload-topic/messages/io.github.springwolf.addons.common_model_converters.converters.monetaryamount.MonetaryAmount" } ] }, @@ -1417,10 +1417,10 @@ }, "messages": [ { - "$ref": "#/channels/string-topic/messages/io.github.springwolf.examples.kafka.consumers.StringConsumer$StringEnvelope" + "$ref": "#/channels/string-topic/messages/String" }, { - "$ref": "#/channels/string-topic/messages/java.lang.String" + "$ref": "#/channels/string-topic/messages/io.github.springwolf.examples.kafka.consumers.StringConsumer$StringEnvelope" } ] }, diff --git a/springwolf-plugins/springwolf-cloud-stream-plugin/src/main/java/io/github/springwolf/plugins/cloudstream/asyncapi/scanners/channels/CloudStreamFunctionChannelsScanner.java b/springwolf-plugins/springwolf-cloud-stream-plugin/src/main/java/io/github/springwolf/plugins/cloudstream/asyncapi/scanners/channels/CloudStreamFunctionChannelsScanner.java index 75637ee6f..844687f8b 100644 --- a/springwolf-plugins/springwolf-cloud-stream-plugin/src/main/java/io/github/springwolf/plugins/cloudstream/asyncapi/scanners/channels/CloudStreamFunctionChannelsScanner.java +++ b/springwolf-plugins/springwolf-cloud-stream-plugin/src/main/java/io/github/springwolf/plugins/cloudstream/asyncapi/scanners/channels/CloudStreamFunctionChannelsScanner.java @@ -82,7 +82,8 @@ private Map.Entry toChannelEntry(FunctionalChannelBeanDat private ChannelObject buildChannel(FunctionalChannelBeanData beanData) { Class payloadType = beanData.payloadType(); - String modelName = componentsService.registerSchema(payloadType); + String modelName = componentsService.registerSchema( + payloadType); // TODO: switch to payloadService? (same for operatoinScanner) String headerModelName = componentsService.registerSchema(AsyncHeadersNotDocumented.NOT_DOCUMENTED); var messagePayload = MessagePayload.of(MultiFormatSchema.builder()