Skip to content

Commit 38433e6

Browse files
committed
feat: KplOutboundChannelAdapterParser
1 parent f5d5400 commit 38433e6

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.springframework.integration.aws.config.xml;
2+
3+
import org.springframework.beans.factory.support.AbstractBeanDefinition;
4+
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
5+
import org.springframework.beans.factory.xml.ParserContext;
6+
import org.springframework.integration.aws.outbound.KplMessageHandler;
7+
import org.springframework.integration.config.xml.AbstractOutboundChannelAdapterParser;
8+
import org.w3c.dom.Element;
9+
10+
import java.time.Duration;
11+
12+
public class KplOutboundChannelAdapterParser extends AbstractOutboundChannelAdapterParser {
13+
14+
@Override
15+
protected AbstractBeanDefinition parseConsumer(Element element, ParserContext parserContext) {
16+
return XmlBeanDefinitionBuilder.newInstance(element, parserContext, KplMessageHandler.class)
17+
.addConstructorArgReference("kinesis-producer")
18+
.setPropertyIfAttributeDefined("async")
19+
.setPropertyIfAttributeDefined("output-channel", "outputChannelName")
20+
.setPropertyIfAttributeDefined("send-timeout")
21+
.setPropertyOrExpressionStringIfAttributeDefined("stream")
22+
.setPropertyOrExpressionStringIfAttributeDefined("partition-key")
23+
.setPropertyOrExpressionStringIfAttributeDefined("explicit-hash-key")
24+
.setPropertyIfAttributeDefined("sequence-number-expression", "sequenceNumberExpressionString")
25+
.setPropertyIfAttributeDefined("glue-schema-expression", "glueSchemaExpressionString")
26+
.setPropertyIfAttributeDefined("flush-duration", "flushDuration", this::duration)
27+
.setPropertyReferenceIfAttributeDefined("embedded-headers-mapper")
28+
.setPropertyReferenceIfAttributeDefined("message-converter")
29+
.build();
30+
}
31+
32+
private AbstractBeanDefinition duration(String millis) {
33+
return BeanDefinitionBuilder.genericBeanDefinition(Duration.class)
34+
.addConstructorArgValue(millis)
35+
.setFactoryMethod("ofMillis")
36+
.applyCustomizers(def -> def.setAutowireCandidate(false))
37+
.getBeanDefinition();
38+
}
39+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
kcl-message-driven-channel-adapter: org.springframework.integration.aws.config.xml.KclMessageDrivenChannelAdapterParser
22
kinesis-message-driven-channel-adapter: org.springframework.integration.aws.config.xml.KinesisMessageDrivenChannelAdapterParser
3-
kinesis-outbound-channel-adapter: org.springframework.integration.aws.config.xml.KinesisOutboundChannelAdapterParser
3+
kinesis-outbound-channel-adapter: org.springframework.integration.aws.config.xml.KinesisOutboundChannelAdapterParser
4+
kpl-outbound-channel-adapter: org.springframework.integration.aws.config.xml.KplOutboundChannelAdapterParser

0 commit comments

Comments
 (0)