Skip to content

Commit 6738a64

Browse files
committed
Extend springwolf-amqp-plugin to implement the new methods in abstract class and method level listener scanners to include an empty message binding so that there is always a message binding
1 parent 3dfec38 commit 6738a64

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

springwolf-plugins/springwolf-amqp-plugin/src/main/java/io/github/stavshamir/springwolf/asyncapi/scanners/channels/annotation/MethodLevelRabbitListenerScanner.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package io.github.stavshamir.springwolf.asyncapi.scanners.channels.annotation;
22

33
import com.asyncapi.v2.binding.ChannelBinding;
4+
import com.asyncapi.v2.binding.MessageBinding;
45
import com.asyncapi.v2.binding.OperationBinding;
56
import com.asyncapi.v2.binding.amqp.AMQPChannelBinding;
7+
import com.asyncapi.v2.binding.amqp.AMQPMessageBinding;
68
import com.asyncapi.v2.binding.amqp.AMQPOperationBinding;
79
import com.google.common.collect.ImmutableMap;
810
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.ChannelPriority;
@@ -107,6 +109,12 @@ private String getExchangeName(RabbitListener annotation) {
107109
return ImmutableMap.of("amqp", AMQPOperationBinding.builder().cc(getRoutingKeys(annotation)).build());
108110
}
109111

112+
@Override
113+
protected Map<String, ? extends MessageBinding> buildMessageBinding(RabbitListener annotation) {
114+
// currently the feature to define amqp message binding is not implemented.
115+
return ImmutableMap.of("amqp", new AMQPMessageBinding());
116+
}
117+
110118
private List<String> getRoutingKeys(RabbitListener annotation) {
111119
/*
112120
The routing key is taken from the binding. As the key field in the @QueueBinding can be an empty array,

springwolf-plugins/springwolf-amqp-plugin/src/test/java/io/github/stavshamir/springwolf/asyncapi/scanners/channels/annotation/MethodLevelRabbitListenerScannerTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.asyncapi.v2.binding.ChannelBinding;
44
import com.asyncapi.v2.binding.amqp.AMQPChannelBinding;
5+
import com.asyncapi.v2.binding.amqp.AMQPMessageBinding;
56
import com.asyncapi.v2.binding.amqp.AMQPOperationBinding;
67
import com.asyncapi.v2.model.channel.ChannelItem;
78
import com.asyncapi.v2.model.channel.operation.Operation;
@@ -99,6 +100,7 @@ public void scan_componentHasRabbitListenerMethods_hardCodedTopic() {
99100
.title(SimpleFoo.class.getSimpleName())
100101
.payload(PayloadReference.fromModelName(SimpleFoo.class.getSimpleName()))
101102
.headers(HeaderReference.fromModelName(AsyncHeaders.NOT_DOCUMENTED.getSchemaName()))
103+
.bindings(ImmutableMap.of("amqp", new AMQPMessageBinding()))
102104
.build();
103105

104106
Operation operation = Operation.builder()
@@ -140,6 +142,7 @@ public void scan_componentHasRabbitListenerMethods_embeddedValueTopic() {
140142
.title(SimpleFoo.class.getSimpleName())
141143
.payload(PayloadReference.fromModelName(SimpleFoo.class.getSimpleName()))
142144
.headers(HeaderReference.fromModelName(AsyncHeaders.NOT_DOCUMENTED.getSchemaName()))
145+
.bindings(ImmutableMap.of("amqp", new AMQPMessageBinding()))
143146
.build();
144147

145148
Operation operation = Operation.builder()
@@ -178,6 +181,7 @@ public void scan_componentHasRabbitListenerMethods_bindingsAnnotation() {
178181
.title(SimpleFoo.class.getSimpleName())
179182
.payload(PayloadReference.fromModelName(SimpleFoo.class.getSimpleName()))
180183
.headers(HeaderReference.fromModelName(AsyncHeaders.NOT_DOCUMENTED.getSchemaName()))
184+
.bindings(ImmutableMap.of("amqp", new AMQPMessageBinding()))
181185
.build();
182186

183187
Operation operation = Operation.builder()
@@ -216,6 +220,7 @@ public void scan_componentHasRabbitListenerMethods_bindingBean() {
216220
.title(SimpleFoo.class.getSimpleName())
217221
.payload(PayloadReference.fromModelName(SimpleFoo.class.getSimpleName()))
218222
.headers(HeaderReference.fromModelName(AsyncHeaders.NOT_DOCUMENTED.getSchemaName()))
223+
.bindings(ImmutableMap.of("amqp", new AMQPMessageBinding()))
219224
.build();
220225

221226
Operation operation = Operation.builder()
@@ -271,6 +276,7 @@ public void scan_componentHasRabbitListenerMethods_multipleParamsWithPayloadAnno
271276
.title(SimpleFoo.class.getSimpleName())
272277
.payload(PayloadReference.fromModelName(SimpleFoo.class.getSimpleName()))
273278
.headers(HeaderReference.fromModelName(AsyncHeaders.NOT_DOCUMENTED.getSchemaName()))
279+
.bindings(ImmutableMap.of("amqp", new AMQPMessageBinding()))
274280
.build();
275281

276282
Operation operation = Operation.builder()

0 commit comments

Comments
 (0)