Repository: camel Updated Branches: refs/heads/master 309374689 -> 1053a43e4
CAMEL-10698: Add information in DSL whether an expression is to be used as expression or predicate. This allows us to understand this for eg the validate goal of camel-maven-plugin or others. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1053a43e Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1053a43e Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1053a43e Branch: refs/heads/master Commit: 1053a43e4d55c0ddac7932c69a54e0e9f8bff8c6 Parents: 3093746 Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Jan 12 10:21:30 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Jan 12 10:21:30 2017 +0100 ---------------------------------------------------------------------- .../apache/camel/model/AggregateDefinition.java | 13 +++---- .../org/apache/camel/model/CatchDefinition.java | 16 +++----- .../apache/camel/model/ChoiceDefinition.java | 9 ++--- .../apache/camel/model/FilterDefinition.java | 3 +- .../apache/camel/model/InterceptDefinition.java | 3 +- .../InterceptSendToEndpointDefinition.java | 4 +- .../org/apache/camel/model/LoopDefinition.java | 1 + .../camel/model/OnCompletionDefinition.java | 7 ++-- .../camel/model/OnExceptionDefinition.java | 32 ++++++---------- .../apache/camel/model/ProcessorDefinition.java | 24 +++++------- .../org/apache/camel/model/TryDefinition.java | 10 ++--- .../apache/camel/model/ValidateDefinition.java | 3 +- .../org/apache/camel/model/WhenDefinition.java | 3 +- .../model/WhenSkipSendToEndpointDefinition.java | 3 +- .../java/org/apache/camel/spi/AsPredicate.java | 39 ++++++++++++++++++++ .../java/org/apache/camel/spi/Metadata.java | 17 --------- 16 files changed, 95 insertions(+), 92 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java index f97a459..1c2a863 100644 --- a/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/AggregateDefinition.java @@ -45,6 +45,7 @@ import org.apache.camel.processor.aggregate.ClosedCorrelationKeyException; import org.apache.camel.processor.aggregate.GroupedExchangeAggregationStrategy; import org.apache.camel.processor.aggregate.OptimisticLockRetryPolicy; import org.apache.camel.spi.AggregationRepository; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; import org.apache.camel.util.concurrent.SynchronousExecutorService; @@ -60,8 +61,7 @@ import org.apache.camel.util.concurrent.SynchronousExecutorService; public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition> implements ExecutorServiceAwareDefinition<AggregateDefinition> { @XmlElement(name = "correlationExpression", required = true) private ExpressionSubElementDefinition correlationExpression; - @XmlElement(name = "completionPredicate") - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElement(name = "completionPredicate") @AsPredicate private ExpressionSubElementDefinition completionPredicate; @XmlElement(name = "completionTimeout") private ExpressionSubElementDefinition completionTimeoutExpression; @@ -130,7 +130,7 @@ public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition public AggregateDefinition() { } - public AggregateDefinition(Predicate predicate) { + public AggregateDefinition(@AsPredicate Predicate predicate) { this(ExpressionNodeHelper.toExpressionDefinition(predicate)); } @@ -890,8 +890,7 @@ public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition /** * Sets the predicate used to determine if the aggregation is completed */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public AggregateDefinition completionPredicate(Predicate predicate) { + public AggregateDefinition completionPredicate(@AsPredicate Predicate predicate) { checkNoCompletedPredicate(); setCompletionPredicate(new ExpressionSubElementDefinition(predicate)); return this; @@ -903,7 +902,7 @@ public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition * * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @AsPredicate public PredicateClause<AggregateDefinition> completionPredicate() { PredicateClause<AggregateDefinition> clause = new PredicateClause<>(this); completionPredicate(clause); @@ -916,7 +915,7 @@ public class AggregateDefinition extends ProcessorDefinition<AggregateDefinition * * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @AsPredicate public PredicateClause<AggregateDefinition> completion() { return completionPredicate(); } http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java b/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java index 96b849a..361f9cc 100644 --- a/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java @@ -31,6 +31,7 @@ import org.apache.camel.Predicate; import org.apache.camel.Processor; import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.processor.CatchProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; import org.apache.camel.util.ExpressionToPredicateAdapter; @@ -46,11 +47,9 @@ import org.apache.camel.util.ExpressionToPredicateAdapter; public class CatchDefinition extends ProcessorDefinition<CatchDefinition> { @XmlElement(name = "exception") private List<String> exceptions = new ArrayList<String>(); - @XmlElement(name = "onWhen") - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElement(name = "onWhen") @AsPredicate private WhenDefinition onWhen; - @XmlElement(name = "handled") - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElement(name = "handled") @AsPredicate private ExpressionSubElementDefinition handled; @XmlElementRef private List<ProcessorDefinition<?>> outputs = new ArrayList<ProcessorDefinition<?>>(); @@ -175,8 +174,7 @@ public class CatchDefinition extends ProcessorDefinition<CatchDefinition> { * @param predicate predicate that determines true or false * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public CatchDefinition onWhen(Predicate predicate) { + public CatchDefinition onWhen(@AsPredicate Predicate predicate) { setOnWhen(new WhenDefinition(predicate)); return this; } @@ -204,8 +202,7 @@ public class CatchDefinition extends ProcessorDefinition<CatchDefinition> { * from a {@link Processor} or use the {@link ProcessorDefinition#throwException(Exception)} */ @Deprecated - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public CatchDefinition handled(Predicate handled) { + public CatchDefinition handled(@AsPredicate Predicate handled) { setHandledPolicy(handled); return this; } @@ -219,8 +216,7 @@ public class CatchDefinition extends ProcessorDefinition<CatchDefinition> { * from a {@link Processor} or use the {@link ProcessorDefinition#throwException(Exception)} */ @Deprecated - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public CatchDefinition handled(Expression handled) { + public CatchDefinition handled(@AsPredicate Expression handled) { setHandledPolicy(ExpressionToPredicateAdapter.toPredicate(handled)); return this; } http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java index ef7f1f0..d37058a 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/ChoiceDefinition.java @@ -30,6 +30,7 @@ import org.apache.camel.Processor; import org.apache.camel.builder.ExpressionClause; import org.apache.camel.processor.ChoiceProcessor; import org.apache.camel.processor.FilterProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; import org.apache.camel.util.CollectionStringBuffer; @@ -44,8 +45,7 @@ import org.apache.camel.util.ObjectHelper; @XmlRootElement(name = "choice") @XmlAccessorType(XmlAccessType.FIELD) public class ChoiceDefinition extends ProcessorDefinition<ChoiceDefinition> { - @XmlElementRef - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElementRef @AsPredicate private List<WhenDefinition> whenClauses = new ArrayList<WhenDefinition>(); @XmlElement private OtherwiseDefinition otherwise; @@ -180,8 +180,7 @@ public class ChoiceDefinition extends ProcessorDefinition<ChoiceDefinition> { * @param predicate the predicate * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public ChoiceDefinition when(Predicate predicate) { + public ChoiceDefinition when(@AsPredicate Predicate predicate) { addClause(new WhenDefinition(predicate)); return this; } @@ -191,7 +190,7 @@ public class ChoiceDefinition extends ProcessorDefinition<ChoiceDefinition> { * * @return expression to be used as builder to configure the when node */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @AsPredicate public ExpressionClause<ChoiceDefinition> when() { ExpressionClause<ChoiceDefinition> clause = new ExpressionClause<ChoiceDefinition>(this); addClause(new WhenDefinition(clause)); http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java index e5a18fd..f9526b5 100644 --- a/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java @@ -24,6 +24,7 @@ import org.apache.camel.Predicate; import org.apache.camel.Processor; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.processor.FilterProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; @@ -32,7 +33,7 @@ import org.apache.camel.spi.RouteContext; * * @version */ -@Metadata(label = "eip,routing", expressionMode = Metadata.ExpressionMode.predicate) +@Metadata(label = "eip,routing") @AsPredicate @XmlRootElement(name = "filter") @XmlAccessorType(XmlAccessType.FIELD) public class FilterDefinition extends ExpressionNode { http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java index 0f73840..1196133 100644 --- a/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java @@ -27,6 +27,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.Predicate; import org.apache.camel.Processor; import org.apache.camel.processor.Pipeline; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.InterceptStrategy; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; @@ -114,7 +115,7 @@ public class InterceptDefinition extends OutputDefinition<InterceptDefinition> { * @param predicate the predicate * @return the builder */ - public InterceptDefinition when(Predicate predicate) { + public InterceptDefinition when(@AsPredicate Predicate predicate) { WhenDefinition when = new WhenDefinition(predicate); addOutput(when); return this; http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java b/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java index e751182..a0b35e6 100644 --- a/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java @@ -28,6 +28,7 @@ import org.apache.camel.Predicate; import org.apache.camel.Processor; import org.apache.camel.impl.InterceptSendToEndpoint; import org.apache.camel.processor.InterceptEndpointProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.EndpointStrategy; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; @@ -149,8 +150,7 @@ public class InterceptSendToEndpointDefinition extends OutputDefinition<Intercep * @param predicate the predicate * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public InterceptSendToEndpointDefinition when(Predicate predicate) { + public InterceptSendToEndpointDefinition when(@AsPredicate Predicate predicate) { WhenDefinition when = new WhenDefinition(predicate); addOutput(when); return this; http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java index 73f34c6..5be19d7 100644 --- a/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/LoopDefinition.java @@ -26,6 +26,7 @@ import org.apache.camel.Predicate; import org.apache.camel.Processor; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.processor.LoopProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java index cf8f104..ee3462a 100644 --- a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java @@ -35,6 +35,7 @@ import org.apache.camel.Predicate; import org.apache.camel.Processor; import org.apache.camel.processor.CamelInternalProcessor; import org.apache.camel.processor.OnCompletionProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; @@ -53,8 +54,7 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi private Boolean onCompleteOnly; @XmlAttribute private Boolean onFailureOnly; - @XmlElement(name = "onWhen") - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElement(name = "onWhen") @AsPredicate private WhenDefinition onWhen; @XmlAttribute private Boolean parallelProcessing; @@ -250,8 +250,7 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi * @param predicate predicate that determines true or false * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public OnCompletionDefinition onWhen(Predicate predicate) { + public OnCompletionDefinition onWhen(@AsPredicate Predicate predicate) { setOnWhen(new WhenDefinition(predicate)); return this; } http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java index d8d0de8..96a85e9 100644 --- a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java @@ -40,6 +40,7 @@ import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.processor.CatchProcessor; import org.apache.camel.processor.FatalFallbackErrorHandler; import org.apache.camel.processor.RedeliveryPolicy; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.ClassResolver; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; @@ -58,21 +59,17 @@ import org.apache.camel.util.ObjectHelper; public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefinition> { @XmlElement(name = "exception", required = true) private List<String> exceptions = new ArrayList<String>(); - @XmlElement(name = "onWhen") - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElement(name = "onWhen") @AsPredicate private WhenDefinition onWhen; - @XmlElement(name = "retryWhile") - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElement(name = "retryWhile") @AsPredicate private ExpressionSubElementDefinition retryWhile; @XmlElement(name = "redeliveryPolicy") private RedeliveryPolicyDefinition redeliveryPolicyType; @XmlAttribute(name = "redeliveryPolicyRef") private String redeliveryPolicyRef; - @XmlElement(name = "handled") - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElement(name = "handled") @AsPredicate private ExpressionSubElementDefinition handled; - @XmlElement(name = "continued") - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @XmlElement(name = "continued") @AsPredicate private ExpressionSubElementDefinition continued; @XmlAttribute(name = "onRedeliveryRef") private String onRedeliveryRef; @@ -299,8 +296,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini * @param handled predicate that determines true or false * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public OnExceptionDefinition handled(Predicate handled) { + public OnExceptionDefinition handled(@AsPredicate Predicate handled) { setHandledPolicy(handled); return this; } @@ -311,8 +307,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini * @param handled expression that determines true or false * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public OnExceptionDefinition handled(Expression handled) { + public OnExceptionDefinition handled(@AsPredicate Expression handled) { setHandledPolicy(ExpressionToPredicateAdapter.toPredicate(handled)); return this; } @@ -325,7 +320,6 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini * @param continued continued or not * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) public OnExceptionDefinition continued(boolean continued) { Expression expression = ExpressionBuilder.constantExpression(Boolean.toString(continued)); return continued(expression); @@ -339,8 +333,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini * @param continued predicate that determines true or false * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public OnExceptionDefinition continued(Predicate continued) { + public OnExceptionDefinition continued(@AsPredicate Predicate continued) { setContinuedPolicy(continued); return this; } @@ -353,8 +346,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini * @param continued expression that determines true or false * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public OnExceptionDefinition continued(Expression continued) { + public OnExceptionDefinition continued(@AsPredicate Expression continued) { setContinuedPolicy(ExpressionToPredicateAdapter.toPredicate(continued)); return this; } @@ -368,8 +360,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini * @param predicate predicate that determines true or false * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public OnExceptionDefinition onWhen(Predicate predicate) { + public OnExceptionDefinition onWhen(@AsPredicate Predicate predicate) { setOnWhen(new WhenDefinition(predicate)); return this; } @@ -382,8 +373,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini * @param retryWhile predicate that determines when to stop retrying * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public OnExceptionDefinition retryWhile(Predicate retryWhile) { + public OnExceptionDefinition retryWhile(@AsPredicate Predicate retryWhile) { setRetryWhilePolicy(retryWhile); return this; } http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java ---------------------------------------------------------------------- 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 641d3fd..21fbe2e 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 @@ -65,12 +65,12 @@ import org.apache.camel.processor.interceptor.Delayer; import org.apache.camel.processor.interceptor.HandleFault; import org.apache.camel.processor.interceptor.StreamCaching; import org.apache.camel.processor.loadbalancer.LoadBalancer; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.IdAware; import org.apache.camel.spi.IdempotentRepository; import org.apache.camel.spi.InterceptStrategy; import org.apache.camel.spi.LifecycleStrategy; -import org.apache.camel.spi.Metadata; import org.apache.camel.spi.Policy; import org.apache.camel.spi.RouteContext; import org.slf4j.Logger; @@ -1461,7 +1461,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type> * * @return the clause used to create the filter expression */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @AsPredicate public ExpressionClause<? extends FilterDefinition> filter() { FilterDefinition filter = new FilterDefinition(); addOutput(filter); @@ -1476,8 +1476,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type> * @param predicate predicate to use * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public FilterDefinition filter(Predicate predicate) { + public FilterDefinition filter(@AsPredicate Predicate predicate) { FilterDefinition filter = new FilterDefinition(predicate); addOutput(filter); return filter; @@ -1491,8 +1490,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type> * @param expression the predicate expression to use * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public FilterDefinition filter(ExpressionDefinition expression) { + public FilterDefinition filter(@AsPredicate ExpressionDefinition expression) { FilterDefinition filter = new FilterDefinition(expression); addOutput(filter); return filter; @@ -1507,8 +1505,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type> * @param expression the expression * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public FilterDefinition filter(String language, String expression) { + public FilterDefinition filter(String language, @AsPredicate String expression) { return filter(new LanguageExpression(language, expression)); } @@ -1520,8 +1517,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type> * @param expression the expression * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public ValidateDefinition validate(Expression expression) { + public ValidateDefinition validate(@AsPredicate Expression expression) { ValidateDefinition answer = new ValidateDefinition(expression); addOutput(answer); return answer; @@ -1535,8 +1531,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type> * @param predicate the predicate * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public ValidateDefinition validate(Predicate predicate) { + public ValidateDefinition validate(@AsPredicate Predicate predicate) { ValidateDefinition answer = new ValidateDefinition(predicate); addOutput(answer); return answer; @@ -1549,7 +1544,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type> * * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) + @AsPredicate public ExpressionClause<ValidateDefinition> validate() { ValidateDefinition answer = new ValidateDefinition(); addOutput(answer); @@ -2244,8 +2239,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type> * @param predicate the while loop predicate * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public LoopDefinition loopDoWhile(Predicate predicate) { + public LoopDefinition loopDoWhile(@AsPredicate Predicate predicate) { LoopDefinition loop = new LoopDefinition(predicate); addOutput(loop); return loop; http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java b/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java index b34b190..ad8c5f3 100644 --- a/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/TryDefinition.java @@ -30,6 +30,7 @@ import org.apache.camel.Predicate; import org.apache.camel.Processor; import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.processor.TryProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; import org.apache.camel.util.ExpressionToPredicateAdapter; @@ -148,8 +149,7 @@ public class TryDefinition extends OutputDefinition<TryDefinition> { * @param predicate predicate that determines true or false * @return the builder */ - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public TryDefinition onWhen(Predicate predicate) { + public TryDefinition onWhen(@AsPredicate Predicate predicate) { // we must use a delegate so we can use the fluent builder based on TryDefinition // to configure all with try .. catch .. finally // set the onWhen predicate on all the catch definitions @@ -184,8 +184,7 @@ public class TryDefinition extends OutputDefinition<TryDefinition> { * from a {@link Processor} or use the {@link ProcessorDefinition#throwException(Exception)} */ @Deprecated - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public TryDefinition handled(Predicate handled) { + public TryDefinition handled(@AsPredicate Predicate handled) { // we must use a delegate so we can use the fluent builder based on TryDefinition // to configure all with try .. catch .. finally // set the handled on all the catch definitions @@ -206,8 +205,7 @@ public class TryDefinition extends OutputDefinition<TryDefinition> { * from a {@link Processor} or use the {@link ProcessorDefinition#throwException(Exception)} */ @Deprecated - @Metadata(expressionMode = Metadata.ExpressionMode.predicate) - public TryDefinition handled(Expression handled) { + public TryDefinition handled(@AsPredicate Expression handled) { return handled(ExpressionToPredicateAdapter.toPredicate(handled)); } http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java index 5ac9924..7b708e6 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java @@ -24,6 +24,7 @@ import org.apache.camel.Expression; import org.apache.camel.Predicate; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.processor.validation.PredicateValidatingProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; @@ -32,7 +33,7 @@ import org.apache.camel.spi.RouteContext; * * @version */ -@Metadata(label = "eip,transformation", expressionMode = Metadata.ExpressionMode.predicate) +@Metadata(label = "eip,transformation") @AsPredicate @XmlRootElement(name = "validate") @XmlAccessorType(XmlAccessType.FIELD) public class ValidateDefinition extends NoOutputExpressionNode { http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java b/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java index aca3933..d67b26d 100644 --- a/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/WhenDefinition.java @@ -21,6 +21,7 @@ import javax.xml.bind.annotation.XmlRootElement; import org.apache.camel.Predicate; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.processor.FilterProcessor; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; @@ -29,7 +30,7 @@ import org.apache.camel.spi.RouteContext; * * @version */ -@Metadata(label = "eip,routing", expressionMode = Metadata.ExpressionMode.predicate) +@Metadata(label = "eip,routing") @AsPredicate @XmlRootElement(name = "when") public class WhenDefinition extends ExpressionNode { http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java b/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java index ff124f7..4524713 100644 --- a/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/WhenSkipSendToEndpointDefinition.java @@ -21,13 +21,14 @@ import javax.xml.bind.annotation.XmlRootElement; import org.apache.camel.Exchange; import org.apache.camel.Predicate; import org.apache.camel.model.language.ExpressionDefinition; +import org.apache.camel.spi.AsPredicate; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RouteContext; /** * Predicate to determine if the message should be sent or not to the endpoint, when using interceptSentToEndpoint. */ -@Metadata(label = "configuration", expressionMode = Metadata.ExpressionMode.predicate) +@Metadata(label = "configuration") @AsPredicate @XmlRootElement(name = "whenSkipSendToEndpoint") public class WhenSkipSendToEndpointDefinition extends WhenDefinition { http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/tooling/spi-annotations/src/main/java/org/apache/camel/spi/AsPredicate.java ---------------------------------------------------------------------- diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/AsPredicate.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/AsPredicate.java new file mode 100644 index 0000000..fda5b37 --- /dev/null +++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/AsPredicate.java @@ -0,0 +1,39 @@ +/** + * 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.spi; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Indicates that the Camel language/expression should be used as predicate. + * <p/> + * For example the EIPs which accepts expression/languages may used them as either expression or predicate. + * This annotation is used to mark situation where they should be used as predicate. As by default they + * are used as expression. And example would be the Filter EIP which uses predicate. And the transform EIP + * uses an expression. + * <br/> + * Being able to distinguish between these two situations can be of importance to tooling. + */ +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) +public @interface AsPredicate { +} http://git-wip-us.apache.org/repos/asf/camel/blob/1053a43e/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java ---------------------------------------------------------------------- diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java index 03efe2a..241361e 100644 --- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java +++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java @@ -33,15 +33,6 @@ import java.lang.annotation.Target; public @interface Metadata { /** - * The expression mode to use as either expression or predicate. - */ - enum ExpressionMode { - - expression, predicate; - - } - - /** * To define one or more labels. * <p/> * Multiple labels can be defined as a comma separated value. @@ -85,12 +76,4 @@ public @interface Metadata { */ boolean secret() default false; - /** - * Used by EIPs to mark whether an expression is used as expression or predicate. - * <p/> - * For example a message transformer uses the {@link ExpressionMode#expression} mode, - * while a content based router uses {@link ExpressionMode#predicate}. - */ - ExpressionMode expressionMode() default ExpressionMode.expression; - }