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