You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/03/17 20:58:15 UTC

svn commit: r924450 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/ examples/camel-example-tracer/src/main/resources/META-INF/spring/

Author: davsclaus
Date: Wed Mar 17 19:58:15 2010
New Revision: 924450

URL: http://svn.apache.org/viewvc?rev=924450&view=rev
Log:
Fixed camel-example-tracer after overhaul of Aggregator EIP.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultTracedRouteNodes.java
    camel/trunk/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteAggregator.java
    camel/trunk/examples/camel-example-tracer/src/main/resources/META-INF/spring/camel-context.xml

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultTracedRouteNodes.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultTracedRouteNodes.java?rev=924450&r1=924449&r2=924450&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultTracedRouteNodes.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultTracedRouteNodes.java Wed Mar 17 19:58:15 2010
@@ -32,9 +32,8 @@ import org.apache.camel.spi.TracedRouteN
  * @version $Revision$
  */
 public class DefaultTracedRouteNodes implements TracedRouteNodes {
-
-    private Stack<List<RouteNode>> routeNodes = new Stack<List<RouteNode>>();
-    private Map<ProcessorDefinition<?>, AtomicInteger> nodeCounter = new HashMap<ProcessorDefinition<?>, AtomicInteger>();
+    private final Stack<List<RouteNode>> routeNodes = new Stack<List<RouteNode>>();
+    private final Map<ProcessorDefinition<?>, AtomicInteger> nodeCounter = new HashMap<ProcessorDefinition<?>, AtomicInteger>();
 
     public DefaultTracedRouteNodes() {
         // create an empty list to start with
@@ -42,7 +41,7 @@ public class DefaultTracedRouteNodes imp
     }
 
     public void addTraced(RouteNode entry) {
-        List<RouteNode> list = routeNodes.peek();
+        List<RouteNode> list = routeNodes.isEmpty() ? null : routeNodes.peek();
         if (list == null) {
             list = new ArrayList<RouteNode>();
             routeNodes.push(list);
@@ -51,7 +50,7 @@ public class DefaultTracedRouteNodes imp
     }
 
     public RouteNode getLastNode() {
-        List<RouteNode> list = routeNodes.peek();
+        List<RouteNode> list = routeNodes.isEmpty() ? null : routeNodes.peek();
         if (list == null || list.isEmpty()) {
             return null;
         }
@@ -59,7 +58,7 @@ public class DefaultTracedRouteNodes imp
     }
 
     public RouteNode getSecondLastNode() {
-        List<RouteNode> list = routeNodes.peek();
+        List<RouteNode> list = routeNodes.isEmpty() ? null : routeNodes.peek();
         if (list == null || list.isEmpty() || list.size() == 1) {
             return null;
         }
@@ -99,4 +98,5 @@ public class DefaultTracedRouteNodes imp
         }
         return count.getAndIncrement();
     }
+
 }

Modified: camel/trunk/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteAggregator.java
URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteAggregator.java?rev=924450&r1=924449&r2=924450&view=diff
==============================================================================
--- camel/trunk/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteAggregator.java (original)
+++ camel/trunk/examples/camel-example-tracer/src/main/java/org/apache/camel/example/tracer/QuoteAggregator.java Wed Mar 17 19:58:15 2010
@@ -35,7 +35,7 @@ public class QuoteAggregator implements 
 
     public void setCoolWords(List<String> coolWords) {
         for (String s : coolWords) {
-            // use lower case to be incase sensitive
+            // use lower case to be case insensitive
             this.coolWords.add(s.toLowerCase());
         }
         // reverse order so indexOf returning -1 will be the last instead
@@ -43,16 +43,21 @@ public class QuoteAggregator implements 
     }
 
     public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
+        if (oldExchange == null) {
+            // the first time then just return the new exchange
+            return newExchange;
+        }
+
         // here we aggregate
         // oldExchange is the current "winner"
         // newExchange is the new candidate
 
         // we get the quotes of the two exchanges
-        String oldQute = oldExchange.getIn().getBody(String.class);
-        String newQute = newExchange.getIn().getBody(String.class);
+        String oldQuote = oldExchange.getIn().getBody(String.class);
+        String newQuote = newExchange.getIn().getBody(String.class);
 
         // now we compare the two and get a result indicate the best one
-        int result = new QuoteComparator().compare(oldQute, newQute);
+        int result = new QuoteComparator().compare(oldQuote, newQuote);
 
         // we return the winner
         return result > 0 ? newExchange : oldExchange;

Modified: camel/trunk/examples/camel-example-tracer/src/main/resources/META-INF/spring/camel-context.xml
URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-tracer/src/main/resources/META-INF/spring/camel-context.xml?rev=924450&r1=924449&r2=924450&view=diff
==============================================================================
--- camel/trunk/examples/camel-example-tracer/src/main/resources/META-INF/spring/camel-context.xml (original)
+++ camel/trunk/examples/camel-example-tracer/src/main/resources/META-INF/spring/camel-context.xml Wed Mar 17 19:58:15 2010
@@ -45,11 +45,15 @@
                 <!-- now we need to find the best quote, so we aggregate all the splitted words
                      we use our own strategy how to aggregate -->
                 <aggregate strategyRef="myAggregateStrategy">
-                    <!-- coorelate everything using constant true, as they are all from the same source -->
+                    <!-- correlate everything using constant true, as they are all from the same source -->
                     <correlationExpression>
                         <constant>true</constant>
                     </correlationExpression>
-                    <!-- send the result to strem out so we can see the respone in the console -->
+                    <!-- complete after 1 sec on inactivity -->
+                    <completionTimeout>
+                        <constant>1000</constant>
+                    </completionTimeout>
+                    <!-- send the result to stream out so we can see the response in the console -->
                     <to uri="stream:out"/>
                 </aggregate>
             </split>