Author: jstrachan
Date: Mon Nov  5 07:29:11 2007
New Revision: 592048

URL: http://svn.apache.org/viewvc?rev=592048&view=rev
Log:
allow predicates to be specified in the DSL for completion of Aggregators

Modified:
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregatorType.java

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregatorType.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregatorType.java?rev=592048&r1=592047&r2=592048&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregatorType.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregatorType.java
 Mon Nov  5 07:29:11 2007
@@ -31,6 +31,7 @@
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
+import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.impl.RouteContext;
 import org.apache.camel.model.language.ExpressionType;
 import org.apache.camel.processor.Aggregator;
@@ -169,5 +170,31 @@
         setBatchTimeout(batchTimeout);
         return this;
     }
-    
+
+    /**
+     * Sets the predicate used to determine if the aggregation is completed
+     *
+     * @return the clause used to create the predicate
+     */
+    public ExpressionClause<AggregatorType> completedPredicate() {
+        checkNoCompletedPredicate();
+        ExpressionClause<AggregatorType> clause = new 
ExpressionClause<AggregatorType>(this);
+        completedPredicate = new CompletedPredicate(clause);
+        return clause;
+    }
+
+    /**
+     * Sets the predicate used to determine if the aggregation is completed
+     */
+    public AggregatorType completedPredicate(Predicate predicate) {
+        checkNoCompletedPredicate();
+        completedPredicate = new CompletedPredicate(predicate);
+        return this;
+    }
+
+    protected void checkNoCompletedPredicate() {
+        if (completedPredicate != null) {
+            throw new IllegalArgumentException("There already is a 
completedPredicate defined for this aggregator: " + this);
+        }
+    }
 }


Reply via email to