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 <claus.ib...@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() { }