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/12/21 07:43:04 UTC

svn commit: r1051386 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java test/java/org/apache/camel/processor/onexception/RouteScopedOnExceptionSameTypeTest.java

Author: davsclaus
Date: Tue Dec 21 06:43:04 2010
New Revision: 1051386

URL: http://svn.apache.org/viewvc?rev=1051386&view=rev
Log:
CAMEL-3448: Added more tests.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/RouteScopedOnExceptionSameTypeTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java?rev=1051386&r1=1051385&r2=1051386&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategy.java Tue Dec 21 06:43:04 2010
@@ -185,6 +185,7 @@ public class DefaultExceptionPolicyStrat
                 candidates.put(candidateDiff, candidate);
             } else {
                 // we have an existing candidate already which we should prefer to use
+                // for example we check route scope before context scope (preferring route scopes)
                 if (LOG.isTraceEnabled()) {
                     LOG.trace("Existing candidate " + candidates.get(candidateDiff)
                         + " takes precedence over " + candidate + " at level " + candidateDiff);

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/RouteScopedOnExceptionSameTypeTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/RouteScopedOnExceptionSameTypeTest.java?rev=1051386&r1=1051385&r2=1051386&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/RouteScopedOnExceptionSameTypeTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/RouteScopedOnExceptionSameTypeTest.java Tue Dec 21 06:43:04 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.processor.onexception;
 
+import java.io.FileNotFoundException;
 import java.io.IOException;
 
 import org.apache.camel.ContextTestSupport;
@@ -297,4 +298,58 @@ public class RouteScopedOnExceptionSameT
         assertMockEndpointsSatisfied();
     }
 
+    public void testOnExceptionRouteAndOnlyGlobalBestMatchType() throws Exception {
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                onException(IOException.class)
+                    .handled(true)
+                    .to("mock:foo");
+
+                from("direct:start")
+                    .onException(Exception.class)
+                        .handled(true)
+                        .to("mock:damn")
+                    .end()
+                    .throwException(new FileNotFoundException("unknown.txt"));
+            }
+        });
+        context.start();
+
+        // this time we pick global scoped as its the best match, so foo should get the message
+        getMockEndpoint("mock:damn").expectedMessageCount(0);
+        getMockEndpoint("mock:foo").expectedMessageCount(1);
+
+        template.sendBody("direct:start", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testOnExceptionRouteBestMatchAndGlobalSameType() throws Exception {
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                onException(IOException.class)
+                    .handled(true)
+                    .to("mock:foo");
+
+                from("direct:start")
+                    .onException(IOException.class)
+                        .handled(true)
+                        .to("mock:damn")
+                    .end()
+                    .throwException(new FileNotFoundException("unknown.txt"));
+            }
+        });
+        context.start();
+
+        // route scope is preferred over context scoped
+        getMockEndpoint("mock:damn").expectedMessageCount(1);
+        getMockEndpoint("mock:foo").expectedMessageCount(0);
+
+        template.sendBody("direct:start", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
 }