You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/01/30 17:03:13 UTC

[camel] branch master updated: CAMEL-13108: Move mock component out of camel-core (#2738)

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


The following commit(s) were added to refs/heads/master by this push:
     new ff26402  CAMEL-13108: Move mock component out of camel-core (#2738)
ff26402 is described below

commit ff26402ba17373e06c37d230507170c434282761
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jan 30 18:03:06 2019 +0100

    CAMEL-13108: Move mock component out of camel-core (#2738)
    
    Some work to get closer to be able to move mock, dataset and test components out of camel-core. However the builder stuff is tightly coupled to camel-core builder package and would require some more work to find a good way to do this. Will look at this later, but wanted to get this work so far upstream.
---
 .../main/java/org/apache/camel/spi/Injector.java   |   2 +-
 .../apache/camel/spi/InterceptSendToEndpoint.java  |  36 +--
 .../camel/builder/ExpressionClauseSupport.java     |   2 -
 .../org/apache/camel/builder/NotifyBuilder.java    |   5 +-
 .../org/apache/camel/builder/ProcessorBuilder.java | 264 ---------------------
 .../org/apache/camel/builder/xml/Namespaces.java   |  40 ----
 .../apache/camel/component/mock/MockEndpoint.java  |  21 +-
 .../apache/camel/component/mock/TimeClause.java    |  47 +++-
 .../apache/camel/impl/AbstractCamelContext.java    |   3 +-
 ...nt.java => DefaultInterceptSendToEndpoint.java} |  18 +-
 .../impl/InterceptSendToEndpointProcessor.java     |   6 +-
 .../impl/InterceptSendToMockEndpointStrategy.java  |   4 +-
 .../apache/camel/model/ProcessorDefinition.java    |   5 +-
 .../org/apache/camel/processor/SendProcessor.java  |   2 +-
 .../reifier/InterceptSendToEndpointReifier.java    |   6 +-
 .../apache/camel/reifier/SetFaultBodyReifier.java  |   9 +-
 .../camel/builder/xml/XPathNamespaceTest.java      |   2 +-
 .../apache/camel/issues/SetHeaderIssueTest.java    |   6 +-
 ...dLetterChannelExceptionCausePropagatedTest.java |   5 +-
 ...CausePropagatedWithDefaultErrorHandlerTest.java |   5 +-
 ...eadLetterChannelRedeliveryDelayPatternTest.java |   4 +-
 .../org/apache/camel/processor/ValidationTest.java |   7 +-
 ...ithNamespaceBuilderFilterAndResultTypeTest.java |   2 +-
 .../XPathWithNamespaceBuilderFilterTest.java       |   3 +-
 .../CamelSpringRunnerMockEndpointsAndSkipTest.java |   4 +-
 .../spring/CamelSpringRunnerMockEndpointsTest.java |   4 +-
 26 files changed, 133 insertions(+), 379 deletions(-)

diff --git a/camel-api/src/main/java/org/apache/camel/spi/Injector.java b/camel-api/src/main/java/org/apache/camel/spi/Injector.java
index f5e3a43..7f2805a 100644
--- a/camel-api/src/main/java/org/apache/camel/spi/Injector.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/Injector.java
@@ -19,7 +19,7 @@ package org.apache.camel.spi;
 /**
  * A pluggable strategy for creating and possibly dependency injecting objects
  * which could be implemented using straight forward reflection or using Spring
- * or Guice to perform dependency injection.
+ * or CDI to perform dependency injection.
  */
 public interface Injector {
 
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest.java b/camel-api/src/main/java/org/apache/camel/spi/InterceptSendToEndpoint.java
similarity index 54%
copy from camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest.java
copy to camel-api/src/main/java/org/apache/camel/spi/InterceptSendToEndpoint.java
index bd521c2..f4544ef 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/InterceptSendToEndpoint.java
@@ -14,23 +14,29 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.processor;
+package org.apache.camel.spi;
 
-import org.apache.camel.builder.ProcessorBuilder;
-import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Processor;
 
-public class DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest extends DeadLetterChannelExceptionCausePropagatedTest {
+/**
+ * This is an endpoint when sending to it, is intercepted and is routed in a detour
+ */
+public interface InterceptSendToEndpoint extends Endpoint {
+
+    /**
+     * The original endpoint which was intercepted.
+     */
+    Endpoint getOriginalEndpoint();
 
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                onException(RuntimeException.class).handled(true).to("mock:failed");
+    /**
+     * The processor for routing in a detour
+     */
+    Processor getDetour();
 
-                from("direct:start")
-                    .process(ProcessorBuilder.throwException(RUNTIME_EXCEPTION))
-                    .to("mock:success");
-            }
-        };
-    }
+    /**
+     * Whether to skip sending after the detour to the original endpoint.
+     */
+    boolean isSkip();
 
-}
\ No newline at end of file
+}
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
index cc6a502..b6a972d 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
@@ -1007,8 +1007,6 @@ public class ExpressionClauseSupport<T> {
         return result;
     }
 
