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 3db6376b0bb Allow CamelContext to be inherited in Smooks pipeline 
(#16244)
3db6376b0bb is described below

commit 3db6376b0bb2818794c09bd10774a9ddcd2b2b8a
Author: cjmamo <823038+cjm...@users.noreply.github.com>
AuthorDate: Tue Nov 12 18:31:43 2024 +0100

    Allow CamelContext to be inherited in Smooks pipeline (#16244)
    
    * fix: allow CamelContext to be inherited in Smooks pipeline
    
    * refactor: remove unused imports
---
 .../camel/component/smooks/SmooksProcessor.java    |  4 +++-
 .../component/smooks/SmooksProcessorTest.java      | 22 ++++++++++++++++++++++
 parent/pom.xml                                     |  2 +-
 3 files changed, 26 insertions(+), 2 deletions(-)

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 efab7f17602..234c58c9264 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
@@ -54,6 +54,7 @@ import org.slf4j.LoggerFactory;
 import org.smooks.Smooks;
 import org.smooks.SmooksFactory;
 import org.smooks.api.ExecutionContext;
+import org.smooks.api.NotAppContextScoped;
 import org.smooks.api.SmooksException;
 import org.smooks.api.TypedKey;
 import org.smooks.api.delivery.VisitorAppender;
@@ -286,7 +287,8 @@ public class SmooksProcessor extends ServiceSupport 
implements Processor, CamelC
                     InputStream is = 
ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, configUri);
                     smooks.addResourceConfigs(is);
                 }
-                
smooks.getApplicationContext().getRegistry().registerObject(CamelContext.class, 
camelContext);
+                
smooks.getApplicationContext().getRegistry().registerObject(CamelContext.class,
+                        (NotAppContextScoped.Ref<CamelContext>) () -> 
camelContext);
             }
 
             addAppender(smooks, visitorAppender);
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 562560d3982..c4b511e719f 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
@@ -27,6 +27,7 @@ import java.util.Map;
 import jakarta.activation.DataHandler;
 import jakarta.activation.DataSource;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
@@ -41,6 +42,7 @@ import org.junit.jupiter.api.Test;
 import org.smooks.Smooks;
 import org.smooks.SmooksFactory;
 import org.smooks.api.ExecutionContext;
+import org.smooks.api.NotAppContextScoped;
 import org.smooks.cartridges.javabean.Bean;
 import org.smooks.cartridges.javabean.Value;
 import org.smooks.io.payload.Exports;
@@ -61,6 +63,7 @@ import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
 import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -268,6 +271,25 @@ public class SmooksProcessorTest extends CamelTestSupport {
         assertEquals(InvalidPayloadException.class, 
runtimeException.getCause().getCause().getClass());
     }
 
+    @Test
+    public void testRegisteredCamelContextIsNotAppContextScoped() throws 
Exception {
+        context.addRoutes(createEdiToXmlRouteBuilder());
+        context.start();
+
+        result.expectedMessageCount(1);
+        template.sendBody("direct://input", getOrderEdi());
+
+        Exchange exchange = result.assertExchangeReceived(0);
+        ExecutionContext executionContext
+                = 
exchange.getMessage().getHeader(SmooksConstants.SMOOKS_EXECUTION_CONTEXT, 
ExecutionContext.class);
+        Object camelContextRef
+                = executionContext.getApplicationContext().getRegistry()
+                        .lookup(registryEntries -> 
registryEntries.entrySet().stream()
+                                .filter(e -> 
e.getKey().equals(CamelContext.class)).findFirst().get().getValue());
+        assertInstanceOf(NotAppContextScoped.Ref.class, camelContextRef);
+
+    }
+
     @Test
     public void testProcessWhenBodyIsFileAndSmooksExportIsStringSink() throws 
Exception {
         deleteDirectory("target/smooks");
diff --git a/parent/pom.xml b/parent/pom.xml
index eba36e28e8b..65913d0f5f2 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -454,7 +454,7 @@
         <smallrye-health-version>4.1.0</smallrye-health-version>
         
<smallrye-fault-tolerance-version>6.6.1</smallrye-fault-tolerance-version>
         <smbj-version>0.13.0</smbj-version>
-        <smooks-version>2.0.1</smooks-version>
+        <smooks-version>2.1.0</smooks-version>
         <snakeyaml-version>2.3</snakeyaml-version>
         <snakeyaml-engine-version>2.8</snakeyaml-engine-version>
         <snmp4j-version>3.8.2</snmp4j-version>

Reply via email to