This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 5845e5de2d72844f62c52ba9ced9e6ffb44c6499 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Mon Jan 20 15:15:02 2020 +0100 CAMEL-14419: Enrich EIP - Should wrap in UoW --- .../TransactedInterceptUsingAdviceWithSendToEndpointTest.java | 2 +- .../src/main/java/org/apache/camel/processor/Enricher.java | 4 +++- .../src/main/java/org/apache/camel/reifier/EnrichReifier.java | 8 +++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactedInterceptUsingAdviceWithSendToEndpointTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactedInterceptUsingAdviceWithSendToEndpointTest.java index 47e4579..46a3248 100644 --- a/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactedInterceptUsingAdviceWithSendToEndpointTest.java +++ b/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactedInterceptUsingAdviceWithSendToEndpointTest.java @@ -56,7 +56,7 @@ public class TransactedInterceptUsingAdviceWithSendToEndpointTest extends Transa } private void addInterceptor(String routeId) throws Exception { - RouteReifier.adviceWith(context.getRouteDefinitions().get(0), context, new AdviceWithRouteBuilder() { + RouteReifier.adviceWith(context.getRouteDefinition(routeId), context, new AdviceWithRouteBuilder() { @Override public void configure() throws Exception { interceptSendToEndpoint("direct:(foo|bar)") diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/Enricher.java b/core/camel-base/src/main/java/org/apache/camel/processor/Enricher.java index 411b36a..f484d0a 100644 --- a/core/camel-base/src/main/java/org/apache/camel/processor/Enricher.java +++ b/core/camel-base/src/main/java/org/apache/camel/processor/Enricher.java @@ -197,7 +197,9 @@ public class Enricher extends AsyncProcessorSupport implements IdAware, RouteIdA } // record timing for sending the exchange using the producer final StopWatch watch = sw; - AsyncProcessor ap = AsyncProcessorConverterHelper.convert(producer); + // make sure to wrap producer in unit of work + AsyncProcessor ap = AsyncProcessorConverterHelper.convert(new UnitOfWorkProducer(producer)); + // wrap in UoW boolean sync = ap.process(resourceExchange, new AsyncCallback() { public void done(boolean doneSync) { // we only have to handle async completion of the routing slip diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java index 98f4bc4..bd58305 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java @@ -22,6 +22,7 @@ import org.apache.camel.Expression; import org.apache.camel.Processor; import org.apache.camel.model.EnrichDefinition; import org.apache.camel.model.ProcessorDefinition; +import org.apache.camel.processor.CamelInternalProcessor; import org.apache.camel.processor.Enricher; import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter; import org.apache.camel.spi.RouteContext; @@ -34,7 +35,6 @@ public class EnrichReifier extends ExpressionReifier<EnrichDefinition> { @Override public Processor createProcessor(RouteContext routeContext) throws Exception { - Expression exp = definition.getExpression().createExpression(routeContext); boolean isShareUnitOfWork = definition.getShareUnitOfWork() != null && Boolean.parseBoolean(definition.getShareUnitOfWork()); boolean isIgnoreInvalidEndpoint = definition.getIgnoreInvalidEndpoint() != null && Boolean.parseBoolean(definition.getIgnoreInvalidEndpoint()); @@ -49,7 +49,13 @@ public class EnrichReifier extends ExpressionReifier<EnrichDefinition> { if (definition.getAggregateOnException() != null) { enricher.setAggregateOnException(Boolean.parseBoolean(definition.getAggregateOnException())); } + return enricher; + + // and wrap in unit of work +// CamelInternalProcessor internal = new CamelInternalProcessor(enricher); +// internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext)); +// return internal; } private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {