Skip to content

Commit 23098d1

Browse files
committed
Add option to document an example for kafka key bindings, change structure of KafkaAsyncMessageBinding to contain a new sub-annotation KafkaAsyncKey to make it more obvious what is part of the key documentation and which is part of the kafka message binding, Add default values for message binding to KafkaConsumer- and KafkaProducerData
1 parent 1df1339 commit 23098d1

File tree

4 files changed

+20
-7
lines changed

4 files changed

+20
-7
lines changed

springwolf-plugins/springwolf-kafka-plugin/src/main/java/io/github/stavshamir/springwolf/asyncapi/scanners/channels/operationdata/KafkaMessageBindingProcessor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,13 @@ private String resolveOrNull(String stringValue) {
4949

5050
private Schema<?> resolveSchemaOrNull(KafkaAsyncMessageBinding messageBinding) {
5151
Schema<?> schemaDefinition = null;
52-
switch (messageBinding.keyType()) {
53-
case NO_KEY:
52+
switch (messageBinding.key().type()) {
53+
case UNDEFINED_KEY:
5454
break;
5555
case STRING_KEY:
5656
schemaDefinition = new StringSchema()
57-
.description(resolveOrNull(messageBinding.description()));
57+
.example(messageBinding.key().example())
58+
.description(resolveOrNull(messageBinding.key().description()));
5859
}
5960

6061
return schemaDefinition;

springwolf-plugins/springwolf-kafka-plugin/src/main/java/io/github/stavshamir/springwolf/asyncapi/scanners/channels/operationdata/annotation/KafkaAsyncOperationBinding.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,22 @@
2626
@Target({})
2727
@interface KafkaAsyncMessageBinding {
2828

29-
KafkaKeyTypes keyType() default KafkaKeyTypes.NO_KEY;
30-
31-
String description() default "";
29+
KafkaAsyncKey key() default @KafkaAsyncKey(type = KafkaAsyncKey.KafkaKeyTypes.UNDEFINED_KEY);
3230

3331
String bindingVersion() default "";
32+
}
33+
@Retention(RetentionPolicy.CLASS)
34+
@Target({})
35+
@interface KafkaAsyncKey {
36+
37+
KafkaKeyTypes type() default KafkaKeyTypes.STRING_KEY;
38+
39+
String example() default "";
40+
41+
String description() default "";
3442

3543
enum KafkaKeyTypes {
36-
NO_KEY,
44+
UNDEFINED_KEY,
3745
STRING_KEY
3846
}
3947
}

springwolf-plugins/springwolf-kafka-plugin/src/main/java/io/github/stavshamir/springwolf/asyncapi/types/KafkaConsumerData.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.stavshamir.springwolf.asyncapi.types;
22

33
import com.asyncapi.v2.binding.kafka.KafkaChannelBinding;
4+
import com.asyncapi.v2.binding.kafka.KafkaMessageBinding;
45
import com.asyncapi.v2.binding.kafka.KafkaOperationBinding;
56
import com.google.common.collect.ImmutableMap;
67
import io.github.stavshamir.springwolf.asyncapi.types.channel.operation.message.header.AsyncHeaders;
@@ -15,5 +16,6 @@ public KafkaConsumerData(String topicName, Class<?> payloadType, String descript
1516
this.payloadType = payloadType;
1617
this.headers = headers != null ? headers : this.headers;
1718
this.operationBinding = ImmutableMap.of("kafka", new KafkaOperationBinding());
19+
this.messageBinding = ImmutableMap.of("kafka", new KafkaMessageBinding());
1820
}
1921
}

springwolf-plugins/springwolf-kafka-plugin/src/main/java/io/github/stavshamir/springwolf/asyncapi/types/KafkaProducerData.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.stavshamir.springwolf.asyncapi.types;
22

33
import com.asyncapi.v2.binding.kafka.KafkaChannelBinding;
4+
import com.asyncapi.v2.binding.kafka.KafkaMessageBinding;
45
import com.asyncapi.v2.binding.kafka.KafkaOperationBinding;
56
import com.google.common.collect.ImmutableMap;
67
import io.github.stavshamir.springwolf.asyncapi.types.channel.operation.message.header.AsyncHeaders;
@@ -16,6 +17,7 @@ public KafkaProducerData(String topicName, Class<?> payloadType, String descript
1617
this.payloadType = payloadType;
1718
this.headers = headers != null ? headers : this.headers;
1819
this.operationBinding = ImmutableMap.of("kafka", new KafkaOperationBinding());
20+
this.messageBinding = ImmutableMap.of("kafka", new KafkaMessageBinding());
1921
}
2022

2123
}

0 commit comments

Comments
 (0)