Author: davsclaus
Date: Wed Dec 9 07:39:50 2009
New Revision: 888719
URL: http://svn.apache.org/viewvc?rev=888719&view=rev
Log:
CAMEL-2269: doCatch should validate at least one exception configured to catch.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchMustHaveExceptionConfiguredTest.java
- copied, changed from r888706,
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchContinueToRouteTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java?rev=888719&r1=888718&r2=888719&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/CatchDefinition.java
Wed Dec 9 07:39:50 2009
@@ -87,6 +87,11 @@
@Override
public CatchProcessor createProcessor(RouteContext routeContext) throws
Exception {
+ // must have at least one exception
+ if (getExceptionClasses().isEmpty()) {
+ throw new IllegalArgumentException("At least one Exception must be
configured to catch");
+ }
+
Processor childProcessor = routeContext.createProcessor(this);
Predicate when = null;
Copied:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchMustHaveExceptionConfiguredTest.java
(from r888706,
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchContinueToRouteTest.java)
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchMustHaveExceptionConfiguredTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchMustHaveExceptionConfiguredTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchContinueToRouteTest.java&r1=888706&r2=888719&rev=888719&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchContinueToRouteTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TryCatchMustHaveExceptionConfiguredTest.java
Wed Dec 9 07:39:50 2009
@@ -17,48 +17,39 @@
package org.apache.camel.processor;
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
+import org.apache.camel.FailedToCreateRouteException;
import org.apache.camel.builder.RouteBuilder;
/**
* @version $Revision$
*/
-public class TryCatchContinueToRouteTest extends ContextTestSupport {
+public class TryCatchMustHaveExceptionConfiguredTest extends
ContextTestSupport {
- public void testTryCatchContinueToRoute() throws Exception {
- getMockEndpoint("mock:a").expectedBodiesReceived("Hello World");
- getMockEndpoint("mock:b").expectedBodiesReceived("Hello World");
- getMockEndpoint("mock:catch").expectedBodiesReceived("Hello World");
-
getMockEndpoint("mock:catch").message(0).property(Exchange.EXCEPTION_CAUGHT).isInstanceOf(IllegalArgumentException.class);
- getMockEndpoint("mock:c").expectedBodiesReceived("Hello World");
-
getMockEndpoint("mock:c").message(0).property(Exchange.EXCEPTION_CAUGHT).isInstanceOf(IllegalArgumentException.class);
-
- template.sendBody("direct:a", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
+ public void testTryCatchMustHaveExceptionConfigured() throws Exception {
+ context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:a")
- .to("mock:a")
- .to("direct:b")
- .to("direct:c");
-
- from("direct:b")
.doTry()
.to("mock:b")
.throwException(new IllegalArgumentException("Damn"))
- .doCatch(Exception.class)
+ .doCatch()
.to("mock:catch")
.end();
-
- from("direct:c")
- .to("mock:c");
}
- };
+ });
+
+ try {
+ context.start();
+ fail("Should throw exception");
+ } catch (FailedToCreateRouteException e) {
+ assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
+ assertEquals("At least one Exception must be configured to catch",
e.getCause().getMessage());
+ }
+ }
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
}
-}
+}
\ No newline at end of file