Author: ningjiang
Date: Thu Jul 24 03:39:38 2008
New Revision: 679345
URL: http://svn.apache.org/viewvc?rev=679345&view=rev
Log:
CAMEL-751 Get the CamelContext ErrorHandler to work
Added:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
(with props)
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=679345&r1=679344&r2=679345&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
Thu Jul 24 03:39:38 2008
@@ -208,10 +208,10 @@
/**
* Gets the default error handler builder which is inherited by the routes
*/
- public ErrorHandlerBuilder getErrorHandlerBuilder();
+ ErrorHandlerBuilder getErrorHandlerBuilder();
/**
* Sets the default error handler builder which is inherited by the routes
*/
- public void setErrorHandlerBuilder(ErrorHandlerBuilder
errorHandlerBuilder);
+ void setErrorHandlerBuilder(ErrorHandlerBuilder errorHandlerBuilder);
}
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java?rev=679345&r1=679344&r2=679345&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
Thu Jul 24 03:39:38 2008
@@ -247,11 +247,7 @@
protected ErrorHandlerBuilder createErrorHandlerBuilder() {
if (isInheritErrorHandler()) {
- ErrorHandlerBuilder errorHandler= context.getErrorHandlerBuilder();
- if (errorHandler == null) {
- errorHandler = new DeadLetterChannelBuilder();
- }
- return errorHandler;
+ return new DeadLetterChannelBuilder();
} else {
return new NoErrorHandlerBuilder();
}
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java?rev=679345&r1=679344&r2=679345&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
Thu Jul 24 03:39:38 2008
@@ -173,6 +173,11 @@
// -----------------------------------------------------------------------
protected void checkInitialized() throws Exception {
if (initialized.compareAndSet(false, true)) {
+ // Set the CamelContext ErrorHandler here
+ CamelContext camelContext = getContext();
+ if (camelContext.getErrorHandlerBuilder() != null) {
+ setErrorHandlerBuilder(camelContext.getErrorHandlerBuilder());
+ }
configure();
populateRoutes(routes);
}
@@ -194,21 +199,21 @@
public RoutesType getRouteCollection() {
return this.routeCollection;
}
-
+
/**
- * Completely disable stream caching for all routes being defined in the
same RouteBuilder after this.
+ * Completely disable stream caching for all routes being defined in the
same RouteBuilder after this.
*/
public void noStreamCaching() {
StreamCachingInterceptor.noStreamCaching(routeCollection.getInterceptors());
}
-
+
/**
* Enable stream caching for all routes being defined in the same
RouteBuilder after this call.
*/
public void streamCaching() {
routeCollection.intercept(new StreamCachingInterceptor());
}
-
+
/**
* Factory method
*/
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java?rev=679345&r1=679344&r2=679345&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/MessageVariableResolver.java
Thu Jul 24 03:39:38 2008
@@ -37,7 +37,7 @@
* A variable resolver for XPath expressions which support properties on the
* messge, exchange as well as making system properties and environment
* properties available.
- *
+ *
* @version $Revision$
*/
public class MessageVariableResolver implements XPathVariableResolver {
@@ -75,8 +75,8 @@
try {
answer = System.getProperty(localPart);
} catch (Exception e) {
- LOG.debug("Security exception evaluating system property: " +
localPart +
- ". Reason: " + e, e);
+ LOG.debug("Security exception evaluating system property: " +
localPart
+ + ". Reason: " + e, e);
}
} else if (uri.equals(ENVIRONMENT_VARIABLES)) {
answer = System.getenv().get(localPart);
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=679345&r1=679344&r2=679345&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
Thu Jul 24 03:39:38 2008
@@ -338,7 +338,7 @@
public void addRoutes(Routes builder) throws Exception {
// lets now add the routes from the builder
- builder.setContext(this);
+ builder.setContext(this);
List<Route> routeList = builder.getRouteList();
LOG.debug("Adding routes from: " + builder + " routes: " + routeList);
addRoutes(routeList);
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java?rev=679345&r1=679344&r2=679345&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorType.java
Thu Jul 24 03:39:38 2008
@@ -1596,7 +1596,7 @@
if (errorHandlerRef != null) {
return new ErrorHandlerBuilderRef(errorHandlerRef);
}
- if (isInheritErrorHandler()) {
+ if (isInheritErrorHandler()) {
return new DeadLetterChannelBuilder();
} else {
return new NoErrorHandlerBuilder();
Added:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java?rev=679345&view=auto
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
(added)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
Thu Jul 24 03:39:38 2008
@@ -0,0 +1,115 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.builder;
+
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Processor;
+import org.apache.camel.Route;
+import org.apache.camel.TestSupport;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.EventDrivenConsumerRoute;
+import org.apache.camel.processor.DeadLetterChannel;
+import org.apache.camel.processor.LoggingErrorHandler;
+import org.apache.camel.processor.RedeliveryPolicy;
+import org.apache.camel.processor.SendProcessor;
+
+public class ContextErrorHandlerTest extends ContextTestSupport {
+
+ protected void setUp() throws Exception {
+ setUseRouteBuilder(false);
+ super.setUp();
+ RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
+ redeliveryPolicy.maximumRedeliveries(1);
+ redeliveryPolicy.setUseExponentialBackOff(true);
+ DeadLetterChannelBuilder deadLetterChannelBuilder = new
DeadLetterChannelBuilder();
+ deadLetterChannelBuilder.setRedeliveryPolicy(redeliveryPolicy);
+ context.setErrorHandlerBuilder(deadLetterChannelBuilder);
+ }
+
+ protected void startCamelContext() throws Exception {
+ // do nothing here
+ }
+
+ protected void stopCamelContext() throws Exception {
+ // do nothing here
+ }
+
+ protected List<Route> getRouteList(RouteBuilder builder) throws Exception {
+ context.addRoutes(builder);
+ context.start();
+ List<Route> answer = context.getRoutes();
+ context.stop();
+ return answer;
+ }
+
+ public void testOverloadingTheDefaultErrorHandler() throws Exception {
+
+ RouteBuilder builder = new RouteBuilder() {
+ public void configure() {
+ errorHandler(loggingErrorHandler("FOO.BAR"));
+ from("seda:a").to("seda:b");
+ }
+ };
+
+ List<Route> list = getRouteList(builder);
+ assertEquals("Number routes created" + list, 1, list.size());
+ for (Route route : list) {
+ Endpoint key = route.getEndpoint();
+ assertEquals("From endpoint", "seda:a", key.getEndpointUri());
+
+ EventDrivenConsumerRoute consumerRoute =
assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+ Processor processor = consumerRoute.getProcessor();
+ processor = unwrap(processor);
+ LoggingErrorHandler loggingProcessor =
assertIsInstanceOf(LoggingErrorHandler.class, processor);
+ processor = unwrap(loggingProcessor.getOutput());
+ SendProcessor sendProcessor =
assertIsInstanceOf(SendProcessor.class, processor);
+ log.debug("Found sendProcessor: " + sendProcessor);
+ }
+ }
+
+ public void testGetTheDefaultErrorHandlerFromContext() throws Exception {
+
+ RouteBuilder builder = new RouteBuilder() {
+ public void configure() {
+ from("seda:a").to("seda:b");
+ }
+ };
+
+ List<Route> list = getRouteList(builder);
+ assertEquals("Number routes created" + list, 1, list.size());
+ for (Route route : list) {
+ Endpoint key = route.getEndpoint();
+ assertEquals("From endpoint", "seda:a", key.getEndpointUri());
+
+ EventDrivenConsumerRoute consumerRoute =
assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+ Processor processor = consumerRoute.getProcessor();
+ processor = unwrap(processor);
+
+ DeadLetterChannel deadLetterChannel =
assertIsInstanceOf(DeadLetterChannel.class, processor);
+
+ RedeliveryPolicy redeliveryPolicy =
deadLetterChannel.getRedeliveryPolicy();
+
+ assertEquals("getMaximumRedeliveries()", 1,
redeliveryPolicy.getMaximumRedeliveries());
+ assertEquals("isUseExponentialBackOff()", true,
redeliveryPolicy.isUseExponentialBackOff());
+ }
+ }
+
+}
Propchange:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ContextErrorHandlerTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date