Fix javadoc

This commit is contained in:
Taro L. Saito 2011-09-22 15:37:18 +09:00
parent f023e040f2
commit ebf661dc74
4 changed files with 277 additions and 14 deletions

View File

@ -86,6 +86,7 @@
<configuration> <configuration>
<charset>UTF-8</charset> <charset>UTF-8</charset>
<locale>en_US</locale> <locale>en_US</locale>
<show>public</show>
</configuration> </configuration>
<executions> <executions>
<execution> <execution>

View File

@ -27,6 +27,7 @@ package org.xerial.snappy;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.Charset;
/** /**
* Snappy API for data compression/decompression * Snappy API for data compression/decompression
@ -138,30 +139,73 @@ public class Snappy
return compressedSize; return compressedSize;
} }
/**
* Compress the input char array
*
* @param input
* @return the compressed data
*/
public static byte[] compress(char[] input) { public static byte[] compress(char[] input) {
return rawCompress(input, input.length * 2); // char uses 2 bytes return rawCompress(input, input.length * 2); // char uses 2 bytes
} }
/**
* Compress the input double array
*
* @param input
* @return the compressed data
*/
public static byte[] compress(double[] input) { public static byte[] compress(double[] input) {
return rawCompress(input, input.length * 8); // double uses 8 bytes return rawCompress(input, input.length * 8); // double uses 8 bytes
} }
/**
* Compress the input float array
*
* @param input
* @return the compressed data
*/
public static byte[] compress(float[] input) { public static byte[] compress(float[] input) {
return rawCompress(input, input.length * 4); // float uses 4 bytes return rawCompress(input, input.length * 4); // float uses 4 bytes
} }
/**
* Compress the input int array
*
* @param input
* @return the compressed data
*/
public static byte[] compress(int[] input) { public static byte[] compress(int[] input) {
return rawCompress(input, input.length * 4); // int uses 4 bytes return rawCompress(input, input.length * 4); // int uses 4 bytes
} }
/**
* Compress the input long array
*
* @param input
* @return the compressed data
*/
public static byte[] compress(long[] input) { public static byte[] compress(long[] input) {
return rawCompress(input, input.length * 8); // long uses 8 bytes return rawCompress(input, input.length * 8); // long uses 8 bytes
} }
/**
* Compress the input short array
*
* @param input
* @return the compressed data
*/
public static byte[] compress(short[] input) { public static byte[] compress(short[] input) {
return rawCompress(input, input.length * 2); // short uses 2 bytes return rawCompress(input, input.length * 2); // short uses 2 bytes
} }
/**
* Compress the input String
*
* @param s
* @return the compressed data
* @throws IOException
*/
public static byte[] compress(String s) throws IOException { public static byte[] compress(String s) throws IOException {
try { try {
return compress(s, "UTF-8"); return compress(s, "UTF-8");
@ -171,11 +215,34 @@ public class Snappy
} }
} }
/**
* Compress the input string using the given encoding
*
* @param s
* @param encoding
* @return the compressed data
* @throws UnsupportedEncodingException
* @throws IOException
*/
public static byte[] compress(String s, String encoding) throws UnsupportedEncodingException, IOException { public static byte[] compress(String s, String encoding) throws UnsupportedEncodingException, IOException {
byte[] data = s.getBytes(encoding); byte[] data = s.getBytes(encoding);
return compress(data); return compress(data);
} }
/**
* Compress the input string using the given encoding
*
* @param s
* @param encoding
* @return the compressed data
* @throws UnsupportedEncodingException
* @throws IOException
*/
public static byte[] compress(String s, Charset encoding) throws IOException {
byte[] data = s.getBytes(encoding);
return compress(data);
}
/** /**
* Get the native library version of the snappy * Get the native library version of the snappy
* *
@ -252,13 +319,13 @@ public class Snappy
* write the compressed data to the output buffer[offset, ...) * write the compressed data to the output buffer[offset, ...)
* *
* @param input * @param input
* input array. This MUST be primitive array type * input array. This MUST be a primitive array type
* @param inputOffset * @param inputOffset
* byte offset at the output array * byte offset at the output array
* @param inputLength * @param inputLength
* byte length of the input data * byte length of the input data
* @param output * @param output
* output array. This MUST be primitive array type * output array. This MUST be a primitive array type
* @param outputOffset * @param outputOffset
* byte offset at the output array * byte offset at the output array
* @return byte size of the compressed data * @return byte size of the compressed data
@ -380,10 +447,26 @@ public class Snappy
return decompressedSize; return decompressedSize;
} }
/**
* Uncompress the input data as char array
*
* @param input
* @return the umcompressed data
* @throws IOException
*/
public static char[] uncompressCharArray(byte[] input) throws IOException { public static char[] uncompressCharArray(byte[] input) throws IOException {
return uncompressCharArray(input, 0, input.length); return uncompressCharArray(input, 0, input.length);
} }
/**
* Uncompress the input[offset, .., offset+length) as a char array
*
* @param input
* @param offset
* @param length
* @return the uncompressed data
* @throws IOException
*/
public static char[] uncompressCharArray(byte[] input, int offset, int length) throws IOException { public static char[] uncompressCharArray(byte[] input, int offset, int length) throws IOException {
int uncompressedLength = Snappy.uncompressedLength(input, offset, length); int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
char[] result = new char[uncompressedLength / 2]; char[] result = new char[uncompressedLength / 2];
@ -391,6 +474,13 @@ public class Snappy
return result; return result;
} }
/**
* Uncompress the input as a double array
*
* @param input
* @return the uncompressed data
* @throws IOException
*/
public static double[] uncompressDoubleArray(byte[] input) throws IOException { public static double[] uncompressDoubleArray(byte[] input) throws IOException {
int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length); int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length);
double[] result = new double[uncompressedLength / 8]; double[] result = new double[uncompressedLength / 8];
@ -451,10 +541,26 @@ public class Snappy
return ((SnappyNativeAPI) impl).uncompressedLength(compressed, compressed.position(), compressed.remaining()); return ((SnappyNativeAPI) impl).uncompressedLength(compressed, compressed.position(), compressed.remaining());
} }
/**
* Uncompress the input as a float array
*
* @param input
* @return the uncompressed data
* @throws IOException
*/
public static float[] uncompressFloatArray(byte[] input) throws IOException { public static float[] uncompressFloatArray(byte[] input) throws IOException {
return uncompressFloatArray(input, 0, input.length); return uncompressFloatArray(input, 0, input.length);
} }
/**
* Uncompress the input[offset, offset+length) as a float array
*
* @param input
* @param offset
* @param length
* @return the uncompressed data
* @throws IOException
*/
public static float[] uncompressFloatArray(byte[] input, int offset, int length) throws IOException { public static float[] uncompressFloatArray(byte[] input, int offset, int length) throws IOException {
int uncompressedLength = Snappy.uncompressedLength(input, offset, length); int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
float[] result = new float[uncompressedLength / 4]; float[] result = new float[uncompressedLength / 4];
@ -462,10 +568,26 @@ public class Snappy
return result; return result;
} }
/**
* Uncompress the input data as an int array
*
* @param input
* @return the uncompressed data
* @throws IOException
*/
public static int[] uncompressIntArray(byte[] input) throws IOException { public static int[] uncompressIntArray(byte[] input) throws IOException {
return uncompressIntArray(input, 0, input.length); return uncompressIntArray(input, 0, input.length);
} }
/**
* Uncompress the input[offset, offset+length) as an int array
*
* @param input
* @param offset
* @param length
* @return the uncompressed data
* @throws IOException
*/
public static int[] uncompressIntArray(byte[] input, int offset, int length) throws IOException { public static int[] uncompressIntArray(byte[] input, int offset, int length) throws IOException {
int uncompressedLength = Snappy.uncompressedLength(input, offset, length); int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
int[] result = new int[uncompressedLength / 4]; int[] result = new int[uncompressedLength / 4];
@ -473,10 +595,26 @@ public class Snappy
return result; return result;
} }
/**
* Uncompress the input data as a long array
*
* @param input
* @return the uncompressed data
* @throws IOException
*/
public static long[] uncompressLongArray(byte[] input) throws IOException { public static long[] uncompressLongArray(byte[] input) throws IOException {
return uncompressLongArray(input, 0, input.length); return uncompressLongArray(input, 0, input.length);
} }
/**
* Uncompress the input[offset, offset+length) as a long array
*
* @param input
* @param offset
* @param length
* @return the uncompressed data
* @throws IOException
*/
public static long[] uncompressLongArray(byte[] input, int offset, int length) throws IOException { public static long[] uncompressLongArray(byte[] input, int offset, int length) throws IOException {
int uncompressedLength = Snappy.uncompressedLength(input, offset, length); int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
long[] result = new long[uncompressedLength / 8]; long[] result = new long[uncompressedLength / 8];
@ -484,10 +622,26 @@ public class Snappy
return result; return result;
} }
/**
* Uncompress the input as a short array
*
* @param input
* @return the uncompressed data
* @throws IOException
*/
public static short[] uncompressShortArray(byte[] input) throws IOException { public static short[] uncompressShortArray(byte[] input) throws IOException {
return uncompressShortArray(input, 0, input.length); return uncompressShortArray(input, 0, input.length);
} }
/**
* Uncompress the input[offset, offset+length) as a short array
*
* @param input
* @param offset
* @param length
* @return the uncompressed data
* @throws IOException
*/
public static short[] uncompressShortArray(byte[] input, int offset, int length) throws IOException { public static short[] uncompressShortArray(byte[] input, int offset, int length) throws IOException {
int uncompressedLength = Snappy.uncompressedLength(input, offset, length); int uncompressedLength = Snappy.uncompressedLength(input, offset, length);
short[] result = new short[uncompressedLength / 2]; short[] result = new short[uncompressedLength / 2];
@ -495,6 +649,13 @@ public class Snappy
return result; return result;
} }
/**
* Uncompress the input as a String
*
* @param input
* @return the uncompressed dasta
* @throws IOException
*/
public static String uncompressString(byte[] input) throws IOException { public static String uncompressString(byte[] input) throws IOException {
try { try {
return uncompressString(input, "UTF-8"); return uncompressString(input, "UTF-8");
@ -504,6 +665,15 @@ public class Snappy
} }
} }
/**
* Uncompress the input[offset, offset+length) as a String
*
* @param input
* @param offset
* @param length
* @return the uncompressed data
* @throws IOException
*/
public static String uncompressString(byte[] input, int offset, int length) throws IOException { public static String uncompressString(byte[] input, int offset, int length) throws IOException {
try { try {
return uncompressString(input, offset, length, "UTF-8"); return uncompressString(input, offset, length, "UTF-8");
@ -513,6 +683,17 @@ public class Snappy
} }
} }
/**
* Uncompress the input[offset, offset+length) as a String of the given
* encoding
*
* @param input
* @param offset
* @param length
* @param encoding
* @return the uncompressed data
* @throws IOException
*/
public static String uncompressString(byte[] input, int offset, int length, String encoding) throws IOException, public static String uncompressString(byte[] input, int offset, int length, String encoding) throws IOException,
UnsupportedEncodingException { UnsupportedEncodingException {
byte[] uncompressed = new byte[uncompressedLength(input, offset, length)]; byte[] uncompressed = new byte[uncompressedLength(input, offset, length)];
@ -520,10 +701,50 @@ public class Snappy
return new String(uncompressed, encoding); return new String(uncompressed, encoding);
} }
/**
* Uncompress the input[offset, offset+length) as a String of the given
* encoding
*
* @param input
* @param offset
* @param length
* @param encoding
* @return the uncompressed data
* @throws IOException
*/
public static String uncompressString(byte[] input, int offset, int length, Charset encoding) throws IOException,
UnsupportedEncodingException {
byte[] uncompressed = new byte[uncompressedLength(input, offset, length)];
int compressedSize = uncompress(input, offset, length, uncompressed, 0);
return new String(uncompressed, encoding);
}
/**
* Uncompress the input as a String of the given encoding
*
* @param input
* @param encoding
* @return the uncompressed data
* @throws IOException
* @throws UnsupportedEncodingException
*/
public static String uncompressString(byte[] input, String encoding) throws IOException, public static String uncompressString(byte[] input, String encoding) throws IOException,
UnsupportedEncodingException { UnsupportedEncodingException {
byte[] uncompressed = uncompress(input); byte[] uncompressed = uncompress(input);
return new String(uncompressed, encoding); return new String(uncompressed, encoding);
} }
/**
* Uncompress the input as a String of the given encoding
*
* @param input
* @param encoding
* @return the uncompressed data
* @throws IOException
*/
public static String uncompressString(byte[] input, Charset encoding) throws IOException,
UnsupportedEncodingException {
byte[] uncompressed = uncompress(input);
return new String(uncompressed, encoding);
}
} }

