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/06/19 04:01:08 UTC
[camel] 01/06: CAMEL-13658: Using OutputNode instead of
isOutputSupported method to mark if a node/definition supports outputs or
not.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4279645d5be45cfad0b731b566714c59b98849e9
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Jun 18 20:44:41 2019 +0200
CAMEL-13658: Using OutputNode instead of isOutputSupported method to mark if a node/definition supports outputs or not.
---
.../apache/camel/model/AggregateDefinition.java | 6 +---
.../org/apache/camel/model/CatchDefinition.java | 6 +---
.../org/apache/camel/model/ChoiceDefinition.java | 7 +----
.../org/apache/camel/model/DelayDefinition.java | 2 +-
.../camel/model/DynamicRouterDefinition.java | 2 +-
.../org/apache/camel/model/EnrichDefinition.java | 2 +-
.../org/apache/camel/model/ExpressionNode.java | 36 +++++++++++-----------
.../org/apache/camel/model/FilterDefinition.java | 2 +-
.../org/apache/camel/model/HystrixDefinition.java | 6 +---
.../camel/model/IdempotentConsumerDefinition.java | 2 +-
.../apache/camel/model/LoadBalanceDefinition.java | 6 +---
.../org/apache/camel/model/LoopDefinition.java | 2 +-
.../org/apache/camel/model/NoOutputDefinition.java | 3 --
.../apache/camel/model/OnCompletionDefinition.java | 6 +---
.../apache/camel/model/OnExceptionDefinition.java | 6 +---
.../org/apache/camel/model/OutputDefinition.java | 6 +---
...pressionNode.java => OutputExpressionNode.java} | 36 +++++++++-------------
.../{NoOutputDefinition.java => OutputNode.java} | 16 +++-------
.../apache/camel/model/PollEnrichDefinition.java | 2 +-
.../apache/camel/model/ProcessorDefinition.java | 6 ++--
.../camel/model/RecipientListDefinition.java | 2 +-
.../apache/camel/model/ResequenceDefinition.java | 7 +----
.../org/apache/camel/model/RouteDefinition.java | 6 +---
.../apache/camel/model/RoutingSlipDefinition.java | 2 +-
.../org/apache/camel/model/ScriptDefinition.java | 2 +-
.../org/apache/camel/model/SetBodyDefinition.java | 2 +-
.../apache/camel/model/SetFaultBodyDefinition.java | 2 +-
.../apache/camel/model/SetHeaderDefinition.java | 2 +-
.../apache/camel/model/SetPropertyDefinition.java | 2 +-
.../org/apache/camel/model/SortDefinition.java | 2 +-
.../org/apache/camel/model/SplitDefinition.java | 2 +-
.../org/apache/camel/model/ThrottleDefinition.java | 2 +-
.../apache/camel/model/TransformDefinition.java | 2 +-
.../org/apache/camel/model/ValidateDefinition.java | 2 +-
.../org/apache/camel/model/WhenDefinition.java | 2 +-
35 files changed, 68 insertions(+), 131 deletions(-)
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
index e8b6727..3eff2d2 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java
@@ -49,7 +49,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "aggregate")
@XmlAccessorType(XmlAccessType.FIELD)
-public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition> implements ExecutorServiceAwareDefinition<AggregateDefinition> {
+public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition> implements OutputNode, ExecutorServiceAwareDefinition<AggregateDefinition> {
@XmlElement(name = "correlationExpression", required = true)
private ExpressionSubElementDefinition correlationExpression;
@XmlElement(name = "completionPredicate") @AsPredicate
@@ -943,10 +943,6 @@ public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition
return outputs;
}
- public boolean isOutputSupported() {
- return true;
- }
-
public void setOutputs(List<ProcessorDefinition<?>> outputs) {
this.outputs = outputs;
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
index c0d7782..acba75a 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
@@ -37,7 +37,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "error")
@XmlRootElement(name = "doCatch")
@XmlAccessorType(XmlAccessType.FIELD)
-public class CatchDefinition extends ProcessorDefinition<CatchDefinition> {
+public class CatchDefinition extends ProcessorDefinition<CatchDefinition> implements OutputNode {
@XmlElement(name = "exception")
private List<String> exceptions = new ArrayList<>();
@XmlElement(name = "onWhen") @AsPredicate
@@ -83,10 +83,6 @@ public class CatchDefinition extends ProcessorDefinition<CatchDefinition> {
this.outputs = outputs;
}
- public boolean isOutputSupported() {
- return true;
- }
-
public List<Class<? extends Throwable>> getExceptionClasses() {
return exceptionClasses;
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
index de4dd2a..e1c4a0b 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java
@@ -41,7 +41,7 @@ import org.apache.camel.util.ObjectHelper;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "choice")
@XmlAccessorType(XmlAccessType.FIELD)
-public class ChoiceDefinition extends ProcessorDefinition<ChoiceDefinition> {
+public class ChoiceDefinition extends ProcessorDefinition<ChoiceDefinition> implements OutputNode {
@XmlElementRef @AsPredicate
private List<WhenDefinition> whenClauses = new ArrayList<>();
@XmlElement
@@ -117,11 +117,6 @@ public class ChoiceDefinition extends ProcessorDefinition<ChoiceDefinition> {
}
@Override
- public boolean isOutputSupported() {
- return true;
- }
-
- @Override
public String toString() {
return "Choice[" + getWhenClauses() + (getOtherwise() != null ? " " + getOtherwise() : "") + "]";
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
index 23dcd1d..16247b4 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/DelayDefinition.java
@@ -35,7 +35,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "delay")
@XmlAccessorType(XmlAccessType.FIELD)
-public class DelayDefinition extends NoOutputExpressionNode implements ExecutorServiceAwareDefinition<DelayDefinition> {
+public class DelayDefinition extends ExpressionNode implements ExecutorServiceAwareDefinition<DelayDefinition> {
@XmlTransient
private ExecutorService executorService;
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
index da42596..3e243e1 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
@@ -34,7 +34,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,endpoint,routing")
@XmlRootElement(name = "dynamicRouter")
@XmlAccessorType(XmlAccessType.FIELD)
-public class DynamicRouterDefinition<Type extends ProcessorDefinition<Type>> extends NoOutputExpressionNode {
+public class DynamicRouterDefinition<Type extends ProcessorDefinition<Type>> extends ExpressionNode {
public static final String DEFAULT_DELIMITER = ",";
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
index df760d2..498349f 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/EnrichDefinition.java
@@ -34,7 +34,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation")
@XmlRootElement(name = "enrich")
@XmlAccessorType(XmlAccessType.FIELD)
-public class EnrichDefinition extends NoOutputExpressionNode {
+public class EnrichDefinition extends ExpressionNode {
@XmlAttribute(name = "strategyRef")
private String aggregationStrategyRef;
@XmlAttribute(name = "strategyMethodName")
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java b/core/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
index 596432c..e5d47f1 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
@@ -16,7 +16,7 @@
*/
package org.apache.camel.model;
-import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
@@ -31,15 +31,17 @@ import org.apache.camel.builder.ExpressionClause;
import org.apache.camel.model.language.ExpressionDefinition;
/**
- * A base class for nodes which contain an expression and a number of outputs
+ * A base {@link ExpressionNode} which does <b>not</b> support any outputs.
+ * <p/>
+ * This node is to be extended by definitions which need to support an expression but the definition should not
+ * contain any outputs, such as {@link org.apache.camel.model.TransformDefinition}.
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlTransient
public abstract class ExpressionNode extends ProcessorDefinition<ExpressionNode> {
+
@XmlElementRef
private ExpressionDefinition expression;
- @XmlElementRef
- private List<ProcessorDefinition<?>> outputs = new ArrayList<>();
public ExpressionNode() {
}
@@ -74,20 +76,6 @@ public abstract class ExpressionNode extends ProcessorDefinition<ExpressionNode>
}
@Override
- public List<ProcessorDefinition<?>> getOutputs() {
- return outputs;
- }
-
- public void setOutputs(List<ProcessorDefinition<?>> outputs) {
- this.outputs = outputs;
- }
-
- @Override
- public boolean isOutputSupported() {
- return true;
- }
-
- @Override
public String getLabel() {
if (getExpression() == null) {
return "";
@@ -132,4 +120,16 @@ public abstract class ExpressionNode extends ProcessorDefinition<ExpressionNode>
}
}
+ @Override
+ public List<ProcessorDefinition<?>> getOutputs() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public ExpressionNode id(String id) {
+ // let parent handle assigning the id, as we do not support outputs
+ getParent().id(id);
+ return this;
+ }
}
+
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
index 2a59f3c..a899f42 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
@@ -31,7 +31,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing") @AsPredicate
@XmlRootElement(name = "filter")
@XmlAccessorType(XmlAccessType.FIELD)
-public class FilterDefinition extends ExpressionNode {
+public class FilterDefinition extends OutputExpressionNode {
public FilterDefinition() {
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/HystrixDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/HystrixDefinition.java
index 573a8d9..d0821f2 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/HystrixDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/HystrixDefinition.java
@@ -36,7 +36,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing,circuitbreaker")
@XmlRootElement(name = "hystrix")
@XmlAccessorType(XmlAccessType.FIELD)
-public class HystrixDefinition extends ProcessorDefinition<HystrixDefinition> {
+public class HystrixDefinition extends ProcessorDefinition<HystrixDefinition> implements OutputNode {
@XmlElement
private HystrixConfigurationDefinition hystrixConfiguration;
@@ -69,10 +69,6 @@ public class HystrixDefinition extends ProcessorDefinition<HystrixDefinition> {
return outputs;
}
- public boolean isOutputSupported() {
- return true;
- }
-
public void setOutputs(List<ProcessorDefinition<?>> outputs) {
this.outputs = outputs;
if (outputs != null) {
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java
index 1d52d89..b180c00 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/IdempotentConsumerDefinition.java
@@ -33,7 +33,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "idempotentConsumer")
@XmlAccessorType(XmlAccessType.FIELD)
-public class IdempotentConsumerDefinition extends ExpressionNode {
+public class IdempotentConsumerDefinition extends OutputExpressionNode {
@XmlAttribute(required = true)
private String messageIdRepositoryRef;
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java
index 980743b..e94ef72 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/LoadBalanceDefinition.java
@@ -45,7 +45,7 @@ import org.apache.camel.util.CollectionStringBuffer;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "loadBalance")
@XmlAccessorType(XmlAccessType.FIELD)
-public class LoadBalanceDefinition extends ProcessorDefinition<LoadBalanceDefinition> {
+public class LoadBalanceDefinition extends ProcessorDefinition<LoadBalanceDefinition> implements OutputNode {
@XmlElements({
@XmlElement(required = false, name = "failover", type = FailoverLoadBalancerDefinition.class),
@XmlElement(required = false, name = "random", type = RandomLoadBalancerDefinition.class),
@@ -76,10 +76,6 @@ public class LoadBalanceDefinition extends ProcessorDefinition<LoadBalanceDefini
}
}
- public boolean isOutputSupported() {
- return true;
- }
-
public LoadBalancerDefinition getLoadBalancerType() {
return loadBalancerType;
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
index 152575b..f28a897 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java
@@ -32,7 +32,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "loop")
@XmlAccessorType(XmlAccessType.FIELD)
-public class LoopDefinition extends ExpressionNode {
+public class LoopDefinition extends OutputExpressionNode {
@XmlAttribute
private Boolean copy;
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/NoOutputDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/NoOutputDefinition.java
index ef04578..5fd252f 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/NoOutputDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/NoOutputDefinition.java
@@ -28,7 +28,4 @@ public abstract class NoOutputDefinition<Type extends ProcessorDefinition<Type>>
return Collections.emptyList();
}
- public boolean isOutputSupported() {
- return false;
- }
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
index b7b43f0..ead26c1 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java
@@ -39,7 +39,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "configuration")
@XmlRootElement(name = "onCompletion")
@XmlAccessorType(XmlAccessType.FIELD)
-public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefinition> implements ExecutorServiceAwareDefinition<OnCompletionDefinition> {
+public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefinition> implements OutputNode, ExecutorServiceAwareDefinition<OnCompletionDefinition> {
@XmlAttribute @Metadata(defaultValue = "AfterConsumer")
private OnCompletionMode mode;
@XmlAttribute
@@ -255,10 +255,6 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi
this.outputs = outputs;
}
- public boolean isOutputSupported() {
- return true;
- }
-
public OnCompletionMode getMode() {
return mode;
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
index 87bb2eb..8b91274 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
@@ -45,7 +45,7 @@ import org.apache.camel.util.ObjectHelper;
@Metadata(label = "error")
@XmlRootElement(name = "onException")
@XmlAccessorType(XmlAccessType.FIELD)
-public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefinition> {
+public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefinition> implements OutputNode {
@XmlElement(name = "exception", required = true)
private List<String> exceptions = new ArrayList<>();
@XmlElement(name = "onWhen") @AsPredicate
@@ -712,10 +712,6 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
this.outputs = outputs;
}
- public boolean isOutputSupported() {
- return true;
- }
-
public List<String> getExceptions() {
return exceptions;
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/OutputDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/OutputDefinition.java
index 776dbc3..1401e59 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/OutputDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/OutputDefinition.java
@@ -32,7 +32,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "configuration")
@XmlType(name = "output")
@XmlAccessorType(XmlAccessType.FIELD)
-public class OutputDefinition<Type extends ProcessorDefinition<Type>> extends ProcessorDefinition<Type> {
+public class OutputDefinition<Type extends ProcessorDefinition<Type>> extends ProcessorDefinition<Type> implements OutputNode {
@XmlElementRef
protected List<ProcessorDefinition<?>> outputs = new ArrayList<>();
@@ -41,10 +41,6 @@ public class OutputDefinition<Type extends ProcessorDefinition<Type>> extends Pr
return outputs;
}
- public boolean isOutputSupported() {
- return true;
- }
-
public void setOutputs(List<ProcessorDefinition<?>> outputs) {
this.outputs = outputs;
if (outputs != null) {
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/NoOutputExpressionNode.java b/core/camel-core/src/main/java/org/apache/camel/model/OutputExpressionNode.java
similarity index 60%
rename from core/camel-core/src/main/java/org/apache/camel/model/NoOutputExpressionNode.java
rename to core/camel-core/src/main/java/org/apache/camel/model/OutputExpressionNode.java
index fb30e04..0de1ff1 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/NoOutputExpressionNode.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/OutputExpressionNode.java
@@ -16,11 +16,11 @@
*/
package org.apache.camel.model;
-import java.util.Collections;
+import java.util.ArrayList;
import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlTransient;
import org.apache.camel.Expression;
@@ -28,45 +28,37 @@ import org.apache.camel.Predicate;
import org.apache.camel.model.language.ExpressionDefinition;
/**
- * An {@link org.apache.camel.model.ExpressionNode} which does <b>not</b> support any outputs.
- * <p/>
- * This node is to be extended by definitions which need to support an expression but the definition should not
- * contain any outputs, such as {@link org.apache.camel.model.TransformDefinition}.
+ * A base class for nodes which contain an expression and a number of outputs.
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlTransient
-public abstract class NoOutputExpressionNode extends ExpressionNode {
+public abstract class OutputExpressionNode extends ExpressionNode implements OutputNode {
+
+ @XmlElementRef
+ private List<ProcessorDefinition<?>> outputs = new ArrayList<>();
- public NoOutputExpressionNode() {
+ public OutputExpressionNode() {
}
- public NoOutputExpressionNode(ExpressionDefinition expression) {
+ public OutputExpressionNode(ExpressionDefinition expression) {
super(expression);
}
- public NoOutputExpressionNode(Expression expression) {
+ public OutputExpressionNode(Expression expression) {
super(expression);
}
- public NoOutputExpressionNode(Predicate predicate) {
+ public OutputExpressionNode(Predicate predicate) {
super(predicate);
}
@Override
public List<ProcessorDefinition<?>> getOutputs() {
- return Collections.emptyList();
+ return outputs;
}
- @Override
- public boolean isOutputSupported() {
- return false;
+ public void setOutputs(List<ProcessorDefinition<?>> outputs) {
+ this.outputs = outputs;
}
- @Override
- public ExpressionNode id(String id) {
- // let parent handle assigning the id, as we do not support outputs
- getParent().id(id);
- return this;
- }
}
-
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/NoOutputDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/OutputNode.java
similarity index 67%
copy from core/camel-core/src/main/java/org/apache/camel/model/NoOutputDefinition.java
copy to core/camel-core/src/main/java/org/apache/camel/model/OutputNode.java
index ef04578..b14958a 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/NoOutputDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/OutputNode.java
@@ -16,19 +16,11 @@
*/
package org.apache.camel.model;
-import java.util.Collections;
-import java.util.List;
+import javax.xml.bind.annotation.XmlTransient;
/**
- * Base class for definitions which does not support outputs.
+ * Marker interface to mark a {@link ProcessorDefinition} that supports outputs
*/
-public abstract class NoOutputDefinition<Type extends ProcessorDefinition<Type>> extends ProcessorDefinition<Type> {
-
- public List<ProcessorDefinition<?>> getOutputs() {
- return Collections.emptyList();
- }
-
- public boolean isOutputSupported() {
- return false;
- }
+@XmlTransient
+public interface OutputNode {
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
index 1bf18db..6446d5b 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java
@@ -34,7 +34,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation")
@XmlRootElement(name = "pollEnrich")
@XmlAccessorType(XmlAccessType.FIELD)
-public class PollEnrichDefinition extends NoOutputExpressionNode {
+public class PollEnrichDefinition extends ExpressionNode {
@XmlAttribute @Metadata(defaultValue = "-1")
private Long timeout;
@XmlAttribute(name = "strategyRef")
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index ce50486..741a015 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -115,8 +115,6 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
// else to use an optional attribute in JAXB2
public abstract List<ProcessorDefinition<?>> getOutputs();
- public abstract boolean isOutputSupported();
-
/**
* Whether this definition can only be added as top-level directly on the route itself (such as onException,onCompletion,intercept, etc.)
* <p/>
@@ -162,7 +160,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
@Override
public void addOutput(ProcessorDefinition<?> output) {
- if (!isOutputSupported()) {
+ if (!(this instanceof OutputNode)) {
getParent().addOutput(output);
return;
}
@@ -730,7 +728,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
* @return the builder
*/
public Type id(String id) {
- if (isOutputSupported() && getOutputs().isEmpty()) {
+ if (this instanceof OutputNode && getOutputs().isEmpty()) {
// set id on this
setId(id);
} else {
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
index 01c6367..100bf72 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java
@@ -37,7 +37,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,endpoint,routing")
@XmlRootElement(name = "recipientList")
@XmlAccessorType(XmlAccessType.FIELD)
-public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> extends NoOutputExpressionNode implements ExecutorServiceAwareDefinition<RecipientListDefinition<Type>> {
+public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> extends ExpressionNode implements ExecutorServiceAwareDefinition<RecipientListDefinition<Type>> {
@XmlTransient
private AggregationStrategy aggregationStrategy;
@XmlTransient
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
index 5285f3e..fce95bd 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
@@ -41,7 +41,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "resequence")
@XmlAccessorType(XmlAccessType.FIELD)
-public class ResequenceDefinition extends ProcessorDefinition<ResequenceDefinition> {
+public class ResequenceDefinition extends ProcessorDefinition<ResequenceDefinition> implements OutputNode {
@Metadata(required = false)
@XmlElements({
@XmlElement(name = "batch-config", type = BatchResequencerConfig.class),
@@ -74,11 +74,6 @@ public class ResequenceDefinition extends ProcessorDefinition<ResequenceDefiniti
this.outputs = outputs;
}
- @Override
- public boolean isOutputSupported() {
- return true;
- }
-
// Fluent API
// -------------------------------------------------------------------------
/**
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
index 338cf4d..8b2d1a4 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -50,7 +50,7 @@ import org.apache.camel.spi.RoutePolicy;
@XmlType(propOrder = {"input", "inputType", "outputType", "outputs", "routeProperties"})
@XmlAccessorType(XmlAccessType.PROPERTY)
// must use XmlAccessType.PROPERTY as there is some custom logic needed to be executed in the setter methods
-public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
+public class RouteDefinition extends ProcessorDefinition<RouteDefinition> implements OutputNode {
private final AtomicBoolean prepared = new AtomicBoolean(false);
private FromDefinition input;
private List<ProcessorDefinition<?>> outputs = new ArrayList<>();
@@ -694,10 +694,6 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
}
}
- public boolean isOutputSupported() {
- return true;
- }
-
/**
* The group that this route belongs to; could be the name of the RouteBuilder class
* or be explicitly configured in the XML.
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
index c77f05a..90a3844 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
@@ -35,7 +35,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,endpoint,routing")
@XmlRootElement(name = "routingSlip")
@XmlAccessorType(XmlAccessType.FIELD)
-public class RoutingSlipDefinition<Type extends ProcessorDefinition<Type>> extends NoOutputExpressionNode {
+public class RoutingSlipDefinition<Type extends ProcessorDefinition<Type>> extends ExpressionNode {
public static final String DEFAULT_DELIMITER = ",";
@XmlAttribute @Metadata(defaultValue = ",")
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ScriptDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/ScriptDefinition.java
index fc369fb..8ecbafd 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ScriptDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ScriptDefinition.java
@@ -30,7 +30,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation")
@XmlRootElement(name = "script")
@XmlAccessorType(XmlAccessType.FIELD)
-public class ScriptDefinition extends NoOutputExpressionNode {
+public class ScriptDefinition extends ExpressionNode {
public ScriptDefinition() {
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/SetBodyDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/SetBodyDefinition.java
index bbe090d..a889c4a 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/SetBodyDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/SetBodyDefinition.java
@@ -30,7 +30,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation")
@XmlRootElement(name = "setBody")
@XmlAccessorType(XmlAccessType.FIELD)
-public class SetBodyDefinition extends NoOutputExpressionNode {
+public class SetBodyDefinition extends ExpressionNode {
public SetBodyDefinition() {
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/SetFaultBodyDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/SetFaultBodyDefinition.java
index 1c06758..d5090a2 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/SetFaultBodyDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/SetFaultBodyDefinition.java
@@ -30,7 +30,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation")
@XmlRootElement(name = "setFaultBody")
@XmlAccessorType(XmlAccessType.FIELD)
-public class SetFaultBodyDefinition extends NoOutputExpressionNode {
+public class SetFaultBodyDefinition extends ExpressionNode {
public SetFaultBodyDefinition() {
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
index ad35fdb..f54a84b 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
@@ -32,7 +32,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation")
@XmlRootElement(name = "setHeader")
@XmlAccessorType(XmlAccessType.FIELD)
-public class SetHeaderDefinition extends NoOutputExpressionNode {
+public class SetHeaderDefinition extends ExpressionNode {
@XmlAttribute(required = true)
private String headerName;
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
index bfa3ffa..c2b91d7 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
@@ -32,7 +32,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation")
@XmlRootElement(name = "setProperty")
@XmlAccessorType(XmlAccessType.FIELD)
-public class SetPropertyDefinition extends NoOutputExpressionNode {
+public class SetPropertyDefinition extends ExpressionNode {
@XmlAttribute(required = true)
private String propertyName;
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
index 2014c4a..cb76ec2 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java
@@ -34,7 +34,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "sort")
@XmlAccessorType(XmlAccessType.FIELD)
-public class SortDefinition<T> extends NoOutputExpressionNode {
+public class SortDefinition<T> extends ExpressionNode {
@XmlTransient
private Comparator<? super T> comparator;
@XmlAttribute
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
index 28f6ffc..aeb5141 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java
@@ -36,7 +36,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,routing")
@XmlRootElement(name = "split")
@XmlAccessorType(XmlAccessType.FIELD)
-public class SplitDefinition extends ExpressionNode implements ExecutorServiceAwareDefinition<SplitDefinition> {
+public class SplitDefinition extends OutputExpressionNode implements ExecutorServiceAwareDefinition<SplitDefinition> {
@XmlTransient
private AggregationStrategy aggregationStrategy;
@XmlTransient
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
index 1e9adbe..a1436ee 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
@@ -38,7 +38,7 @@ import org.apache.camel.spi.Metadata;
@XmlRootElement(name = "throttle")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {"expression", "correlationExpression", "outputs"})
-public class ThrottleDefinition extends NoOutputExpressionNode implements ExecutorServiceAwareDefinition<ThrottleDefinition> {
+public class ThrottleDefinition extends ExpressionNode implements ExecutorServiceAwareDefinition<ThrottleDefinition> {
@XmlElement(name = "correlationExpression")
private ExpressionSubElementDefinition correlationExpression;
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/TransformDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/TransformDefinition.java
index d97f89a..75c6c92 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/TransformDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/TransformDefinition.java
@@ -30,7 +30,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation")
@XmlRootElement(name = "transform")
@XmlAccessorType(XmlAccessType.FIELD)
-public class TransformDefinition extends NoOutputExpressionNode {
+public class TransformDefinition extends ExpressionNode {
public TransformDefinition() {
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
index 8b59d50..3e9ba4d 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
@@ -32,7 +32,7 @@ import org.apache.camel.spi.Metadata;
@Metadata(label = "eip,transformation") @AsPredicate
@XmlRootElement(name = "validate")
@XmlAccessorType(XmlAccessType.FIELD)
-public class ValidateDefinition extends NoOutputExpressionNode {
+public class ValidateDefinition extends ExpressionNode {
public ValidateDefinition() {
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
index 9022a03..fdf63eb 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java
@@ -28,7 +28,7 @@ import org.apache.camel.spi.Metadata;
*/
@Metadata(label = "eip,routing") @AsPredicate
@XmlRootElement(name = "when")
-public class WhenDefinition extends ExpressionNode {
+public class WhenDefinition extends OutputExpressionNode {
public WhenDefinition() {
}