-
-    
     /**
      * Evaluates an <a
      * href="http://camel.apache.org/xquery.html">XQuery expression</a>
diff --git a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
index d7a2c29..6f92769 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
@@ -33,7 +33,6 @@ import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.component.direct.DirectEndpoint;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelEvent.ExchangeCompletedEvent;
@@ -59,6 +58,8 @@ import org.slf4j.LoggerFactory;
  */
 public class NotifyBuilder {
 
+    // TODO: camel-mock
+
     private static final Logger LOG = LoggerFactory.getLogger(NotifyBuilder.class);
 
     private final CamelContext context;
@@ -192,7 +193,7 @@ public class NotifyBuilder {
                 // and just continue to route that on the consumer side, which causes the EventNotifier not to
                 // emit events when the consumer received the exchange, as its already done. For example by
                 // ProducerTemplate which creates the UoW before producing messages.
-                if (exchange.getFromEndpoint() instanceof DirectEndpoint) {
+                if (exchange.getFromEndpoint().getEndpointUri().startsWith("direct:")) {
                     return true;
                 }
                 return PatternHelper.matchPattern(exchange.getFromRouteId(), "*");
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
deleted file mode 100644
index 6e36f68..0000000
--- a/camel-core/src/main/java/org/apache/camel/builder/ProcessorBuilder.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.builder;
-
-import java.util.Arrays;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
-import org.apache.camel.Processor;
-
-/**
- * A builder of a number of different {@link Processor} implementations
- */
-public final class ProcessorBuilder {
-
-    /**
-     * Utility classes should not have a public constructor.
-     */
-    private ProcessorBuilder() {
-    }
-
-    /**
-     * Creates a processor which sets the body of the message to the value of the expression
-     */
-    public static Processor setBody(final Expression expression) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                Object newBody = expression.evaluate(exchange, Object.class);
-                if (exchange.hasOut()) {
-                    exchange.getOut().setBody(newBody);
-                } else {
-                    exchange.getIn().setBody(newBody);
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "setBody(" + expression + ")";
-            }
-        };
-    }
-
-    /**
-     * Creates a processor which sets the body of the FAULT message to the value of the expression
-     */
-    public static Processor setFaultBody(final Expression expression) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                Object newBody = expression.evaluate(exchange, Object.class);
-                if (exchange.hasOut()) {
-                    exchange.getOut().setFault(true);
-                    exchange.getOut().setBody(newBody);
-                } else {
-                    exchange.getIn().setFault(true);
-                    exchange.getIn().setBody(newBody);
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "setFaultBody(" + expression + ")";
-            }
-        };
-    }
-
-    /**
-     * Sets the header on the message.
-     */
-    public static Processor setHeader(final String name, final Expression expression) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                Object value = expression.evaluate(exchange, Object.class);
-                if (exchange.hasOut()) {
-                    exchange.getOut().setHeader(name, value);
-                } else {
-                    exchange.getIn().setHeader(name, value);
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "setHeader(" + name + ", " + expression + ")";
-            }
-        };
-    }
-
-    /**
-     * Sets the header on the FAULT message
-     */
-    public static Processor setFaultHeader(final String name, final Expression expression) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                Object value = expression.evaluate(exchange, Object.class);
-                if (exchange.hasOut()) {
-                    exchange.getOut().setFault(true);
-                    exchange.getOut().setHeader(name, value);
-                } else {
-                    exchange.getIn().setFault(true);
-                    exchange.getIn().setHeader(name, value);
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "setFaultHeader(" + name + ", " + expression + ")";
-            }
-        };
-    }
-
-    /**
-     * Sets the property on the exchange
-     */
-    public static Processor setProperty(final String name, final Expression expression) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                Object value = expression.evaluate(exchange, Object.class);
-                exchange.setProperty(name, value);
-            }
-
-            @Override
-            public String toString() {
-                return "setProperty(" + name + ", " + expression + ")";
-            }
-        };
-    }
-
-    /**
-     * Removes the header on the message.
-     */
-    public static Processor removeHeader(final String name) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                if (exchange.hasOut()) {
-                    exchange.getOut().removeHeader(name);
-                } else {
-                    exchange.getIn().removeHeader(name);
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "removeHeader(" + name +  ")";
-            }
-        };
-    }
-
-    /**
-     * Removes the headers on the message
-     */
-    public static Processor removeHeaders(final String pattern) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                if (exchange.hasOut()) {
-                    exchange.getOut().removeHeaders(pattern);
-                } else {
-                    exchange.getIn().removeHeaders(pattern);
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "removeHeaders(" + pattern +  ")";
-            }
-        };
-    }
-    
-    /**
-     * Removes all headers on the message, except for the ones provided in the <tt>names</tt> parameter
-     */
-    public static Processor removeHeaders(final String pattern, final String... exceptionPatterns) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                if (exchange.hasOut()) {
-                    exchange.getOut().removeHeaders(pattern, exceptionPatterns);
-                } else {
-                    exchange.getIn().removeHeaders(pattern, exceptionPatterns);
-                }
-            }
-
-            @Override
-            public String toString() {
-                return "removeHeaders(" + pattern + ", " + Arrays.toString(exceptionPatterns) + ")";
-            }
-        };
-    }
-
-    /**
-     * Removes the property on the exchange
-     */
-    public static Processor removeProperty(final String name) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                exchange.removeProperty(name);
-            }
-
-            @Override
-            public String toString() {
-                return "removeProperty(" + name +  ")";
-            }
-        };
-    }
-    
-    /**
-     * Removes the properties on the exchange
-     */
-    public static Processor removeProperties(final String pattern) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                exchange.removeProperties(pattern);
-            }
-
-            @Override
-            public String toString() {
-                return "removeProperties(" + pattern +  ")";
-            }
-        };
-    }
-    
-    /**
-     * Removes all properties on the exchange, except for the ones provided in the <tt>names</tt> parameter
-     */
-    public static Processor removeProperties(final String pattern, final String... exceptionPatterns) {
-        return new Processor() {
-            public void process(Exchange exchange) {
-                exchange.removeProperties(pattern, exceptionPatterns);
-            }
-
-            @Override
-            public String toString() {
-                return "removeProperties(" + pattern + ", " + Arrays.toString(exceptionPatterns) + ")";
-            }
-        };
-    }
-
-    /**
-     * Throws an exception
-     */
-    public static Processor throwException(final Exception ex) {
-        return new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                throw ex;
-            }
-
-            @Override
-            public String toString() {
-                return "throwException(" + ex.toString() +  ")";
-            }
-        };
-    }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/builder/xml/Namespaces.java b/camel-core/src/main/java/org/apache/camel/builder/xml/Namespaces.java
index 3367a08..c6119d1 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/xml/Namespaces.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/xml/Namespaces.java
@@ -24,8 +24,6 @@ import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
-import org.apache.camel.model.language.XPathExpression;
-import org.apache.camel.model.language.XQueryExpression;
 import org.apache.camel.spi.NamespaceAware;
 import org.apache.camel.util.ObjectHelper;
 
