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);
}
}