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/03/27 10:22:15 UTC

svn commit: r759069 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/component/log/ camel-core/src/main/java/org/apache/camel/processor/interceptor/ camel-core/src/test/java/org/apache/camel/component/log/ components/camel-spring/src/test/r...

Author: davsclaus
Date: Fri Mar 27 09:22:08 2009
New Revision: 759069

URL: http://svn.apache.org/viewvc?rev=759069&view=rev
Log:
CAMEL-1486: Added maxChars option to Log and Trace formatter.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java?rev=759069&r1=759068&r2=759069&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java Fri Mar 27 09:22:08 2009
@@ -35,6 +35,7 @@
     private boolean showOut;
     private boolean showAll;
     private boolean multiline;
+    private int maxChars;
 
     public Object format(Exchange exchange) {
         Message in = exchange.getIn();
@@ -100,6 +101,26 @@
             }
         }
 
+        if (maxChars > 0) {
+            StringBuilder answer = new StringBuilder();
+            for (String s : sb.toString().split("\n")) {
+                if (s != null) {
+                    if (s.length() > maxChars) {
+                        s = s.substring(0, maxChars);
+                        answer.append(s).append("...");
+                    } else {
+                        answer.append(s);
+                    }
+                    if (multiline) {
+                        answer.append("\n");
+                    }
+                }
+            }
+
+            // get rid of the leading space comma if needed
+            return "Exchange[" + (multiline ? answer.append(']').toString() : answer.toString().substring(2) + "]");
+        }
+
         // get rid of the leading space comma if needed
         return "Exchange[" + (multiline ? sb.append(']').toString() : sb.toString().substring(2) + "]");
     }
@@ -164,6 +185,14 @@
         return multiline;
     }
 
+    public int getMaxChars() {
+        return maxChars;
+    }
+
+    public void setMaxChars(int maxChars) {
+        this.maxChars = maxChars;
+    }
+
     /**
      * If enabled then each information is outputted on a newline.
      */

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java?rev=759069&r1=759068&r2=759069&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceFormatter.java Fri Mar 27 09:22:08 2009
@@ -42,6 +42,7 @@
     private boolean showOutBody;
     private boolean showOutBodyType;
     private boolean showException = true;
+    private int maxChars;
 
     public Object format(final TraceInterceptor interceptor, final ProcessorDefinition node, final Exchange exchange) {
         Message in = exchange.getIn();
@@ -80,7 +81,15 @@
             sb.append(", Exception:").append(exchange.getException());
         }
 
-        return sb.toString();
+        if (maxChars > 0) {
+            String s = sb.toString();
+            if (s.length() > maxChars) {
+                s = s.substring(0, maxChars) + "...";
+            }
+            return s;
+        } else {
+            return sb.toString();
+        }
     }
 
     public boolean isShowBody() {
@@ -203,6 +212,14 @@
         this.nodeLength = nodeLength;
     }
 
+    public int getMaxChars() {
+        return maxChars;
+    }
+
+    public void setMaxChars(int maxChars) {
+        this.maxChars = maxChars;
+    }
+
     // Implementation methods
     //-------------------------------------------------------------------------
     protected Object getBreadCrumbID(Exchange exchange) {

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java?rev=759069&r1=759068&r2=759069&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java Fri Mar 27 09:22:08 2009
@@ -57,6 +57,17 @@
         template.sendBody("log:org.apache.camel.TEST", "Hello World".getBytes());
     }
 
+    public void testSendMessageToLogMaxChars() throws Exception {
+        template.sendBody("log:org.apache.camel.TEST",
+                "Hello World this is a very long string that is NOT going to be chopped by maxchars");
+
+        template.sendBody("log:org.apache.camel.TEST?maxChars=50",
+                "Hello World this is a very long string that is going to be chopped by maxchars");
+
+        template.sendBody("log:org.apache.camel.TEST?maxChars=50&showAll=true&multiline=true",
+                "Hello World this is a very long string that is going to be chopped by maxchars");
+    }
+
     public void testSendExchangeWithOut() throws Exception {
         Endpoint endpoint = resolveMandatoryEndpoint("log:org.apache.camel.TEST?showAll=true&multiline=true");
         Exchange exchange = endpoint.createExchange();

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml?rev=759069&r1=759068&r2=759069&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/traceFormatterTest.xml Fri Mar 27 09:22:08 2009
@@ -27,6 +27,7 @@
         <property name="showBody" value="true"/>
         <property name="showBodyType" value="false"/>
         <property name="showBreadCrumb" value="false"/>
+        <property name="maxChars" value="100"/>
     </bean>
 
     <camelContext id="camel" trace="true" xmlns="http://camel.apache.org/schema/spring">