View File

@ -31,6 +31,7 @@ import java.io.InputStream;
/** /**
* A stream filter for reading data compressed by {@link SnappyOutputStream}. * A stream filter for reading data compressed by {@link SnappyOutputStream}.
* *
*
* @author leo * @author leo
* *
*/ */
@ -46,11 +47,23 @@ public class SnappyInputStream extends InputStream
private byte[] chunkSizeBuf = new byte[4]; private byte[] chunkSizeBuf = new byte[4];
/**
* Create a filter for reading compressed data as a uncompressed stream
*
* @param input
* @throws IOException
*/
public SnappyInputStream(InputStream input) throws IOException { public SnappyInputStream(InputStream input) throws IOException {
this.in = input; this.in = input;
readHeader(); readHeader();
} }
/**
* Close the stream
*/
/* (non-Javadoc)
* @see java.io.InputStream#close()
*/
@Override @Override
public void close() throws IOException { public void close() throws IOException {
compressed = null; compressed = null;
@ -117,6 +130,13 @@ public class SnappyInputStream extends InputStream
} }
/**
* Reads up to len bytes of data from the input stream into an array of
* bytes.
*/
/* (non-Javadoc)
* @see java.io.InputStream#read(byte[], int, int)
*/
@Override @Override
public int read(byte[] b, int off, int len) throws IOException { public int read(byte[] b, int off, int len) throws IOException {
return rawRead(b, off, len); return rawRead(b, off, len);
@ -159,7 +179,8 @@ public class SnappyInputStream extends InputStream
* offset * offset
* @param len * @param len
* the number of long elements to read * the number of long elements to read
* @return the number of read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(long[] d, int off, int len) throws IOException { public int read(long[] d, int off, int len) throws IOException {
@ -170,7 +191,8 @@ public class SnappyInputStream extends InputStream
* Read long array from the stream * Read long array from the stream
* *
* @param d * @param d
* @return the number of read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(long[] d) throws IOException { public int read(long[] d) throws IOException {
@ -186,7 +208,8 @@ public class SnappyInputStream extends InputStream
* offset * offset
* @param len * @param len
* the number of double elements to read * the number of double elements to read
* @return the number of read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(double[] d, int off, int len) throws IOException { public int read(double[] d, int off, int len) throws IOException {
@ -197,7 +220,8 @@ public class SnappyInputStream extends InputStream
* Read double array from the stream * Read double array from the stream
* *
* @param d * @param d
* @return read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(double[] d) throws IOException { public int read(double[] d) throws IOException {
@ -208,7 +232,8 @@ public class SnappyInputStream extends InputStream
* Read int array from the stream * Read int array from the stream
* *
* @param d * @param d
* @return read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(int[] d) throws IOException { public int read(int[] d) throws IOException {
@ -224,7 +249,8 @@ public class SnappyInputStream extends InputStream
* offset * offset
* @param len * @param len
* the number of int elements to read * the number of int elements to read
* @return the number of read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(int[] d, int off, int len) throws IOException { public int read(int[] d, int off, int len) throws IOException {
@ -240,7 +266,8 @@ public class SnappyInputStream extends InputStream
* offset * offset
* @param len * @param len
* the number of float elements to read * the number of float elements to read
* @return the number of read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(float[] d, int off, int len) throws IOException { public int read(float[] d, int off, int len) throws IOException {
@ -251,7 +278,8 @@ public class SnappyInputStream extends InputStream
* Read float array from the stream * Read float array from the stream
* *
* @param d * @param d
* @return the number of read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(float[] d) throws IOException { public int read(float[] d) throws IOException {
@ -267,7 +295,8 @@ public class SnappyInputStream extends InputStream
* offset * offset
* @param len * @param len
* the number of short elements to read * the number of short elements to read
* @return the number of read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(short[] d, int off, int len) throws IOException { public int read(short[] d, int off, int len) throws IOException {
@ -278,7 +307,8 @@ public class SnappyInputStream extends InputStream
* Read short array from the stream * Read short array from the stream
* *
* @param d * @param d
* @return the number of read bytes * @return the total number of bytes read into the buffer, or -1 if there is
* no more data because the end of the stream has been reached.
* @throws IOException * @throws IOException
*/ */
public int read(short[] d) throws IOException { public int read(short[] d) throws IOException {
@ -330,6 +360,16 @@ public class SnappyInputStream extends InputStream
return true; return true;
} }
/**
* Reads the next byte of uncompressed data from the input stream. The value
* byte is returned as an int in the range 0 to 255. If no byte is available
* because the end of the stream has been reached, the value -1 is returned.
* This method blocks until input data is available, the end of the stream
* is detected, or an exception is thrown.
*/
/* (non-Javadoc)
* @see java.io.InputStream#read()
*/
@Override @Override
public int read() throws IOException { public int read() throws IOException {
if (uncompressedCursor < uncompressedLimit) { if (uncompressedCursor < uncompressedLimit) {

View File

@ -36,8 +36,9 @@ import java.io.OutputStream;
* *
* The output data format is: * The output data format is:
* <ol> * <ol>
* <li>snappy codec header defined in {@link SnappyCodec} * <li>snappy codec header defined in {@link SnappyCodec} (8 bytes)
* <li>a pair of (compressed data size, compressed data...) * <li>a pair of (compressed data size [4 byte integer. Big-endian], compressed
* data...)
* <li>... * <li>...
* </ol> * </ol>
* *