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";


Reply via email to