Author: trustin
Date: Thu Mar  1 23:55:53 2007
New Revision: 513649

URL: http://svn.apache.org/viewvc?view=rev&rev=513649
Log:
Added ByteBuffer.getHexDump(int lengthLimit) that limits the length of the 
generated dump string.


Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java
    
mina/trunk/core/src/main/java/org/apache/mina/common/support/ByteBufferHexDumper.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java?view=diff&rev=513649&r1=513648&r2=513649
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/ByteBuffer.java Thu 
Mar  1 23:55:53 2007
@@ -882,7 +882,17 @@
      */
     public String getHexDump()
     {
-        return ByteBufferHexDumper.getHexdump( this );
+        return this.getHexDump(Integer.MAX_VALUE);
+    }
+    
+    /**
+     * Return hexdump of this buffer with limited length.
+     * 
+     * @param lengthLimit The maximum number of bytes to dump from 
+     *                    the current buffer position.
+     */
+    public String getHexDump(int lengthLimit) {
+        return ByteBufferHexDumper.getHexdump(this, lengthLimit);
     }
 
     ////////////////////////////////

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/support/ByteBufferHexDumper.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/support/ByteBufferHexDumper.java?view=diff&rev=513649&r1=513648&r2=513649
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/common/support/ByteBufferHexDumper.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/common/support/ByteBufferHexDumper.java
 Thu Mar  1 23:55:53 2007
@@ -54,9 +54,21 @@
         lowDigits = low;
     }
 
-    public static String getHexdump( ByteBuffer in )
+    public static String getHexdump( ByteBuffer in, int lengthLimit )
     {
-        int size = in.remaining();
+        if( lengthLimit == 0 )
+        {
+            throw new IllegalArgumentException(
+                    "lengthLimit: " + lengthLimit + " (expected: 1+)");
+        }
+
+        boolean truncate = in.remaining() > lengthLimit;
+        int size;
+        if (truncate) {
+            size = lengthLimit;
+        } else {
+            size = in.remaining();
+        }
 
         if( size == 0 )
         {
@@ -83,6 +95,10 @@
         }
 
         in.position( mark );
+        
+        if (truncate) {
+            out.append("...");
+        }
 
         return out.toString();
     }


Reply via email to