Skip to content

Commit b1c0d27

Browse files
committed
feat: SqsMessageDrivenChannelAdapterParser sync and success-channel attributes, warn on unsupported attributes
1 parent 239278b commit b1c0d27

File tree

1 file changed

+30
-6
lines changed

1 file changed

+30
-6
lines changed

int-aws-support/src/main/java/org/springframework/integration/aws/config/xml/SqsOutboundChannelAdapterParser.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import org.springframework.integration.config.xml.AbstractOutboundChannelAdapterParser;
99
import org.w3c.dom.Element;
1010

11+
import java.util.List;
12+
1113
import static org.springframework.integration.config.xml.IntegrationNamespaceUtils.*;
1214

1315
public class SqsOutboundChannelAdapterParser extends AbstractOutboundChannelAdapterParser {
@@ -17,15 +19,37 @@ protected AbstractBeanDefinition parseConsumer(Element element, ParserContext pa
1719
var builder = BeanDefinitionBuilder.genericBeanDefinition(SqsMessageHandler.class)
1820
.addConstructorArgReference(element.getAttribute("sqs"));
1921

20-
setIfAttributeDefined(element, parserContext, builder, "queue");
21-
setIfAttributeDefined(element, parserContext, builder, "delay");
22-
setIfAttributeDefined(element, parserContext, builder, "message-group-id");
23-
setIfAttributeDefined(element, parserContext, builder, "message-deduplication-id");
22+
setExpressionValueIfAttributeDefined(builder, element, parserContext, "queue");
23+
setExpressionValueIfAttributeDefined(builder, element, parserContext, "delay");
24+
setExpressionValueIfAttributeDefined(builder, element, parserContext, "message-group-id");
25+
setExpressionValueIfAttributeDefined(builder, element, parserContext, "message-deduplication-id");
26+
setExpressionValueIfAttributeDefined(builder, element, parserContext, "send-timeout");
27+
28+
setReferenceIfAttributeDefined(builder, element, "success-channel", "outputChannelName");
29+
30+
if (element.hasAttribute("sync")) {
31+
var sync = element.getAttribute("sync");
32+
if ("true".equalsIgnoreCase(sync)) {
33+
builder.addPropertyValue("async", "false");
34+
} else if ("false".equalsIgnoreCase(sync)) {
35+
builder.addPropertyValue("async", "true");
36+
} else {
37+
parserContext.getReaderContext()
38+
.error("expected boolean for sync attribute", element);
39+
}
40+
}
41+
42+
for (var attribute : List.of("failure-channel", "resource-id-resolver", "error-message-strategy", "async-handler")) {
43+
if (element.hasAttribute(attribute)) {
44+
parserContext.getReaderContext()
45+
.warning("Attribute" + attribute + " not supported", element);
46+
}
47+
}
2448

2549
return builder.getBeanDefinition();
2650
}
27-
28-
private void setIfAttributeDefined(Element element, ParserContext parserContext, BeanDefinitionBuilder builder, String attribute) {
51+
52+
private void setExpressionValueIfAttributeDefined(BeanDefinitionBuilder builder, Element element, ParserContext parserContext, String attribute) {
2953
if (element.hasAttribute(attribute) && element.hasAttribute(attribute + "-expression")) {
3054
parserContext.getReaderContext()
3155
.error(attribute + " and " + attribute + "-expression attributes are mutually exclusive", element);

0 commit comments

Comments
 (0)