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/04/04 12:46:19 UTC

svn commit: r761894 - in /camel/trunk/camel-core/src/main/java/org/apache/camel: builder/ impl/ management/ model/ spi/

Author: davsclaus
Date: Sat Apr  4 10:46:18 2009
New Revision: 761894

URL: http://svn.apache.org/viewvc?rev=761894&view=rev
Log:
CAMEL-1511: Preparing for TransactionErrorHandler improvements

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultErrorHandlerWrappingStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/NoPolicy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationErrorHandlerWrappingStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java

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=761894&r1=761893&r2=761894&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 Sat Apr  4 10:46:18 2009
@@ -46,6 +46,13 @@
 
     public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
         if (handler == null) {
+            handler = lookupErrorHandlerBuilder(routeContext);
+        }
+        return handler.createErrorHandler(routeContext, processor);
+    }
+
+    public ErrorHandlerBuilder lookupErrorHandlerBuilder(RouteContext routeContext) {
+        if (handler == null) {
             handler = routeContext.lookup(ref, ErrorHandlerBuilder.class);
             ObjectHelper.notNull(handler, "error handler '" + ref + "'");
             List<OnExceptionDefinition> list = getExceptions();
@@ -53,6 +60,11 @@
                 handler.addErrorHandlers(exceptionType);
             }
         }
-        return handler.createErrorHandler(routeContext, processor);
+        return handler;
+    }
+
+    public String getRef() {
+        return ref;
     }
+
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java?rev=761894&r1=761893&r2=761894&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java Sat Apr  4 10:46:18 2009
@@ -31,10 +31,13 @@
     private List<OnExceptionDefinition> exceptions = new ArrayList<OnExceptionDefinition>();
 
     public void addErrorHandlers(OnExceptionDefinition exception) {
-        exceptions.add(exception);
+        // only add if we not already have it
+        if (!exceptions.contains(exception)) {
+            exceptions.add(exception);
+        }
     }
 
-    protected void configure(ErrorHandlerSupport handler) {
+    public void configure(ErrorHandlerSupport handler) {
         for (OnExceptionDefinition exception : exceptions) {
             handler.addExceptionPolicy(exception);
         }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultErrorHandlerWrappingStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultErrorHandlerWrappingStrategy.java?rev=761894&r1=761893&r2=761894&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultErrorHandlerWrappingStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultErrorHandlerWrappingStrategy.java Sat Apr  4 10:46:18 2009
@@ -20,6 +20,7 @@
 
 import org.apache.camel.Processor;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.ErrorHandler;
 import org.apache.camel.spi.ErrorHandlerWrappingStrategy;
 import org.apache.camel.spi.RouteContext;
 
@@ -39,6 +40,10 @@
     }
 
     public Processor wrapProcessorInErrorHandler(ProcessorDefinition processorDefinition, Processor target) throws Exception {
+        // dont double wrap error handlers
+        if (target instanceof ErrorHandler) {
+            return target;
+        }
 
         // don't wrap our instrumentation interceptors
         if (counterList.contains(processorDefinition)) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/NoPolicy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/NoPolicy.java?rev=761894&r1=761893&r2=761894&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/NoPolicy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/NoPolicy.java Sat Apr  4 10:46:18 2009
@@ -18,15 +18,16 @@
 
 import org.apache.camel.Processor;
 import org.apache.camel.spi.Policy;
+import org.apache.camel.spi.RouteContext;
 
 /**
  * Represents an {@link Policy} which adds no interceptors.
  *
  * @version $Revision$
  */
-public class NoPolicy<E> implements Policy<E> {
+public class NoPolicy implements Policy {
 
-    public Processor wrap(Processor processor) {
+    public Processor wrap(RouteContext routeContext, Processor processor) {
         return processor;
     }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationErrorHandlerWrappingStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationErrorHandlerWrappingStrategy.java?rev=761894&r1=761893&r2=761894&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationErrorHandlerWrappingStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationErrorHandlerWrappingStrategy.java Sat Apr  4 10:46:18 2009
@@ -20,6 +20,7 @@
 
 import org.apache.camel.Processor;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.ErrorHandler;
 import org.apache.camel.spi.ErrorHandlerWrappingStrategy;
 import org.apache.camel.spi.RouteContext;
 
@@ -37,6 +38,10 @@
     }
 
     public Processor wrapProcessorInErrorHandler(ProcessorDefinition processorType, Processor target) throws Exception {
+        // dont double wrap error handlers
+        if (target instanceof ErrorHandler) {
+            return target;
+        }
 
         // don't wrap our instrumentation interceptors
         if (counterMap.containsKey(processorType)) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java?rev=761894&r1=761893&r2=761894&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java Sat Apr  4 10:46:18 2009
@@ -82,7 +82,7 @@
 
         Policy policy = resolvePolicy(routeContext);
         ObjectHelper.notNull(policy, "policy", this);
-        return policy.wrap(childProcessor);
+        return policy.wrap(routeContext, childProcessor);
     }
 
     protected Policy resolvePolicy(RouteContext routeContext) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java?rev=761894&r1=761893&r2=761894&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java Sat Apr  4 10:46:18 2009
@@ -23,13 +23,14 @@
  *
  * @version $Revision$
  */
-public interface Policy<E> {
+public interface Policy {
 
     /**
      * Wraps any applicable interceptors around the given processor
      *
+     * @param routeContext the route context
      * @param processor the processor to be intercepted
      * @return either the original processor or a processor wrapped in one or more interceptors
      */
-    Processor wrap(Processor processor);
+    Processor wrap(RouteContext routeContext, Processor processor);
 }