@@ -92,44 +90,6 @@ public class Namespaces {
         return this;
     }
 
-    /**
-     * Creates the XPath expression using the current namespace context
-     */
-    public XPathExpression xpath(String expression) {
-        XPathExpression answer = new XPathExpression(expression);
-        configure(answer);
-        return answer;
-    }
-
-    /**
-     * Creates the XPath expression using the current namespace context
-     */
-    public XPathExpression xpath(String expression, Class<?> resultType) {
-        XPathExpression answer = xpath(expression);
-        answer.setResultType(resultType);
-        return answer;
-    }
-
-    /**
-     * Creates the XQuery expression using the current namespace context
-     */
-    public XQueryExpression xquery(String expression) {
-        XQueryExpression answer = new XQueryExpression(expression);
-        configure(answer);
-        return answer;
-    }
-
-    /**
-     * Creates the XQuery expression using the current namespace context
-     * and the given expected return type
-     */
-    public XQueryExpression xquery(String expression, Class<?> resultType) {
-        XQueryExpression answer = new XQueryExpression(expression);
-        answer.setResultType(resultType);
-        configure(answer);
-        return answer;
-    }
-
     public Map<String, String> getNamespaces() {
         return namespaces;
     }
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index 64db1b7..74ea4f4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -43,9 +43,8 @@ import org.apache.camel.Message;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.builder.ProcessorBuilder;
-import org.apache.camel.impl.InterceptSendToEndpoint;
 import org.apache.camel.spi.BrowsableEndpoint;
