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