You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/11/05 16:29:12 UTC

svn commit: r592048 - /activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AggregatorType.java

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