+import org.apache.camel.spi.InterceptSendToEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -193,7 +192,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
         for (Endpoint endpoint : endpoints) {
             // if the endpoint was intercepted we should get the delegate
             if (endpoint instanceof InterceptSendToEndpoint) {
-                endpoint = ((InterceptSendToEndpoint) endpoint).getDelegate();
+                endpoint = ((InterceptSendToEndpoint) endpoint).getOriginalEndpoint();
             }
             if (endpoint instanceof MockEndpoint) {
                 MockEndpoint mockEndpoint = (MockEndpoint) endpoint;
@@ -218,7 +217,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
         for (Endpoint endpoint : endpoints) {
             // if the endpoint was intercepted we should get the delegate
             if (endpoint instanceof InterceptSendToEndpoint) {
-                endpoint = ((InterceptSendToEndpoint) endpoint).getDelegate();
+                endpoint = ((InterceptSendToEndpoint) endpoint).getOriginalEndpoint();
             }
             if (endpoint instanceof MockEndpoint) {
                 MockEndpoint mockEndpoint = (MockEndpoint) endpoint;
@@ -241,7 +240,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
         for (Endpoint endpoint : endpoints) {
             // if the endpoint was intercepted we should get the delegate
             if (endpoint instanceof InterceptSendToEndpoint) {
-                endpoint = ((InterceptSendToEndpoint) endpoint).getDelegate();
+                endpoint = ((InterceptSendToEndpoint) endpoint).getOriginalEndpoint();
             }
             if (endpoint instanceof MockEndpoint) {
                 MockEndpoint mockEndpoint = (MockEndpoint) endpoint;
@@ -261,7 +260,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
         for (Endpoint endpoint : endpoints) {
             // if the endpoint was intercepted we should get the delegate
             if (endpoint instanceof InterceptSendToEndpoint) {
-                endpoint = ((InterceptSendToEndpoint) endpoint).getDelegate();
+                endpoint = ((InterceptSendToEndpoint) endpoint).getOriginalEndpoint();
             }
             if (endpoint instanceof MockEndpoint) {
                 MockEndpoint mockEndpoint = (MockEndpoint) endpoint;
@@ -341,7 +340,10 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
      * @param expression which is use to set the message body 
      */
     public void returnReplyBody(Expression expression) {
-        this.defaultProcessor = ProcessorBuilder.setBody(expression);
+        this.defaultProcessor = exchange -> {
+            Object exp = expression.evaluate(exchange, Object.class);
+            exchange.getMessage().setBody(exp);
+        };
     }
     
     /**
@@ -350,7 +352,10 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint {
      * @param expression which is use to set the message header 
      */
     public void returnReplyHeader(String headerName, Expression expression) {
-        this.defaultProcessor = ProcessorBuilder.setHeader(headerName, expression);
+        this.defaultProcessor = exchange -> {
+            Object exp = expression.evaluate(exchange, Object.class);
+            exchange.getMessage().setHeader(headerName, exp);
+        };
     }
     
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java b/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
index 23545b0..f19db8e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/TimeClause.java
@@ -20,9 +20,9 @@ import java.util.Date;
 import java.util.Locale;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.camel.BinaryPredicate;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
-import org.apache.camel.builder.BinaryPredicateSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -30,18 +30,21 @@ import org.slf4j.LoggerFactory;
  * Represents time based clauses for setting expectations on the mocks.
  * Such as time constrains for the received messages.
  */
-public class TimeClause extends BinaryPredicateSupport {
+public class TimeClause implements BinaryPredicate {
 
     private static final Logger LOG = LoggerFactory.getLogger(TimeClause.class);
 
+    private final Expression left;
+    private final Expression right;
+
     private Time timeFrom;
     private Time timeTo;
     private boolean beforeNext;
     private String was;
 
     public TimeClause(Expression left, Expression right) {
-        // previous, next
-        super(left, right);
+        this.left = left;
+        this.right = right;
     }
 
     // TimeUnit DSL
@@ -110,6 +113,38 @@ public class TimeClause extends BinaryPredicateSupport {
     // Implementation
     // -------------------------------------------------------------------------
 
+    @Override
+    public Expression getLeft() {
+        return left;
+    }
+
+    @Override
+    public Expression getRight() {
+        return right;
+    }
+
+    @Override
+    public boolean matches(Exchange exchange) {
+        return matchesReturningFailureMessage(exchange) == null;
+    }
+
+    @Override
+    public String matchesReturningFailureMessage(Exchange exchange) {
+        // we must not store any state, so we can be thread safe
+        // and thus we offer this method which returns a failure message if
+        // we did not match
+        String answer = null;
+
+        // must be thread safe and store result in local objects
+        Object leftValue = left.evaluate(exchange, Object.class);
+        Object rightValue = right.evaluate(exchange, Object.class);
+        if (!matches(exchange, leftValue, rightValue)) {
+            answer = leftValue + " " + getOperator() + " " + rightValue;
+        }
+
+        return answer;
+    }
+
     protected boolean matches(Exchange exchange, Object leftValue, Object rightValue) {
         was = null;
         boolean answer = true;
@@ -169,6 +204,10 @@ public class TimeClause extends BinaryPredicateSupport {
     }
 
     @Override
+    public String getOperator() {
+        return getOperationText();
+    }
+
     protected String getOperationText() {
         return beforeNext ? "before next" : "after previous";
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java
index 7326636..61902b3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java
@@ -127,6 +127,7 @@ import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.Injector;
+import org.apache.camel.spi.InterceptSendToEndpoint;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.LanguageResolver;
@@ -807,7 +808,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Mod
             throw new NoSuchEndpointException(name);
         }
         if (endpoint instanceof InterceptSendToEndpoint) {
-            endpoint = ((InterceptSendToEndpoint) endpoint).getDelegate();
+            endpoint = ((InterceptSendToEndpoint) endpoint).getOriginalEndpoint();
         }
         if (endpointType.isInstance(endpoint)) {
             return endpointType.cast(endpoint);
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultInterceptSendToEndpoint.java
similarity index 90%
rename from camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
rename to camel-core/src/main/java/org/apache/camel/impl/DefaultInterceptSendToEndpoint.java
index b437682..a36fdb8 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultInterceptSendToEndpoint.java
@@ -28,16 +28,13 @@ import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.ShutdownableService;
+import org.apache.camel.spi.InterceptSendToEndpoint;
 import org.apache.camel.support.service.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * This is an endpoint when sending to it, is intercepted and is routed in a detour
  */
-public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
-
-    private static final Logger LOG = LoggerFactory.getLogger(InterceptSendToEndpoint.class);
+public class DefaultInterceptSendToEndpoint implements InterceptSendToEndpoint, ShutdownableService {
 
     private final Endpoint delegate;
     private Processor detour;
@@ -49,7 +46,7 @@ public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
      * @param destination  the original endpoint
      * @param skip <tt>true</tt> to skip sending after the detour to the original endpoint
      */
-    public InterceptSendToEndpoint(final Endpoint destination, boolean skip) {
+    public DefaultInterceptSendToEndpoint(final Endpoint destination, boolean skip) {
         this.delegate = destination;
         this.skip = skip;
     }
@@ -58,14 +55,21 @@ public class InterceptSendToEndpoint implements Endpoint, ShutdownableService {
         this.detour = detour;
     }
 
+    @Override
     public Processor getDetour() {
         return detour;
     }
 
-    public Endpoint getDelegate() {
+    @Override
+    public Endpoint getOriginalEndpoint() {
         return delegate;
     }
 
+    @Override
+    public boolean isSkip() {
+        return skip;
+    }
+
     public String getEndpointUri() {
         return delegate.getEndpointUri();
     }
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
index cac0ec1..d75af2d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpointProcessor.java
@@ -33,16 +33,16 @@ import static org.apache.camel.processor.PipelineHelper.continueProcessing;
 
 /**
  * {@link org.apache.camel.Processor} used to interceptor and detour the routing
- * when using the {@link InterceptSendToEndpoint} functionality.
+ * when using the {@link DefaultInterceptSendToEndpoint} functionality.
  */
 public class InterceptSendToEndpointProcessor extends DefaultAsyncProducer {
 
-    private final InterceptSendToEndpoint endpoint;
+    private final DefaultInterceptSendToEndpoint endpoint;
     private final Endpoint delegate;
     private final AsyncProducer producer;
     private final boolean skip;
 
-    public InterceptSendToEndpointProcessor(InterceptSendToEndpoint endpoint, Endpoint delegate, AsyncProducer producer, boolean skip) throws Exception {
+    public InterceptSendToEndpointProcessor(DefaultInterceptSendToEndpoint endpoint, Endpoint delegate, AsyncProducer producer, boolean skip) throws Exception {
         super(delegate);
         this.endpoint = endpoint;
         this.delegate = delegate;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
index ab12cd5..9dd5cbe 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
@@ -69,7 +69,7 @@ public class InterceptSendToMockEndpointStrategy implements EndpointStrategy {
     }
 
     public Endpoint registerEndpoint(String uri, Endpoint endpoint) {
-        if (endpoint instanceof InterceptSendToEndpoint) {
+        if (endpoint instanceof DefaultInterceptSendToEndpoint) {
             // endpoint already decorated
             return endpoint;
         } else if (endpoint instanceof MockEndpoint) {
@@ -80,7 +80,7 @@ public class InterceptSendToMockEndpointStrategy implements EndpointStrategy {
 
             // only proxy if the uri is matched decorate endpoint with our proxy
             // should be false by default
-            InterceptSendToEndpoint proxy = new InterceptSendToEndpoint(endpoint, skip);
+            DefaultInterceptSendToEndpoint proxy = new DefaultInterceptSendToEndpoint(endpoint, skip);
 
             // create mock endpoint which we will use as interceptor
             // replace :// from scheme to make it easy to lookup the mock endpoint without having double :// in uri
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index 2a2f8d5..d160d58 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -49,7 +49,6 @@ import org.apache.camel.builder.EnrichClause;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.builder.ProcessClause;
-import org.apache.camel.builder.ProcessorBuilder;
 import org.apache.camel.model.cloud.ServiceCallDefinition;
 import org.apache.camel.model.dataformat.CustomDataFormat;
 import org.apache.camel.model.language.ConstantExpression;
@@ -2433,7 +2432,9 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * @return the builder
      */
     public Type setFaultBody(Expression expression) {
-        return process(ProcessorBuilder.setFaultBody(expression));
+        SetFaultBodyDefinition answer = new SetFaultBodyDefinition(expression);
+        addOutput(answer);
+        return (Type) this;
     }
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
index 9e19077..9257704 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -28,8 +28,8 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Traceable;
 import org.apache.camel.impl.DefaultProducerCache;
-import org.apache.camel.impl.InterceptSendToEndpoint;
 import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.InterceptSendToEndpoint;
 import org.apache.camel.spi.ProducerCache;
 import org.apache.camel.support.AsyncProcessorSupport;
 import org.apache.camel.support.EndpointHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
index 0462fa9..11b434c 100644
--- a/camel-core/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/InterceptSendToEndpointReifier.java
@@ -21,7 +21,7 @@ import java.util.List;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.InterceptSendToEndpoint;
+import org.apache.camel.impl.DefaultInterceptSendToEndpoint;
 import org.apache.camel.model.InterceptSendToEndpointDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinition;
@@ -46,14 +46,14 @@ class InterceptSendToEndpointReifier extends ProcessorReifier<InterceptSendToEnd
         // register endpoint callback so we can proxy the endpoint
         routeContext.getCamelContext().addRegisterEndpointCallback(new EndpointStrategy() {
             public Endpoint registerEndpoint(String uri, Endpoint endpoint) {
-                if (endpoint instanceof InterceptSendToEndpoint) {
+                if (endpoint instanceof DefaultInterceptSendToEndpoint) {
                     // endpoint already decorated
                     return endpoint;
                 } else if (matchURI == null || matchPattern(routeContext.getCamelContext(), uri, matchURI)) {
                     // only proxy if the uri is matched decorate endpoint with our proxy
                     // should be false by default
                     boolean skip = definition.getSkipSendToOriginalEndpoint() != null && definition.getSkipSendToOriginalEndpoint();
-                    InterceptSendToEndpoint proxy = new InterceptSendToEndpoint(endpoint, skip);
+                    DefaultInterceptSendToEndpoint proxy = new DefaultInterceptSendToEndpoint(endpoint, skip);
                     proxy.setDetour(detour);
                     return proxy;
                 } else {
diff --git a/camel-core/src/main/java/org/apache/camel/reifier/SetFaultBodyReifier.java b/camel-core/src/main/java/org/apache/camel/reifier/SetFaultBodyReifier.java
index ed0305a..79d5676 100644
--- a/camel-core/src/main/java/org/apache/camel/reifier/SetFaultBodyReifier.java
+++ b/camel-core/src/main/java/org/apache/camel/reifier/SetFaultBodyReifier.java
@@ -18,7 +18,6 @@ package org.apache.camel.reifier;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
-import org.apache.camel.builder.ProcessorBuilder;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.SetFaultBodyDefinition;
 import org.apache.camel.spi.RouteContext;
@@ -31,7 +30,11 @@ class SetFaultBodyReifier extends ExpressionReifier<SetFaultBodyDefinition> {
 
     @Override
     public Processor createProcessor(RouteContext routeContext) throws Exception {
-        Expression expr = definition.getExpression().createExpression(routeContext);
-        return ProcessorBuilder.setFaultBody(expr);
+        final Expression expr = definition.getExpression().createExpression(routeContext);
+        return exchange -> {
+            Object body = expr.evaluate(exchange, Object.class);
+            exchange.getMessage().setFault(true);
+            exchange.getMessage().setBody(body);
+        };
     }
 }
diff --git a/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNamespaceTest.java b/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNamespaceTest.java
index 8015508..81ea99e 100644
--- a/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNamespaceTest.java
+++ b/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNamespaceTest.java
@@ -62,7 +62,7 @@ public class XPathNamespaceTest extends ContextTestSupport {
                 Namespaces ns = new Namespaces("c", "http://acme.com/cheese");
 
                 from("direct:in").choice()
-                    .when(ns.xpath("/c:number = 55", Integer.class))
+                    .when(xpath("/c:number = 55", Integer.class).namespaces(ns))
                         .to("mock:55")
                     .otherwise()
                         .to("mock:other")
diff --git a/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java b/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java
index adfb2f2..41132ce 100644
--- a/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java
+++ b/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java
@@ -63,9 +63,9 @@ public class SetHeaderIssueTest extends ContextTestSupport {
                 Namespaces ns = new Namespaces("foo", "urn:cheese");
 
                 from("direct:start").
-                        unmarshal().string().
-                        setHeader("foo", ns.xpath("/foo:person[@name='James']")).
-                        filter(ns.xpath("/foo:person[@name='James']")).
+                    unmarshal().string().
+                    setHeader("foo", xpath("/foo:person[@name='James']").namespaces(ns)).
+                    filter(xpath("/foo:person[@name='James']").namespaces(ns)).
                         to("mock:result");
                 // END SNIPPET: example
             }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedTest.java b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedTest.java
index 7d8b23f..8e1802c 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.processor;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
-import org.apache.camel.builder.ProcessorBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.Test;
@@ -52,7 +51,9 @@ public class DeadLetterChannelExceptionCausePropagatedTest extends ContextTestSu
                 onException(RuntimeException.class).handled(true).to("mock:failed");
 
                 from("direct:start")
-                    .process(ProcessorBuilder.throwException(RUNTIME_EXCEPTION))
+                    .process(e -> {
+                        throw RUNTIME_EXCEPTION;
+                    })
                     .to("mock:success");
             }
         };
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest.java b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest.java
index bd521c2..5c37001 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.processor;
 
-import org.apache.camel.builder.ProcessorBuilder;
 import org.apache.camel.builder.RouteBuilder;
 
 public class DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTest extends DeadLetterChannelExceptionCausePropagatedTest {
@@ -27,7 +26,9 @@ public class DeadLetterChannelExceptionCausePropagatedWithDefaultErrorHandlerTes
                 onException(RuntimeException.class).handled(true).to("mock:failed");
 
                 from("direct:start")
-                    .process(ProcessorBuilder.throwException(RUNTIME_EXCEPTION))
+                    .process(e -> {
+                        throw RUNTIME_EXCEPTION;
+                    })
                     .to("mock:success");
             }
         };
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelRedeliveryDelayPatternTest.java b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelRedeliveryDelayPatternTest.java
index 3ac54a8..4a7e093 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelRedeliveryDelayPatternTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelRedeliveryDelayPatternTest.java
@@ -23,8 +23,6 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.Test;
 
-import static org.apache.camel.builder.ProcessorBuilder.throwException;
-
 /**
  * Unit test to verify delay pattern
  */
@@ -60,7 +58,7 @@ public class DeadLetterChannelRedeliveryDelayPatternTest extends ContextTestSupp
                         }
                     }));
 
-                from("direct:start").process(throwException(new Exception("Forced exception by unit test")));
+                from("direct:start").throwException(new Exception("Forced exception by unit test"));
             }
         };
     }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ValidationTest.java b/camel-core/src/test/java/org/apache/camel/processor/ValidationTest.java
index 48b32d0..568eeb9 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ValidationTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ValidationTest.java
@@ -15,12 +15,11 @@
  * limitations under the License.
  */
 package org.apache.camel.processor;
+
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.ValidationException;
-import org.apache.camel.builder.Builder;
-import org.apache.camel.builder.ProcessorBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.Before;
@@ -88,8 +87,8 @@ public class ValidationTest extends ContextTestSupport {
         validEndpoint = resolveMandatoryEndpoint("mock:valid", MockEndpoint.class);
         invalidEndpoint = resolveMandatoryEndpoint("mock:invalid", MockEndpoint.class);
 
-        validEndpoint.whenAnyExchangeReceived(ProcessorBuilder.setBody(Builder.constant("validResult")));
-        invalidEndpoint.whenAnyExchangeReceived(ProcessorBuilder.setBody(Builder.constant("invalidResult")));
+        validEndpoint.whenAnyExchangeReceived(e -> e.getMessage().setBody("validResult"));
+        invalidEndpoint.whenAnyExchangeReceived(e -> e.getMessage().setBody("invalidResult"));
     }
 
     protected RouteBuilder createRouteBuilder() {
diff --git a/camel-core/src/test/java/org/apache/camel/processor/XPathWithNamespaceBuilderFilterAndResultTypeTest.java b/camel-core/src/test/java/org/apache/camel/processor/XPathWithNamespaceBuilderFilterAndResultTypeTest.java
index 09fefd6..01f4f35 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/XPathWithNamespaceBuilderFilterAndResultTypeTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/XPathWithNamespaceBuilderFilterAndResultTypeTest.java
@@ -31,7 +31,7 @@ public class XPathWithNamespaceBuilderFilterAndResultTypeTest extends XPathWithN
 
                 // now lets create an xpath based Message Filter
                 from("direct:start").
-                        filter(ns.xpath("/c:person[@name='James']", String.class)).
+                        filter(xpath("/c:person[@name='James']", String.class).namespaces(ns)).
                         to("mock:result");
                 // END SNIPPET: example
             }
diff --git a/camel-core/src/test/java/org/apache/camel/processor/XPathWithNamespaceBuilderFilterTest.java b/camel-core/src/test/java/org/apache/camel/processor/XPathWithNamespaceBuilderFilterTest.java
index dd3579b..803baab 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/XPathWithNamespaceBuilderFilterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/XPathWithNamespaceBuilderFilterTest.java
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 package org.apache.camel.processor;
+
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
 import org.apache.camel.builder.RouteBuilder;
@@ -66,7 +67,7 @@ public class XPathWithNamespaceBuilderFilterTest extends ContextTestSupport {
 
                 // now lets create an xpath based Message Filter
                 from("direct:start").
-                        filter(ns.xpath("/c:person[@name='James']")).
+                        filter(xpath("/c:person[@name='James']").namespaces(ns)).
                         to("mock:result");
                 // END SNIPPET: example
             }
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsAndSkipTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsAndSkipTest.java
index eb00573..5badc22 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsAndSkipTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsAndSkipTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.EndpointInject;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.seda.SedaEndpoint;
-import org.apache.camel.impl.InterceptSendToEndpoint;
+import org.apache.camel.spi.InterceptSendToEndpoint;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -51,6 +51,6 @@ public class CamelSpringRunnerMockEndpointsAndSkipTest
 
         MockEndpoint.assertIsSatisfied(camelContext);
         MockEndpoint.assertIsSatisfied(camelContext2);
-        assertTrue("Original endpoint was invoked", ((SedaEndpoint) original.getDelegate()).getExchanges().isEmpty());
+        assertTrue("Original endpoint was invoked", ((SedaEndpoint) original.getOriginalEndpoint()).getExchanges().isEmpty());
     }
 }
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsTest.java
index 5c31ced..64880bf 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.EndpointInject;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.seda.SedaEndpoint;
-import org.apache.camel.impl.InterceptSendToEndpoint;
+import org.apache.camel.spi.InterceptSendToEndpoint;
 import org.junit.Test;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -52,6 +52,6 @@ public class CamelSpringRunnerMockEndpointsTest
         
         MockEndpoint.assertIsSatisfied(camelContext);
         MockEndpoint.assertIsSatisfied(camelContext2);
-        assertTrue("Original endpoint should be invoked", ((SedaEndpoint) original.getDelegate()).getExchanges().size() == 1);
+        assertTrue("Original endpoint should be invoked", ((SedaEndpoint) original.getOriginalEndpoint()).getExchanges().size() == 1);
     }
 }