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>