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 2009/09/08 11:24:31 UTC
svn commit: r812410 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/main/java/org/apache/camel/management/
camel-core/src/main/java/org/apache/camel/management/mbean/
camel-core/src/main/java/org/apache/camel/model/...
Author: davsclaus
Date: Tue Sep 8 09:24:26 2009
New Revision: 812410
URL: http://svn.apache.org/viewvc?rev=812410&view=rev
Log:
CAMEL-1996: First work of managed error handler (work in progress). Fixed CS.
Added:
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java (with props)
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java (with props)
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest.java
- copied, changed from r812050, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerConfigTest.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java
- copied, changed from r812347, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest-context.xml
- copied, changed from r812050, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/ErrorHandlerConfigTest-context.xml
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.xml
- copied, changed from r812347, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/DummyLifecycleStrategy.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
camel/trunk/examples/camel-example-management/src/main/resources/META-INF/spring/camel-context.xml
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java Tue Sep 8 09:24:26 2009
@@ -48,75 +48,92 @@
public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
if (handler == null) {
- handler = lookupErrorHandlerBuilder(routeContext);
+ handler = createErrorHandler(routeContext);
}
return handler.createErrorHandler(routeContext, processor);
}
- /**
- * Returns whether a specific error handler builder has been configured or not.
- * <p/>
- * Can be used to test if none has been configured and then install a custom error handler builder
- * replacing the default error handler (that would have been used as fallback otherwise).
- * <br/>
- * This is for instance used by the transacted policy to setup a TransactedErrorHandlerBuilder
- * in camel-spring.
- */
- public boolean isErrorHandlerBuilderConfigued() {
- return !DEFAULT_ERROR_HANDLER_BUILDER.equals(getRef());
- }
-
public boolean supportTransacted() {
return supportTransacted;
}
- public ErrorHandlerBuilder lookupErrorHandlerBuilder(RouteContext routeContext) {
- if (handler == null) {
- // if the ref is the default then the we do not have any explicit error handler configured
- // if that is the case then use error handlers configured on the route, as for instance
- // the transacted error handler could have been configured on the route so we should use that one
- if (!isErrorHandlerBuilderConfigued()) {
- // see if there has been configured a route builder on the route
- handler = routeContext.getRoute().getErrorHandlerBuilder();
- if (handler == null) {
- handler = routeContext.lookup(routeContext.getRoute().getErrorHandlerRef(), ErrorHandlerBuilder.class);
- }
- if (handler == null) {
- // fallback to the default error handler if none configured on the route
- handler = new DefaultErrorHandlerBuilder();
- }
- // check if its also a ref with no error handler configuration like me
- if (handler instanceof ErrorHandlerBuilderRef) {
- ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef) handler;
- if (!other.isErrorHandlerBuilderConfigued()) {
- // the other has also no explict error handler configured then fallback to the default error handler
- // otherwise we could recursive loop forever (triggered by createErrorHandler method)
- handler = new DefaultErrorHandlerBuilder();
- // inherit the error handlers from the other as they are to be shared
- // this is needed by camel-spring when none error handler has been explicit configured
- handler.setErrorHandlers(other.getErrorHandlers());
- }
+ /**
+ * Lookup the error handler by the given ref
+ *
+ * @param routeContext the route context
+ * @param ref reference id for the error handler
+ * @return the error handler
+ */
+ public static ErrorHandlerBuilder lookupErrorHandlerBuilder(RouteContext routeContext, String ref) {
+ ErrorHandlerBuilder answer;
+
+ // if the ref is the default then we do not have any explicit error handler configured
+ // if that is the case then use error handlers configured on the route, as for instance
+ // the transacted error handler could have been configured on the route so we should use that one
+ if (!isErrorHandlerBuilderConfigured(ref)) {
+ // see if there has been configured a route builder on the route
+ answer = routeContext.getRoute().getErrorHandlerBuilder();
+ if (answer == null) {
+ answer = routeContext.lookup(routeContext.getRoute().getErrorHandlerRef(), ErrorHandlerBuilder.class);
+ }
+ if (answer == null) {
+ // fallback to the default error handler if none configured on the route
+ answer = new DefaultErrorHandlerBuilder();
+ }
+ // check if its also a ref with no error handler configuration like me
+ if (answer instanceof ErrorHandlerBuilderRef) {
+ ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef) answer;
+ String otherRef = other.getRef();
+ if (!isErrorHandlerBuilderConfigured(otherRef)) {
+ // the other has also no explicit error handler configured then fallback to the default error handler
+ // otherwise we could recursive loop forever (triggered by createErrorHandler method)
+ answer = new DefaultErrorHandlerBuilder();
+ // inherit the error handlers from the other as they are to be shared
+ // this is needed by camel-spring when none error handler has been explicit configured
+ answer.setErrorHandlers(other.getErrorHandlers());
}
- } else {
- // use specific configured error handler
- handler = routeContext.lookup(ref, ErrorHandlerBuilder.class);
}
+ } else {
+ // use specific configured error handler
+ answer = routeContext.lookup(ref, ErrorHandlerBuilder.class);
+ }
- ObjectHelper.notNull(handler, "error handler '" + ref + "'");
+ return answer;
+ }
- // configure if the handler support transacted
- supportTransacted = handler.supportTransacted();
+ public String getRef() {
+ return ref;
+ }
- List<OnExceptionDefinition> list = getErrorHandlers();
- for (OnExceptionDefinition exceptionType : list) {
- handler.addErrorHandlers(exceptionType);
- }
+ public ErrorHandlerBuilder getHandler() {
+ return handler;
+ }
+
+ private ErrorHandlerBuilder createErrorHandler(RouteContext routeContext) {
+ handler = lookupErrorHandlerBuilder(routeContext, getRef());
+ ObjectHelper.notNull(handler, "error handler '" + ref + "'");
+
+ // configure if the handler support transacted
+ supportTransacted = handler.supportTransacted();
+
+ List<OnExceptionDefinition> list = getErrorHandlers();
+ for (OnExceptionDefinition exceptionType : list) {
+ handler.addErrorHandlers(exceptionType);
}
return handler;
}
- public String getRef() {
- return ref;
+ /**
+ * Returns whether a specific error handler builder has been configured or not.
+ * <p/>
+ * Can be used to test if none has been configured and then install a custom error handler builder
+ * replacing the default error handler (that would have been used as fallback otherwise).
+ * <br/>
+ * This is for instance used by the transacted policy to setup a TransactedErrorHandlerBuilder
+ * in camel-spring.
+ */
+ private static boolean isErrorHandlerBuilderConfigured(String ref) {
+ return !DEFAULT_ERROR_HANDLER_BUILDER.equals(ref);
}
@Override
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java Tue Sep 8 09:24:26 2009
@@ -26,10 +26,12 @@
import org.apache.camel.Component;
import org.apache.camel.Consumer;
import org.apache.camel.Endpoint;
+import org.apache.camel.ManagementStatisticsLevel;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.Route;
import org.apache.camel.Service;
+import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.impl.EventDrivenConsumerRoute;
import org.apache.camel.impl.ScheduledPollConsumer;
import org.apache.camel.management.mbean.ManagedBrowsableEndpoint;
@@ -38,6 +40,7 @@
import org.apache.camel.management.mbean.ManagedConsumer;
import org.apache.camel.management.mbean.ManagedDelayer;
import org.apache.camel.management.mbean.ManagedEndpoint;
+import org.apache.camel.management.mbean.ManagedErrorHandler;
import org.apache.camel.management.mbean.ManagedPerformanceCounter;
import org.apache.camel.management.mbean.ManagedProcessor;
import org.apache.camel.management.mbean.ManagedProducer;
@@ -60,7 +63,6 @@
import org.apache.camel.spi.BrowsableEndpoint;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.ManagementAware;
-import org.apache.camel.ManagementStatisticsLevel;
import org.apache.camel.spi.ManagementStrategy;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.util.KeyValueHolder;
@@ -368,6 +370,29 @@
// when camel itself is shutting down
}
+ public void onErrorHandlerAdd(RouteContext routeContext, Processor errorHandler, ErrorHandlerBuilder errorHandlerBuilder) {
+ // the agent hasn't been started
+ if (!initialized) {
+ return;
+ }
+
+ Object managedObject = new ManagedErrorHandler(routeContext, errorHandler, errorHandlerBuilder);
+
+ // skip already managed services, for example if a route has been restarted
+ if (getStrategy().isManaged(managedObject, null)) {
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("The error handler builder is already managed: " + errorHandlerBuilder);
+ }
+ return;
+ }
+
+ try {
+ getStrategy().manageObject(managedObject);
+ } catch (Exception e) {
+ LOG.warn("Could not register error handler builder: " + errorHandlerBuilder + " as ErrorHandlerMBean.", e);
+ }
+ }
+
public void onRouteContextCreate(RouteContext routeContext) {
// the agent hasn't been started
if (!initialized) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java Tue Sep 8 09:24:26 2009
@@ -28,9 +28,12 @@
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.Route;
+import org.apache.camel.builder.ErrorHandlerBuilder;
+import org.apache.camel.builder.ErrorHandlerBuilderRef;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.spi.InterceptStrategy;
import org.apache.camel.spi.ManagementNamingStrategy;
+import org.apache.camel.spi.RouteContext;
import org.apache.camel.util.ObjectHelper;
/**
@@ -49,6 +52,7 @@
public static final String TYPE_ROUTE = "routes";
public static final String TYPE_COMPONENT = "components";
public static final String TYPE_TRACER = "tracer";
+ public static final String TYPE_ERRORHANDLER = "errorhandlers";
protected String domainName;
protected String hostName = "localhost";
@@ -114,6 +118,48 @@
return createObjectName(buffer);
}
+ public ObjectName getObjectNameForErrorHandler(RouteContext routeContext, Processor errorHandler, ErrorHandlerBuilder builder) throws MalformedObjectNameException {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(domainName).append(":");
+ buffer.append(KEY_CONTEXT + "=").append(getContextId(routeContext.getCamelContext())).append(",");
+ buffer.append(KEY_TYPE + "=").append(TYPE_ERRORHANDLER).append(",");
+
+ // we want to only register one instance of the various error handler types and thus do some lookup
+ // if its a ErrorHandlerBuildRef. We need a bit of work to do that as there are potential indirection.
+ String ref = null;
+ if (builder instanceof ErrorHandlerBuilderRef) {
+ ErrorHandlerBuilderRef builderRef = (ErrorHandlerBuilderRef) builder;
+
+ // it has not then its an indirection and we should do some work to lookup the real builder
+ ref = builderRef.getRef();
+ builder = builderRef.lookupErrorHandlerBuilder(routeContext, builderRef.getRef());
+
+ // must do a 2nd lookup in case this is also a reference
+ // (this happens with spring DSL using errorHandlerRef on <route> as it gets a bit
+ // complex with indirections for error handler references
+ if (builder instanceof ErrorHandlerBuilderRef) {
+ builderRef = (ErrorHandlerBuilderRef) builder;
+ // does it refer to a non default error handler then do a 2nd lookup
+ if (!builderRef.getRef().equals(ErrorHandlerBuilderRef.DEFAULT_ERROR_HANDLER_BUILDER)) {
+ builder = builderRef.lookupErrorHandlerBuilder(routeContext, builderRef.getRef());
+ ref = builderRef.getRef();
+ }
+ }
+ }
+
+ if (ref != null) {
+ String name = builder.getClass().getSimpleName() + "(ref:" + ref + ")";
+ buffer.append(KEY_NAME + "=").append(ObjectName.quote(name));
+ } else {
+ // create a name based on its instance
+ buffer.append(KEY_NAME + "=")
+ .append(builder.getClass().getSimpleName())
+ .append("(").append(getIdentityHashCode(builder)).append(")");
+ }
+
+ return createObjectName(buffer);
+ }
+
public ObjectName getObjectNameForConsumer(CamelContext context, Consumer consumer) throws MalformedObjectNameException {
StringBuffer buffer = new StringBuffer();
buffer.append(domainName).append(":");
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java Tue Sep 8 09:24:26 2009
@@ -18,12 +18,12 @@
import java.util.EventObject;
+import org.apache.camel.ManagementStatisticsLevel;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.spi.EventFactory;
import org.apache.camel.spi.EventNotifier;
import org.apache.camel.spi.ManagementAgent;
import org.apache.camel.spi.ManagementNamingStrategy;
-import org.apache.camel.ManagementStatisticsLevel;
import org.apache.camel.spi.ManagementStrategy;
import org.fusesource.commons.management.Statistic;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java Tue Sep 8 09:24:26 2009
@@ -23,6 +23,7 @@
import org.apache.camel.management.mbean.ManagedComponent;
import org.apache.camel.management.mbean.ManagedConsumer;
import org.apache.camel.management.mbean.ManagedEndpoint;
+import org.apache.camel.management.mbean.ManagedErrorHandler;
import org.apache.camel.management.mbean.ManagedProcessor;
import org.apache.camel.management.mbean.ManagedProducer;
import org.apache.camel.management.mbean.ManagedRoute;
@@ -93,6 +94,11 @@
objectName = getManagementNamingStrategy().getObjectNameForRoute(mr.getRoute());
}
+ if (managedObject instanceof ManagedErrorHandler) {
+ ManagedErrorHandler meh = (ManagedErrorHandler) managedObject;
+ objectName = getManagementNamingStrategy().getObjectNameForErrorHandler(meh.getRouteContext(), meh.getErrorHandler(), meh.getErrorHandlerBuilder());
+ }
+
if (managedObject instanceof ManagedProcessor) {
ManagedProcessor mp = (ManagedProcessor) managedObject;
objectName = getManagementNamingStrategy().getObjectNameForProcessor(mp.getContext(), mp.getProcessor(), mp.getDefinition());
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java?rev=812410&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java Tue Sep 8 09:24:26 2009
@@ -0,0 +1,77 @@
+/**
+ * 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.management.mbean;
+
+import org.apache.camel.Processor;
+import org.apache.camel.builder.ErrorHandlerBuilder;
+import org.apache.camel.builder.ErrorHandlerBuilderRef;
+import org.apache.camel.processor.RedeliveryErrorHandler;
+import org.apache.camel.spi.RouteContext;
+import org.springframework.jmx.export.annotation.ManagedAttribute;
+import org.springframework.jmx.export.annotation.ManagedResource;
+
+/**
+ * @version $Revision$
+ */
+@ManagedResource(description = "Managed ErrorHandler")
+public class ManagedErrorHandler {
+
+ private RouteContext routeContext;
+ private Processor errorHandler;
+ private ErrorHandlerBuilder errorHandlerBuilder;
+
+ public ManagedErrorHandler(RouteContext routeContext, Processor errorHandler, ErrorHandlerBuilder builder) {
+ this.routeContext = routeContext;
+ this.errorHandler = errorHandler;
+ this.errorHandlerBuilder = builder;
+ }
+
+ public RouteContext getRouteContext() {
+ return routeContext;
+ }
+
+ public Processor getErrorHandler() {
+ return errorHandler;
+ }
+
+ public ErrorHandlerBuilder getErrorHandlerBuilder() {
+ return errorHandlerBuilder;
+ }
+
+ @ManagedAttribute(description = "Camel id")
+ public String getCamelId() {
+ return routeContext.getCamelContext().getName();
+ }
+
+ @ManagedAttribute(description = "Does the error handler support redelivery")
+ public boolean isSupportRedelivery() {
+ return errorHandler instanceof RedeliveryErrorHandler;
+ }
+
+ @ManagedAttribute(description = "RedeliveryPolicy for maximum redeliveries")
+ public Integer getMaximumRedeliveries() {
+ if (errorHandler instanceof RedeliveryErrorHandler) {
+ RedeliveryErrorHandler redelivery = (RedeliveryErrorHandler) errorHandler;
+ return redelivery.getRedeliveryPolicy().getMaximumRedeliveries();
+ }
+ // not supported
+ return null;
+ }
+
+ // TODO: work in progress
+
+}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java Tue Sep 8 09:24:26 2009
@@ -17,12 +17,12 @@
package org.apache.camel.management.mbean;
import org.apache.camel.CamelContext;
+import org.apache.camel.ManagementStatisticsLevel;
import org.apache.camel.Processor;
import org.apache.camel.Route;
import org.apache.camel.ServiceStatus;
import org.apache.camel.impl.ServiceSupport;
import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.ManagementStatisticsLevel;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedResource;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java Tue Sep 8 09:24:26 2009
@@ -18,9 +18,9 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.ManagementStatisticsLevel;
import org.apache.camel.Route;
import org.apache.camel.ServiceStatus;
-import org.apache.camel.ManagementStatisticsLevel;
import org.apache.camel.spi.ManagementStrategy;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedOperation;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java Tue Sep 8 09:24:26 2009
@@ -54,11 +54,11 @@
import org.apache.camel.processor.interceptor.Delayer;
import org.apache.camel.processor.interceptor.HandleFault;
import org.apache.camel.processor.interceptor.StreamCaching;
-import org.apache.camel.processor.interceptor.Tracer;
import org.apache.camel.processor.loadbalancer.LoadBalancer;
import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.IdempotentRepository;
import org.apache.camel.spi.InterceptStrategy;
+import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.Policy;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.TransactedPolicy;
@@ -159,7 +159,7 @@
}
protected Processor wrapChannel(RouteContext routeContext, Processor processor) throws Exception {
- // put a channel inbetween this and each output to control the route flow logic
+ // put a channel in between this and each output to control the route flow logic
Channel channel = createChannel(routeContext);
channel.setNextProcessor(processor);
@@ -181,8 +181,17 @@
} else {
// regular definition so add the error handler
Processor output = channel.getOutput();
- Processor errorHandler = getErrorHandlerBuilder().createErrorHandler(routeContext, output);
+ // create error handler
+ ErrorHandlerBuilder builder = getErrorHandlerBuilder();
+ Processor errorHandler = builder.createErrorHandler(routeContext, output);
+ // set error handler on channel
channel.setErrorHandler(errorHandler);
+
+ // invoke lifecycles so we can manage this error handler builder
+ for (LifecycleStrategy strategy : routeContext.getCamelContext().getLifecycleStrategies()) {
+ strategy.onErrorHandlerAdd(routeContext, errorHandler, builder);
+ }
+
return channel;
}
}
@@ -2168,6 +2177,8 @@
@XmlAttribute(required = false)
public void setErrorHandlerRef(String errorHandlerRef) {
this.errorHandlerRef = errorHandlerRef;
+ // we use an specific error handler ref (from Spring DSL) then wrap that
+ // with a error handler build ref so Camel knows its not just the default one
setErrorHandlerBuilder(new ErrorHandlerBuilderRef(errorHandlerRef));
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java Tue Sep 8 09:24:26 2009
@@ -342,6 +342,7 @@
}
protected void prepareExchangeAfterFailure(final Exchange exchange, final RedeliveryData data) {
+ // TODO: setting failure handled should only be if we used a failure processor
// we could not process the exchange so we let the failure processor handled it
ExchangeHelper.setFailureHandled(exchange);
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java Tue Sep 8 09:24:26 2009
@@ -21,8 +21,10 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Component;
import org.apache.camel.Endpoint;
+import org.apache.camel.Processor;
import org.apache.camel.Route;
import org.apache.camel.Service;
+import org.apache.camel.builder.ErrorHandlerBuilder;
/**
* Strategy for lifecycle notifications.
@@ -112,4 +114,14 @@
*/
void onRouteContextCreate(RouteContext routeContext);
+
+ /**
+ * Notification on adding error handler.
+ *
+ * @param routeContext the added route context
+ * @param errorHandler the error handler
+ * @param errorHandlerBuilder the error handler builder
+ */
+ void onErrorHandlerAdd(RouteContext routeContext, Processor errorHandler, ErrorHandlerBuilder errorHandlerBuilder);
+
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java Tue Sep 8 09:24:26 2009
@@ -26,6 +26,7 @@
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.Route;
+import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.model.ProcessorDefinition;
/**
@@ -41,6 +42,8 @@
ObjectName getObjectNameForEndpoint(Endpoint endpoint) throws MalformedObjectNameException;
+ ObjectName getObjectNameForErrorHandler(RouteContext routeContext, Processor errorHandler, ErrorHandlerBuilder builder) throws MalformedObjectNameException;
+
ObjectName getObjectNameForProcessor(CamelContext context, Processor processor, ProcessorDefinition definition) throws MalformedObjectNameException;
ObjectName getObjectNameForRoute(Route route) throws MalformedObjectNameException;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java Tue Sep 8 09:24:26 2009
@@ -16,8 +16,8 @@
*/
package org.apache.camel.spi;
-import org.apache.camel.Service;
import org.apache.camel.ManagementStatisticsLevel;
+import org.apache.camel.Service;
import org.apache.camel.model.ProcessorDefinition;
/**
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DummyLifecycleStrategy.java Tue Sep 8 09:24:26 2009
@@ -22,10 +22,11 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Component;
-import org.apache.camel.Consumer;
import org.apache.camel.Endpoint;
+import org.apache.camel.Processor;
import org.apache.camel.Route;
import org.apache.camel.Service;
+import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.RouteContext;
@@ -80,6 +81,10 @@
events.add("onRouteContextCreate");
}
+ public void onErrorHandlerAdd(RouteContext routeContext, Processor errorHandler, ErrorHandlerBuilder errorHandlerBuilder) {
+ events.add("onErrorHandlerAdd");
+ }
+
public List<String> getEvents() {
return events;
}
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java?rev=812410&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java Tue Sep 8 09:24:26 2009
@@ -0,0 +1,73 @@
+/**
+ * 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.management;
+
+import java.util.Iterator;
+import java.util.Set;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ * @version $Revision$
+ */
+public class ManagedErrorHandlerTest extends ContextTestSupport {
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext context = super.createCamelContext();
+ DefaultManagementNamingStrategy naming = (DefaultManagementNamingStrategy) context.getManagementStrategy().getManagementNamingStrategy();
+ naming.setHostName("localhost");
+ naming.setDomainName("org.apache.camel");
+ return context;
+ }
+
+ public void testManagedErrorHandler() throws Exception {
+ MBeanServer mbeanServer = context.getManagementStrategy().getManagementAgent().getMBeanServer();
+
+ Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=errorhandlers,*"), null);
+ // there should only be 2 error handler types as route 1 and route 3 uses the same default error handler
+ assertEquals(2, set.size());
+
+ Iterator<ObjectName> it = set.iterator();
+ ObjectName on1 = it.next();
+ ObjectName on2 = it.next();
+
+ String name1 = on1.getCanonicalName();
+ String name2 = on2.getCanonicalName();
+
+ assertTrue("Should be a default error handler", name1.contains("CamelDefaultErrorHandlerBuilder") || name2.contains("CamelDefaultErrorHandlerBuilder"));
+ assertTrue("Should be a dead letter error handler", name1.contains("DeadLetterChannelBuilder") || name2.contains("DeadLetterChannelBuilder"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:foo").to("mock:foo");
+
+ from("direct:bar").errorHandler(deadLetterChannel("mock:dead")).to("mock:bar");
+
+ from("direct:baz").to("mock:baz");
+ }
+ };
+ }
+}
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsLevelOffTest.java Tue Sep 8 09:24:26 2009
@@ -23,8 +23,8 @@
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.ManagementStatisticsLevel;
+import org.apache.camel.builder.RouteBuilder;
/**
* @version $Revision$
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Tue Sep 8 09:24:26 2009
@@ -31,7 +31,7 @@
import org.apache.camel.CamelException;
import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.ErrorHandlerBuilder;
+import org.apache.camel.builder.ErrorHandlerBuilderRef;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.scan.PatternBasedPackageScanFilter;
import org.apache.camel.management.DefaultManagementAgent;
@@ -755,11 +755,7 @@
ctx.setHandleFault(handleFault);
}
if (errorHandlerRef != null) {
- ErrorHandlerBuilder errorHandlerBuilder = (ErrorHandlerBuilder) getApplicationContext().getBean(errorHandlerRef, ErrorHandlerBuilder.class);
- if (errorHandlerBuilder == null) {
- throw new IllegalArgumentException("Cannot find ErrorHandlerBuilder bean with id: " + errorHandlerRef);
- }
- ctx.setErrorHandlerBuilder(errorHandlerBuilder);
+ ctx.setErrorHandlerBuilder(new ErrorHandlerBuilderRef(errorHandlerRef));
}
if (shouldStartContext != null) {
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java Tue Sep 8 09:24:26 2009
@@ -19,7 +19,6 @@
import org.apache.camel.Processor;
import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.builder.ErrorHandlerBuilderRef;
-import org.apache.camel.builder.ErrorHandlerBuilderSupport;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.TransactedPolicy;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +67,16 @@
// check if its a ref if so then do a lookup
if (builder instanceof ErrorHandlerBuilderRef) {
// its a reference to a error handler so lookup the reference
- ErrorHandlerBuilderRef ref = (ErrorHandlerBuilderRef) builder;
+ ErrorHandlerBuilderRef builderRef = (ErrorHandlerBuilderRef) builder;
+ String ref = builderRef.getRef();
// only lookup if there was explicit an error handler builder configured
// otherwise its just the "default" that has not explicit been configured
// and if so then we can safely replace that with our transacted error handler
- if (ref.isErrorHandlerBuilderConfigued()) {
+ if (ErrorHandlerBuilderRef.isErrorHandlerBuilderConfigued(ref)) {
if (LOG.isDebugEnabled()) {
- LOG.debug("Looking up ErrorHandlerBuilder with ref: " + ref.getRef());
+ LOG.debug("Looking up ErrorHandlerBuilder with ref: " + ref);
}
- builder = ref.lookupErrorHandlerBuilder(routeContext);
+ builder = ErrorHandlerBuilderRef.lookupErrorHandlerBuilder(routeContext, ref);
}
}
Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/DummyLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/DummyLifecycleStrategy.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/DummyLifecycleStrategy.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/DummyLifecycleStrategy.java Tue Sep 8 09:24:26 2009
@@ -21,8 +21,10 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Component;
import org.apache.camel.Endpoint;
+import org.apache.camel.Processor;
import org.apache.camel.Route;
import org.apache.camel.Service;
+import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.RouteContext;
@@ -60,6 +62,9 @@
public void onRouteContextCreate(RouteContext routeContext) {
}
+ public void onErrorHandlerAdd(RouteContext routeContext, Processor errorHandler, ErrorHandlerBuilder errorHandlerBuilder) {
+ }
+
public void onRoutesRemove(Collection<Route> routes) {
}
Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest.java (from r812050, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerConfigTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerConfigTest.java&r1=812050&r2=812410&rev=812410&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ErrorHandlerConfigTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest.java Tue Sep 8 09:24:26 2009
@@ -27,7 +27,7 @@
* @version $Revision$
*/
@ContextConfiguration
-public class ErrorHandlerConfigTest extends AbstractJUnit38SpringContextTests {
+public class DefaultErrorHandlerConfigTest extends AbstractJUnit38SpringContextTests {
@Autowired
protected ProducerTemplate template;
@@ -38,19 +38,19 @@
protected Object expectedBody = "<hello>world!</hello>";
public void testRouteInheritsConfiguredErrorHandler() throws Exception {
- assertReceivedMessageWithErrorHandlerValue("defaultErrorHandler", "defaultErrorHandler");
+ assertReceivedMessageWithErrorHandlerValue("foo", null);
}
public void testRouteConfiguredErrorHandler() throws Exception {
- assertReceivedMessageWithErrorHandlerValue("customErrorHandler", "customErrorHandler");
+ assertReceivedMessageWithErrorHandlerValue("bar", null);
}
- protected void assertReceivedMessageWithErrorHandlerValue(String name, String value) throws InterruptedException {
+ protected void assertReceivedMessageWithErrorHandlerValue(String name, String value) throws Exception {
template.sendBody("direct:" + name, expectedBody);
MockEndpoint endpoint = MockEndpoint.resolve(context, "mock:" + name);
endpoint.expectedMessageCount(1);
- endpoint.message(0).header(DummyErrorHandlerBuilder.PROPERTY_NAME).isEqualTo(value);
endpoint.assertIsSatisfied();
}
+
}
\ No newline at end of file
Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java Tue Sep 8 09:24:26 2009
@@ -18,7 +18,6 @@
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
-import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.builder.ErrorHandlerBuilderSupport;
import org.apache.camel.processor.DelegateProcessor;
import org.apache.camel.spi.RouteContext;
Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java (from r812347, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java&r1=812347&r2=812410&rev=812410&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.java Tue Sep 8 09:24:26 2009
@@ -17,16 +17,16 @@
package org.apache.camel.spring.management;
import org.apache.camel.CamelContext;
-import org.apache.camel.management.ManagedStatisticsLevelOffTest;
+import org.apache.camel.management.ManagedErrorHandlerTest;
import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
/**
* @version $Revision$
*/
-public class SpringManagedStatisticsLevelOffTest extends ManagedStatisticsLevelOffTest {
+public class SpringManagedErrorHandlerTest extends ManagedErrorHandlerTest {
protected CamelContext createCamelContext() throws Exception {
- return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedStatisticsLevelOffTest.xml");
+ return createSpringCamelContext(this, "org/apache/camel/spring/management/SpringManagedErrorHandlerTest.xml");
}
-}
+}
\ No newline at end of file
Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest-context.xml (from r812050, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/ErrorHandlerConfigTest-context.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest-context.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest-context.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/ErrorHandlerConfigTest-context.xml&r1=812050&r2=812410&rev=812410&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/ErrorHandlerConfigTest-context.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DefaultErrorHandlerConfigTest-context.xml Tue Sep 8 09:24:26 2009
@@ -22,19 +22,21 @@
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
">
- <camelContext xmlns="http://camel.apache.org/schema/spring" errorHandlerRef="defaultErrorHandler">
- <template id="myTemplate"/>
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <template id="myTemplate"/>
- <route>
- <from uri="direct:defaultErrorHandler"/>
- <to uri="mock:defaultErrorHandler"/>
- </route>
- <route errorHandlerRef="customErrorHandler">
- <from uri="direct:customErrorHandler"/>
- <to uri="mock:customErrorHandler"/>
- </route>
- </camelContext>
+ <route>
+ <from uri="direct:foo"/>
+ <to uri="mock:foo"/>
+ </route>
+ <route errorHandlerRef="dlc">
+ <from uri="direct:bar"/>
+ <to uri="mock:bar"/>
+ </route>
+ </camelContext>
+
+ <bean id="dlc" class="org.apache.camel.builder.DeadLetterChannelBuilder">
+ <property name="deadLetterUri" value="mock:dead"/>
+ </bean>
- <bean id="defaultErrorHandler" class="org.apache.camel.spring.config.DummyErrorHandlerBuilder"/>
- <bean id="customErrorHandler" class="org.apache.camel.spring.config.DummyErrorHandlerBuilder"/>
</beans>
Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.xml (from r812347, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml&r1=812347&r2=812410&rev=812410&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/ManagedStatisticsLevelRoutesOnlyTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/SpringManagedErrorHandlerTest.xml Tue Sep 8 09:24:26 2009
@@ -22,15 +22,25 @@
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
">
- <!-- START SNIPPET: example -->
+ <bean id="dlc" class="org.apache.camel.builder.DeadLetterChannelBuilder">
+ <property name="deadLetterUri" value="mock:read"/>
+ </bean>
+
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
- <jmxAgent id="agent" statisticsLevel="RoutesOnly"/>
+ <route>
+ <from uri="direct:foo"/>
+ <to uri="mock:foo"/>
+ </route>
+
+ <route errorHandlerRef="dlc">
+ <from uri="direct:bar"/>
+ <to uri="mock:bar"/>
+ </route>
<route>
- <from uri="direct:start"/>
- <to uri="mock:result"/>
+ <from uri="direct:baz"/>
+ <to uri="mock:baz"/>
</route>
</camelContext>
- <!-- END SNIPPET: example -->
</beans>
Modified: camel/trunk/examples/camel-example-management/src/main/resources/META-INF/spring/camel-context.xml
URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-management/src/main/resources/META-INF/spring/camel-context.xml?rev=812410&r1=812409&r2=812410&view=diff
==============================================================================
--- camel/trunk/examples/camel-example-management/src/main/resources/META-INF/spring/camel-context.xml (original)
+++ camel/trunk/examples/camel-example-management/src/main/resources/META-INF/spring/camel-context.xml Tue Sep 8 09:24:26 2009
@@ -38,6 +38,18 @@
<value>JAVA</value>
</u:list>
+ <bean id="dlc" class="org.apache.camel.builder.DeadLetterChannelBuilder">
+ <property name="deadLetterUri" value="activemq:queue:dead"/>
+ <property name="redeliveryPolicy" ref="redeliveyPolicy"/>
+ </bean>
+
+ <bean id="redeliveyPolicy" class="org.apache.camel.processor.RedeliveryPolicy">
+ <property name="maximumRedeliveries" value="5"/>
+ <property name="backOffMultiplier" value="2.0"/>
+ <property name="useExponentialBackOff" value="true"/>
+ <property name="maximumRedeliveryDelay" value="30000"/>
+ </bean>
+
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<!-- Default JMX connector url: "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel" -->
<jmxAgent id="agent" createConnector="true"/>
@@ -57,7 +69,7 @@
</split>
</route>
- <route>
+ <route errorHandlerRef="dlc">
<from uri="activemq:queue:stock"/>
<delay><constant>100</constant></delay>
<bean ref="stock" method="transform"/>