You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cs...@apache.org on 2011/10/06 17:29:26 UTC

svn commit: r1179667 - in /camel/trunk/camel-core/src/main/java/org/apache/camel: management/mbean/JMXNotificationTraceEventHandler.java management/mbean/ManagedTracer.java processor/interceptor/Tracer.java

Author: cschneider
Date: Thu Oct  6 15:29:26 2011
New Revision: 1179667

URL: http://svn.apache.org/viewvc?rev=1179667&view=rev
Log:
CAMEL-4500 Adding configuration options for the tracer

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/JMXNotificationTraceEventHandler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/JMXNotificationTraceEventHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/JMXNotificationTraceEventHandler.java?rev=1179667&r1=1179666&r2=1179667&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/JMXNotificationTraceEventHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/JMXNotificationTraceEventHandler.java Thu Oct  6 15:29:26 2011
@@ -31,13 +31,17 @@ import org.apache.camel.api.management.N
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.interceptor.TraceEventHandler;
 import org.apache.camel.processor.interceptor.TraceInterceptor;
+import org.apache.camel.processor.interceptor.Tracer;
 import org.apache.camel.util.MessageHelper;
 
 public final class JMXNotificationTraceEventHandler implements TraceEventHandler, NotificationSenderAware {
+    private static final int MAX_MESSAGE_LENGTH = 60;
     private long num;
     private NotificationSender notificationSender;
+    private Tracer tracer;
 
-    public JMXNotificationTraceEventHandler() {
+    public JMXNotificationTraceEventHandler(Tracer tracer) {
+        this.tracer = tracer;
     }
 
     @SuppressWarnings("rawtypes")
@@ -51,13 +55,13 @@ public final class JMXNotificationTraceE
 
     @SuppressWarnings("rawtypes")
     public void traceExchange(ProcessorDefinition node, Processor target, TraceInterceptor traceInterceptor, Exchange exchange) throws Exception {
-        if (notificationSender != null) {
-            String body = MessageHelper.extractBodyForLogging(exchange.getIn(), "", false, true, 10000);
+        if (notificationSender != null && tracer.isJmxTraceNotifications()) {
+            String body = MessageHelper.extractBodyForLogging(exchange.getIn(), "", false, true, tracer.getTraceBodySize());
             
             if (body == null) {
                 body = "";
             }
-            String message = body.substring(0, Math.min(body.length(), 60));
+            String message = body.substring(0, Math.min(body.length(), MAX_MESSAGE_LENGTH));
             Map tm = createTraceMessage(node, exchange, body);
 
             Notification notification = new Notification("TraceNotification", exchange.toString(), num++, System.currentTimeMillis(), message);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java?rev=1179667&r1=1179666&r2=1179667&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java Thu Oct  6 15:29:26 2011
@@ -43,7 +43,7 @@ public class ManagedTracer implements No
     public ManagedTracer(CamelContext camelContext, Tracer tracer) {
         this.camelContext = camelContext;
         this.tracer = tracer;
-        jmxTraceHandler = new JMXNotificationTraceEventHandler();
+        jmxTraceHandler = new JMXNotificationTraceEventHandler(tracer);
         tracer.addTraceHandler(jmxTraceHandler);
     }
 
@@ -419,6 +419,26 @@ public class ManagedTracer implements No
         }
         tracer.getDefaultTraceFormatter().setMaxChars(maxChars);
     }
+    
+    @ManagedAttribute(description = "Should trace events be sent as jmx notifications")
+    public boolean isJmxTraceNotifications() {
+        return this.tracer.isJmxTraceNotifications();
+    }
+
+    @ManagedAttribute
+    public void setJmxTraceNotifications(boolean jmxTraceNotifications) {
+        this.tracer.setJmxTraceNotifications(jmxTraceNotifications);
+    }
+
+    @ManagedAttribute(description = "Maximum size of a message body for trace notification")
+    public int getTraceBodySize() {
+        return this.tracer.getTraceBodySize();
+    }
+
+    @ManagedAttribute
+    public void setTraceBodySize(int traceBodySize) {
+        this.tracer.setTraceBodySize(traceBodySize);
+    }
 
     @Override
     public void setNotificationSender(NotificationSender sender) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java?rev=1179667&r1=1179666&r2=1179667&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java Thu Oct  6 15:29:26 2011
@@ -56,6 +56,8 @@ public class Tracer implements Intercept
     private TraceInterceptorFactory traceInterceptorFactory = new DefaultTraceInterceptorFactory();
     private CopyOnWriteArrayList<TraceEventHandler> traceHandlers;
     private String jpaTraceEventMessageClassName = JPA_TRACE_EVENT_MESSAGE;
+    private boolean jmxTraceNotifications;
+    private int traceBodySize = 10000;
     
     public Tracer() {
         traceHandlers = new CopyOnWriteArrayList<TraceEventHandler>();
@@ -343,6 +345,23 @@ public class Tracer implements Intercept
         this.jpaTraceEventMessageClassName = jpaTraceEventMessageClassName;
     }
 
+
+    public boolean isJmxTraceNotifications() {
+        return jmxTraceNotifications;
+    }
+
+    public void setJmxTraceNotifications(boolean jmxTraceNotifications) {
+        this.jmxTraceNotifications = jmxTraceNotifications;
+    }
+
+    public int getTraceBodySize() {
+        return traceBodySize;
+    }
+
+    public void setTraceBodySize(int traceBodySize) {
+        this.traceBodySize = traceBodySize;
+    }
+
     @Override
     public String toString() {
         return "Tracer";