This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 00cecd714b4 fix(CAMEL-21555): by default do not use lazily start
Smooks and use lazyStartProducer to lazily start Smooks (#16594)
00cecd714b4 is described below
commit 00cecd714b4f321c21c3a270684732ebe933ce9a
Author: cjmamo <[email protected]>
AuthorDate: Tue Dec 17 11:04:36 2024 +0100
fix(CAMEL-21555): by default do not use lazily start Smooks and use
lazyStartProducer to lazily start Smooks (#16594)
---
.../camel/component/smooks/SmooksProcessor.java | 13 ++++
.../component/smooks/SmooksProcessorTest.java | 72 ++++++++++++++++++++++
2 files changed, 85 insertions(+)
diff --git
a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksProcessor.java
b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksProcessor.java
index 234c58c9264..5794dcfcdad 100644
---
a/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksProcessor.java
+++
b/components/camel-smooks/src/main/java/org/apache/camel/component/smooks/SmooksProcessor.java
@@ -84,6 +84,7 @@ public class SmooksProcessor extends ServiceSupport
implements Processor, CamelC
private String configUri;
private String reportPath;
private Boolean allowExecutionContextFromHeader = false;
+ private Boolean lazyStartProducer = false;
private final Set<VisitorAppender> visitorAppender = new HashSet<>();
private final Map<String, Visitor> selectorVisitorMap = new HashMap<>();
@@ -278,6 +279,14 @@ public class SmooksProcessor extends ServiceSupport
implements Processor, CamelC
smooks.addVisitor(entry.getValue(), entry.getKey());
}
+ public Boolean getLazyStartProducer() {
+ return lazyStartProducer;
+ }
+
+ public void setLazyStartProducer(Boolean lazyStartProducer) {
+ this.lazyStartProducer = lazyStartProducer;
+ }
+
@Override
protected void doStart() {
try {
@@ -294,6 +303,10 @@ public class SmooksProcessor extends ServiceSupport
implements Processor, CamelC
addAppender(smooks, visitorAppender);
addVisitor(smooks, selectorVisitorMap);
+ if (!lazyStartProducer) {
+ smooks.createExecutionContext();
+ }
+
} catch (Exception e) {
throw new SmooksException(e.getMessage(), e);
}
diff --git
a/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/SmooksProcessorTest.java
b/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/SmooksProcessorTest.java
index c4b511e719f..93c35d63bea 100644
---
a/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/SmooksProcessorTest.java
+++
b/components/camel-smooks/src/test/java/org/apache/camel/component/smooks/SmooksProcessorTest.java
@@ -43,8 +43,10 @@ import org.smooks.Smooks;
import org.smooks.SmooksFactory;
import org.smooks.api.ExecutionContext;
import org.smooks.api.NotAppContextScoped;
+import org.smooks.cartridges.edi.parser.EdiParser;
import org.smooks.cartridges.javabean.Bean;
import org.smooks.cartridges.javabean.Value;
+import org.smooks.engine.lookup.InstanceLookup;
import org.smooks.io.payload.Exports;
import org.smooks.io.sink.JavaSink;
import org.smooks.io.sink.StringSink;
@@ -192,6 +194,76 @@ public class SmooksProcessorTest extends CamelTestSupport {
assertNotEquals(executionContext[0],
exchange.getMessage().getHeader(SmooksConstants.SMOOKS_EXECUTION_CONTEXT));
}
+ @Test
+ public void testProcessWhenLazyStartProducerIsFalse()
+ throws Exception {
+ Smooks smooks = new Smooks();
+ SmooksProcessor processor = new
SmooksProcessor("edi-to-xml-smooks-config.xml", context);
+ processor.setSmooksFactory(new SmooksFactory() {
+ @Override
+ public Smooks createInstance() {
+ return smooks;
+ }
+
+ @Override
+ public Smooks createInstance(InputStream config) {
+ return null;
+ }
+
+ @Override
+ public Smooks createInstance(String config) {
+ return null;
+ }
+ });
+ processor.setLazyStartProducer(false);
+
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() {
+ from("direct:input")
+ .process(processor);
+ }
+
+ });
+ context.start();
+ assertEquals(1,
smooks.getApplicationContext().getRegistry().lookup(new
InstanceLookup<>(EdiParser.class)).size());
+ }
+
+ @Test
+ public void testProcessWhenLazyStartProducerIsTrue()
+ throws Exception {
+ Smooks smooks = new Smooks();
+ SmooksProcessor processor = new
SmooksProcessor("edi-to-xml-smooks-config.xml", context);
+ processor.setSmooksFactory(new SmooksFactory() {
+ @Override
+ public Smooks createInstance() {
+ return smooks;
+ }
+
+ @Override
+ public Smooks createInstance(InputStream config) {
+ return null;
+ }
+
+ @Override
+ public Smooks createInstance(String config) {
+ return null;
+ }
+ });
+ processor.setLazyStartProducer(true);
+
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() {
+ from("direct:input")
+ .process(processor);
+ }
+
+ });
+ context.start();
+ assertEquals(0,
smooks.getApplicationContext().getRegistry().lookup(new
InstanceLookup<>(EdiParser.class)).size());
+ }
+
@Test
public void testProcessGivenAttachment() throws Exception {
context.addRoutes(createEdiToXmlRouteBuilder());