Author: davsclaus
Date: Fri Jan 18 16:13:54 2013
New Revision: 1435221

URL: http://svn.apache.org/viewvc?rev=1435221&view=rev
Log:
CAMEL-5957: Fixed aggregator should fallback and do timeout completion check if 
size was done but not completed.

Added:
    
camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateExpressionSizeOverrideFixedTimeoutTest.java
      - copied unchanged from r1435220, 
camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateExpressionSizeOverrideFixedTimeoutTest.java
Modified:
    camel/branches/camel-2.9.x/   (props changed)
    
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
    
camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateExpressionSizeOverrideFixedTest.java

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1435219
  Merged /camel/branches/camel-2.10.x:r1435220

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java?rev=1435221&r1=1435220&r2=1435221&view=diff
==============================================================================
--- 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
 (original)
+++ 
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
 Fri Jan 18 16:13:54 2013
@@ -303,19 +303,19 @@ public class AggregateProcessor extends 
             }
         }
 
+        boolean sizeChecked = false;
         if (getCompletionSizeExpression() != null) {
             Integer value = getCompletionSizeExpression().evaluate(exchange, 
Integer.class);
             if (value != null && value > 0) {
+                // mark as already checked size as expression takes precedence 
over static configured
+                sizeChecked = true;
                 int size = exchange.getProperty(Exchange.AGGREGATED_SIZE, 1, 
Integer.class);
                 if (size >= value) {
                     return "size";
-                } else {
-                    // not completed yet
-                    return null;
                 }
             }
         }
-        if (getCompletionSize() > 0) {
+        if (!sizeChecked && getCompletionSize() > 0) {
             int size = exchange.getProperty(Exchange.AGGREGATED_SIZE, 1, 
Integer.class);
             if (size >= getCompletionSize()) {
                 return "size";

Modified: 
camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateExpressionSizeOverrideFixedTest.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateExpressionSizeOverrideFixedTest.java?rev=1435221&r1=1435220&r2=1435221&view=diff
==============================================================================
--- 
camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateExpressionSizeOverrideFixedTest.java
 (original)
+++ 
camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateExpressionSizeOverrideFixedTest.java
 Fri Jan 18 16:13:54 2013
@@ -20,6 +20,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.processor.BodyInAggregatingStrategy;
 
@@ -30,6 +31,7 @@ public class AggregateExpressionSizeOver
 
     public void testAggregateExpressionSize() throws Exception {
         getMockEndpoint("mock:aggregated").expectedBodiesReceived("A+B+C");
+        
getMockEndpoint("mock:aggregated").expectedPropertyReceived(Exchange.AGGREGATED_COMPLETED_BY,
 "size");
 
         Map<String, Object> headers = new HashMap<String, Object>();
         headers.put("id", 123);


Reply via email to