Author: davsclaus
Date: Fri Mar  9 11:52:21 2012
New Revision: 1298795

URL: http://svn.apache.org/viewvc?rev=1298795&view=rev
Log:
CAMEL-5066: Fixed JMX stats for processors when using interceptors.

Added:
    
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedInterceptTest.java
      - copied, changed from r1298700, 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java
Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java?rev=1298795&r1=1298794&r2=1298795&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
 Fri Mar  9 11:52:21 2012
@@ -77,8 +77,8 @@ public class InterceptDefinition extends
 
             public Processor wrapProcessorInInterceptors(CamelContext context, 
ProcessorDefinition<?> definition,
                                                          Processor target, 
Processor nextTarget) throws Exception {
-                // prefer next target over target as next target is the real 
target
-                interceptedTarget = nextTarget != null ? nextTarget : target;
+                // store the target we are intercepting
+                this.interceptedTarget = target;
 
                 // remember the target that was intercepted
                 intercepted.add(interceptedTarget);

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java?rev=1298795&r1=1298794&r2=1298795&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
 Fri Mar  9 11:52:21 2012
@@ -241,7 +241,8 @@ public class TraceInterceptor extends De
     protected void traceIntercept(InterceptDefinition intercept, 
TracedRouteNodes traced, Exchange exchange) throws Exception {
         // use the counter to get the index of the intercepted processor to be 
traced
         Processor last = 
intercept.getInterceptedProcessor(traced.getAndIncrementCounter(intercept));
-        if (last != null) {
+        // skip doing any double tracing of interceptors, so the last must not 
be a TraceInterceptor instance
+        if (last != null && !(last instanceof TraceInterceptor)) {
             traced.addTraced(new DefaultRouteNode(node, last));
 
             boolean shouldLog = shouldLogNode(node) && 
shouldLogExchange(exchange);

Copied: 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedInterceptTest.java
 (from r1298700, 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedInterceptTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedInterceptTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java&r1=1298700&r2=1298795&rev=1298795&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedLoadBalancerTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedInterceptTest.java
 Fri Mar  9 11:52:21 2012
@@ -24,33 +24,31 @@ import org.apache.camel.builder.RouteBui
 /**
  * @version 
  */
-public class ManagedLoadBalancerTest extends ManagementTestSupport {
+public class ManagedInterceptTest extends ManagementTestSupport {
 
-    public void testLoadBalancer() throws Exception {
-        getMockEndpoint("mock:a").expectedBodiesReceived("Hello World", "Hi 
World");
-        getMockEndpoint("mock:b").expectedBodiesReceived("Bye World");
+    public void testIntercept() throws Exception {
+        getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+        getMockEndpoint("mock:intercept").expectedBodiesReceived("Hello 
World", "Hello World");
 
         template.sendBody("direct:start", "Hello World");
-        template.sendBody("direct:start", "Bye World");
-        template.sendBody("direct:start", "Hi World");
 
         assertMockEndpointsSatisfied();
 
         MBeanServer mbeanServer = getMBeanServer();
 
-        ObjectName name = 
ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=endpoints,name=\"mock://a\"");
+        ObjectName name = 
ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=endpoints,name=\"mock://result\"");
         Long queueSize = (Long) mbeanServer.invoke(name, "queueSize", null, 
null);
-        assertEquals(2, queueSize.intValue());
+        assertEquals(1, queueSize.intValue());
 
-        name = 
ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=endpoints,name=\"mock://b\"");
+        name = 
ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=endpoints,name=\"mock://intercept\"");
         queueSize = (Long) mbeanServer.invoke(name, "queueSize", null, null);
-        assertEquals(1, queueSize.intValue());
+        assertEquals(2, queueSize.intValue());
 
-        name = 
ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=processors,name=\"myBalancer\"");
+        name = 
ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=processors,name=\"log-foo\"");
         mbeanServer.isRegistered(name);
         
         Long total = (Long) mbeanServer.getAttribute(name, "ExchangesTotal");
-        assertEquals(3, total.intValue());
+        assertEquals(1, total.intValue());
     }
 
     @Override
@@ -58,9 +56,10 @@ public class ManagedLoadBalancerTest ext
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
+                intercept().to("mock:intercept");
+
                 from("direct:start").routeId("foo")
-                    .loadBalance().id("myBalancer").roundRobin()
-                        .to("mock:a").to("mock:b");
+                    .to("log:foo").id("log-foo").to("mock:result");
             }
         };
     }


Reply via email to