aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/poi/util/HexDump.java
diff options
context:
space:
mode:
authorGlen Stampoultzis <glens@apache.org>2003-06-30 12:20:55 +0000
committerGlen Stampoultzis <glens@apache.org>2003-06-30 12:20:55 +0000
commit8d0a7d44ae244a27849e99c686fdf3c692ff5fa1 (patch)
treee97f890fcc93987565c12bb44bb6a5b74f45fcfd /src/java/org/apache/poi/util/HexDump.java
parent07313980e1479bcc7ab7571f4880a366e4acb287 (diff)
downloadpoi-8d0a7d44ae244a27849e99c686fdf3c692ff5fa1.tar.gz
poi-8d0a7d44ae244a27849e99c686fdf3c692ff5fa1.zip
Fixed concurrency problem in HexDump
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353179 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/poi/util/HexDump.java')
-rw-r--r--src/java/org/apache/poi/util/HexDump.java81
1 files changed, 60 insertions, 21 deletions
diff --git a/src/java/org/apache/poi/util/HexDump.java b/src/java/org/apache/poi/util/HexDump.java
index bc846459d1..d45b239bf7 100644
--- a/src/java/org/apache/poi/util/HexDump.java
+++ b/src/java/org/apache/poi/util/HexDump.java
@@ -67,6 +67,20 @@ import java.io.*;
public class HexDump
{
+ public static final String EOL =
+ System.getProperty("line.separator");
+// private static final StringBuffer _lbuffer = new StringBuffer(8);
+// private static final StringBuffer _cbuffer = new StringBuffer(2);
+ private static final char _hexcodes[] =
+ {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
+ 'E', 'F'
+ };
+ private static final int _shifts[] =
+ {
+ 28, 24, 20, 16, 12, 8, 4, 0
+ };
+
// all static methods, so no need for a public constructor
private HexDump()
@@ -241,39 +255,26 @@ public class HexDump
}
- public static final String EOL =
- System.getProperty("line.separator");
- private static final StringBuffer _lbuffer = new StringBuffer(8);
- private static final StringBuffer _cbuffer = new StringBuffer(2);
- private static final char _hexcodes[] =
- {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
- 'E', 'F'
- };
- private static final int _shifts[] =
- {
- 28, 24, 20, 16, 12, 8, 4, 0
- };
-
private static String dump(final long value)
{
- _lbuffer.setLength(0);
+ StringBuffer buf = new StringBuffer();
+ buf.setLength(0);
for (int j = 0; j < 8; j++)
{
- _lbuffer
- .append(_hexcodes[ (( int ) (value >> _shifts[ j ])) & 15 ]);
+ buf.append( _hexcodes[ (( int ) (value >> _shifts[ j ])) & 15 ]);
}
- return _lbuffer.toString();
+ return buf.toString();
}
private static String dump(final byte value)
{
- _cbuffer.setLength(0);
+ StringBuffer buf = new StringBuffer();
+ buf.setLength(0);
for (int j = 0; j < 2; j++)
{
- _cbuffer.append(_hexcodes[ (value >> _shifts[ j + 6 ]) & 15 ]);
+ buf.append(_hexcodes[ (value >> _shifts[ j + 6 ]) & 15 ]);
}
- return _cbuffer.toString();
+ return buf.toString();
}
/**
@@ -294,6 +295,7 @@ public class HexDump
retVal.append(']');
return retVal.toString();
}
+
/**
* Converts the parameter to a hex value.
*
@@ -337,4 +339,41 @@ public class HexDump
}
return result.toString();
}
+
+ /**
+ * Dumps <code>bytesToDump</code> bytes to an output stream.
+ *
+ * @param in The stream to read from
+ * @param out The output stream
+ * @param start The index to use as the starting position for the left hand side label
+ * @param bytesToDump The number of bytes to output. Use -1 to read until the end of file.
+ */
+ public static void dump( InputStream in, PrintStream out, int start, int bytesToDump ) throws IOException
+ {
+ ByteArrayOutputStream buf = new ByteArrayOutputStream();
+ if (bytesToDump == -1)
+ {
+ int c = in.read();
+ while (c != -1)
+ {
+ buf.write(c);
+ c = in.read();
+ }
+ }
+ else
+ {
+ int bytesRemaining = bytesToDump;
+ while (bytesRemaining-- > 0)
+ {
+ int c = in.read();
+ if (c == -1)
+ break;
+ else
+ buf.write(c);
+ }
+ }
+
+ byte[] data = buf.toByteArray();
+ dump(data, 0, out, start, data.length);
+ }
}