This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch when
in repository https://gitbox.apache.org/repos/asf/camel.git

commit a9d2c7801943cdbe2c9096cd449037da2ae447ff
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Jan 15 14:16:59 2025 +0100

    CAMEL-21620: camel-core - Fix onWhen to not include outputs in model
---
 .../apache/camel/reifier/InterceptFromReifier.java | 30 ++++++++--------------
 1 file changed, 11 insertions(+), 19 deletions(-)

diff --git 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
index db979549fda..5ed803f7de9 100644
--- 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
+++ 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/InterceptFromReifier.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.reifier;
 
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePropertyKey;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
@@ -25,7 +23,7 @@ import org.apache.camel.Route;
 import org.apache.camel.model.InterceptFromDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.support.processor.DelegateAsyncProcessor;
+import org.apache.camel.processor.Pipeline;
 
 public class InterceptFromReifier extends 
InterceptReifier<InterceptFromDefinition> {
 
@@ -37,25 +35,19 @@ public class InterceptFromReifier extends 
InterceptReifier<InterceptFromDefiniti
     public Processor createProcessor() throws Exception {
         Processor child = this.createChildProcessor(true);
 
-        // TODO: Pipeline with set property and true filter if onWhen is empty
-        child = new DelegateAsyncProcessor(child) {
-            @Override
-            public boolean process(Exchange exchange, AsyncCallback callback) {
-                if (exchange.getFromEndpoint() != null) {
-                    
exchange.setProperty(ExchangePropertyKey.INTERCEPTED_ENDPOINT, 
exchange.getFromEndpoint().getEndpointUri());
-                }
-                return super.process(exchange, callback);
-            }
-        };
-
-        Predicate when = null;
+        Predicate when;
         if (definition.getOnWhen() != null) {
             when = createPredicate(definition.getOnWhen().getExpression());
+        } else {
+            when = e -> true;
         }
-        if (when != null) {
-            child = new FilterProcessor(getCamelContext(), when, child);
-        }
-        return child;
+        // set property before processing the child
+        Processor p = exchange -> {
+            if (exchange.getFromEndpoint() != null) {
+                exchange.setProperty(ExchangePropertyKey.INTERCEPTED_ENDPOINT, 
exchange.getFromEndpoint().getEndpointUri());
+            }
+        };
+        return new FilterProcessor(getCamelContext(), when, 
Pipeline.newInstance(getCamelContext(), p, child));
     }
 
 }

Reply via email to