Skip to content

Commit

Permalink
fix(sqs): add SqsMessageBindingProcessor (#382)
Browse files Browse the repository at this point in the history
Allows publishing sqs messages from springwolf-ui when using `@AsyncListener` and `@AsyncPublisher`
  • Loading branch information
timonback authored Sep 29, 2023
1 parent baa4aa3 commit e86b665
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@
"headers": {
"$ref": "#/components/schemas/HeadersNotDocumented"
},
"bindings": { }
"bindings": {
"sqs": {
"bindingVersion": "0.2.0"
}
}
}
},
"publish": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// SPDX-License-Identifier: Apache-2.0
package io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata;

import com.asyncapi.v2.binding.message.amqp.AMQPMessageBinding;
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.MessageBindingProcessor;
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.SqsAsyncOperationBinding;
import org.springframework.context.EmbeddedValueResolverAware;
import org.springframework.stereotype.Component;
import org.springframework.util.StringValueResolver;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Optional;

@Component
public class SqsMessageBindingProcessor implements MessageBindingProcessor, EmbeddedValueResolverAware {
private StringValueResolver resolver;

@Override
public void setEmbeddedValueResolver(StringValueResolver resolver) {
this.resolver = resolver;
}

@Override
public Optional<ProcessedMessageBinding> process(Method method) {
return Arrays.stream(method.getAnnotations())
.filter(annotation -> annotation instanceof SqsAsyncOperationBinding)
.map(annotation -> (SqsAsyncOperationBinding) annotation)
.findAny()
.map(this::mapToMessageBinding);
}

private ProcessedMessageBinding mapToMessageBinding(SqsAsyncOperationBinding bindingAnnotation) {
AMQPMessageBinding amqpMessageBinding = AMQPMessageBinding.builder().build();

return new ProcessedMessageBinding(bindingAnnotation.type(), amqpMessageBinding);
}
}

0 comments on commit e86b665

Please sign in to comment.