|
1 | 1 | package org.springframework.integration.aws.config.xml;
|
2 | 2 |
|
3 |
| -import org.springframework.beans.factory.config.BeanDefinition; |
4 |
| -import org.springframework.beans.factory.xml.BeanDefinitionParser; |
| 3 | +import org.springframework.beans.factory.support.AbstractBeanDefinition; |
| 4 | +import org.springframework.beans.factory.support.BeanDefinitionBuilder; |
5 | 5 | import org.springframework.beans.factory.xml.ParserContext;
|
| 6 | +import org.springframework.core.Conventions; |
| 7 | +import org.springframework.integration.aws.outbound.SqsMessageHandler; |
| 8 | +import org.springframework.integration.config.xml.AbstractOutboundChannelAdapterParser; |
6 | 9 | import org.w3c.dom.Element;
|
7 | 10 |
|
8 |
| -public class SqsOutboundChannelAdapterParser implements BeanDefinitionParser { |
| 11 | +import static org.springframework.integration.config.xml.IntegrationNamespaceUtils.*; |
| 12 | + |
| 13 | +public class SqsOutboundChannelAdapterParser extends AbstractOutboundChannelAdapterParser { |
9 | 14 |
|
10 | 15 | @Override
|
11 |
| - public BeanDefinition parse(Element element, ParserContext parserContext) { |
12 |
| - return null; |
| 16 | + protected AbstractBeanDefinition parseConsumer(Element element, ParserContext parserContext) { |
| 17 | + var builder = BeanDefinitionBuilder.genericBeanDefinition(SqsMessageHandler.class) |
| 18 | + .addConstructorArgReference(element.getAttribute("sqs")); |
| 19 | + |
| 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"); |
| 24 | + |
| 25 | + return builder.getBeanDefinition(); |
| 26 | + } |
| 27 | + |
| 28 | + private void setIfAttributeDefined(Element element, ParserContext parserContext, BeanDefinitionBuilder builder, String attribute) { |
| 29 | + if (element.hasAttribute(attribute) && element.hasAttribute(attribute + "-expression")) { |
| 30 | + parserContext.getReaderContext() |
| 31 | + .error(attribute + " and " + attribute + "-expression attributes are mutually exclusive", element); |
| 32 | + } else { |
| 33 | + setValueIfAttributeDefined(builder, element, attribute); |
| 34 | + setValueIfAttributeDefined(builder, element, attribute + "-expression", Conventions.attributeNameToPropertyName(attribute + "-expression-string")); |
| 35 | + } |
13 | 36 | }
|
14 | 37 | }
|
0 commit comments