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/10/12 19:52:41 UTC

svn commit: r824442 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/model/ test/java/org/apache/camel/management/ test/java/org/apache/camel/processor/intercept/

Author: davsclaus
Date: Mon Oct 12 17:52:41 2009
New Revision: 824442

URL: http://svn.apache.org/viewvc?rev=824442&view=rev
Log:
CAMEL-2064: Fixed send to interceptor. Thanks to Martin Krasser for the patch.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java?rev=824442&r1=824441&r2=824442&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java Mon Oct 12 17:52:41 2009
@@ -82,10 +82,12 @@
         // register endpoint callback so we can proxy the endpoint
         routeContext.getCamelContext().addRegisterEndpointCallback(new EndpointStrategy() {
             public Endpoint registerEndpoint(String uri, Endpoint endpoint) {
-                // only proxy if the uri is matched
-                boolean match = getUri() == null || EndpointHelper.matchEndpoint(uri, getUri()); 
-                if (match) {
-                    // decorate endpoint with our proxy
+                
+                if (endpoint instanceof InterceptSendToEndpoint) {
+                    // endpoint already decorated
+                    return endpoint;
+                } else if (getUri() == null || EndpointHelper.matchEndpoint(uri, getUri())) {
+                    // only proxy if the uri is matched decorate endpoint with our proxy
                     boolean skip = skipSendToOriginalEndpoint != null ? skipSendToOriginalEndpoint : false;
                     InterceptSendToEndpoint proxy = new InterceptSendToEndpoint(endpoint, skip);
                     proxy.setDetour(detour);

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java?rev=824442&r1=824441&r2=824442&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedErrorHandlerOptionsTest.java Mon Oct 12 17:52:41 2009
@@ -73,6 +73,8 @@
         Double backoff = (Double) mbeanServer.getAttribute(on, "BackOffMultiplier");
         assertNotNull(backoff);
 
+        // TODO continue from here
+
         Double cf = (Double) mbeanServer.getAttribute(on, "CollisionAvoidanceFactor");
         assertNotNull(cf);
 

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java?rev=824442&r1=824441&r2=824442&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java Mon Oct 12 17:52:41 2009
@@ -16,7 +16,11 @@
  */
 package org.apache.camel.processor.intercept;
 
+import java.util.concurrent.atomic.AtomicInteger;
+
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 
 /**
@@ -180,4 +184,26 @@
         assertMockEndpointsSatisfied();
     }
 
+    public void testInterceptEndpointOnce() throws Exception {
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                interceptSendToEndpoint("direct:intercept1").to("mock:detour1");
+                interceptSendToEndpoint("direct:intercept2").to("mock:detour2");
+                
+                from("direct:input1").to("direct:intercept1");
+                from("direct:input2").to("direct:intercept2");
+            }
+        });
+        context.start();
+
+        getMockEndpoint("mock:detour1").expectedBodiesReceived("Hello World");
+        getMockEndpoint("mock:detour2").expectedBodiesReceived("Hello World");
+
+        template.sendBody("direct:input1", "Hello World");
+        template.sendBody("direct:input2", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+    
 }