Author: elecharny
Date: Thu Dec 8 17:15:18 2011
New Revision: 1211990
URL: http://svn.apache.org/viewvc?rev=1211990&view=rev
Log:
Improve the ByteBufferDumper code
Modified:
mina/trunk/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java
mina/trunk/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java?rev=1211990&r1=1211989&r2=1211990&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java
Thu Dec 8 17:15:18 2011
@@ -79,11 +79,16 @@ public class ByteBufferDumper {
}
public static String dump(ByteBuffer buffer) {
-
+ byte[] data = buffer.array();
+ int start = buffer.position();
+ int size = buffer.remaining();
+
// is not ASCII printable ?
boolean binaryContent = false;
- for (int i = 0; i < buffer.remaining(); i++) {
- byte b = buffer.get(i);
+
+ for (int i = start; i < size; i++) {
+ byte b = data[i];
+
if ((b < 32 || b > 126) && b != 13 && b != 10) {
binaryContent = true;
break;
@@ -91,38 +96,40 @@ public class ByteBufferDumper {
}
if (binaryContent) {
- int pos = buffer.position();
- int size = buffer.remaining();
StringBuilder out = new StringBuilder(size * 3 + 24);
- out.append("ByteBuffer[len=").append(size).append(",bytes='");
- int mark = buffer.position();
+ out.append("ByteBuffer[len=").append(size).append(",bytes='\n");
// fill the first
- int byteValue = buffer.get() & 0xFF;
+ int byteValue = data[start] & 0xFF;
out.append((char) highDigits[byteValue]);
out.append((char) lowDigits[byteValue]);
- size--;
// and the others, too
- for (; size > 0; size--) {
- out.append(' ');
- byteValue = buffer.get() & 0xFF;
+ for (int i = start + 1; i < size; i++) {
+ if (i%16 == 0) {
+ out.append('\n');
+ } else {
+ out.append(' ');
+ }
+
+ byteValue = data[i] & 0xFF;
out.append((char) highDigits[byteValue]);
out.append((char) lowDigits[byteValue]);
}
- buffer.position(pos);
- out.append("'");
+
+ out.append("']");
+
return out.toString();
} else {
- byte[] data = new byte[buffer.remaining()];
- int pos = buffer.position();
- buffer.get(data);
- buffer.position(pos);
- StringBuilder out = new StringBuilder(buffer.remaining() + 22);
-
out.append("ByteBuffer[len=").append(buffer.remaining()).append(",str='").append(new
String(data))
- .append("'");
- return out.toString();
+ StringBuilder sb = new StringBuilder(size);
+ sb.append("ByteBuffer[len=")
+ .append(buffer.remaining())
+ .append(",str='")
+ .append(new String(data, start, size))
+ .append("']");
+
+ return sb.toString();
}
}
Modified:
mina/trunk/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java?rev=1211990&r1=1211989&r2=1211990&view=diff
==============================================================================
---
mina/trunk/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java
(original)
+++
mina/trunk/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java
Thu Dec 8 17:15:18 2011
@@ -43,14 +43,13 @@ public class ByteBufferDumperTest {
int remaining = myBuffer.remaining();
int pos = myBuffer.position();
String dump = dumper.dump(myBuffer);
- assertEquals("ByteBuffer[len=8,str='" + toTest + "'", dump);
+ assertEquals("ByteBuffer[len=8,str='" + toTest + "']", dump);
assertEquals(remaining, myBuffer.remaining());
assertEquals(pos, myBuffer.position());
}
@Test
public void binary_test() {
- ByteBufferDumper dumper = new ByteBufferDumper();
ByteBuffer myBuffer = ByteBuffer.allocate(4);
myBuffer.put((byte) 0x88);
myBuffer.put((byte) 0x03);
@@ -59,9 +58,9 @@ public class ByteBufferDumperTest {
int remaining = myBuffer.remaining();
int pos = myBuffer.position();
- String dump = dumper.dump(myBuffer);
+ String dump = ByteBufferDumper.dump(myBuffer);
System.err.println(dump);
- assertEquals("ByteBuffer[len=3,bytes='88 03 FF'", dump);
+ assertEquals("ByteBuffer[len=3,bytes='\n88 03 FF']", dump);
assertEquals(remaining, myBuffer.remaining());
assertEquals(pos, myBuffer.position());