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

Reply via email to