public abstract class BaseNCodec extends java.lang.Object implements BinaryEncoder, BinaryDecoder
This class is thread-safe.
| Modifier and Type | Class and Description |
|---|---|
(package private) static class |
BaseNCodec.Context
Holds thread context so classes can be thread-safe.
|
| Modifier and Type | Field and Description |
|---|---|
private int |
chunkSeparatorLength
Size of chunk separator.
|
private static int |
DEFAULT_BUFFER_RESIZE_FACTOR |
private static int |
DEFAULT_BUFFER_SIZE
Defines the default buffer size - currently 8192
- must be large enough for at least one encoded block+separator
|
private int |
encodedBlockSize
Number of bytes in each full block of encoded data, e.g.
|
(package private) static int |
EOF
EOF
|
protected int |
lineLength
Chunksize for encoding.
|
protected static int |
MASK_8BITS
Mask used to extract 8 bits, used in decoding bytes
|
static int |
MIME_CHUNK_SIZE
MIME chunk size per RFC 2045 section 6.8.
|
protected byte |
PAD |
protected static byte |
PAD_DEFAULT
Byte used to pad output.
|
static int |
PEM_CHUNK_SIZE
PEM chunk size per RFC 1421 section 4.3.2.4.
|
private int |
unencodedBlockSize
Number of bytes in each full block of unencoded data, e.g.
|
| Modifier | Constructor and Description |
|---|---|
protected |
BaseNCodec(int unencodedBlockSize,
int encodedBlockSize,
int lineLength,
int chunkSeparatorLength)
Note
lineLength is rounded down to the nearest multiple of encodedBlockSize
If chunkSeparatorLength is zero, then chunking is disabled. |
| Modifier and Type | Method and Description |
|---|---|
(package private) int |
available(BaseNCodec.Context context)
Returns the amount of buffered data available for reading.
|
protected boolean |
containsAlphabetOrPad(byte[] arrayOctet)
Tests a given byte array to see if it contains any characters within the alphabet or PAD.
|
byte[] |
decode(byte[] pArray)
Decodes a byte[] containing characters in the Base-N alphabet.
|
(package private) abstract void |
decode(byte[] pArray,
int i,
int length,
BaseNCodec.Context context) |
java.lang.Object |
decode(java.lang.Object obj)
Decodes an Object using the Base-N algorithm.
|
byte[] |
decode(java.lang.String pArray)
Decodes a String containing characters in the Base-N alphabet.
|
byte[] |
encode(byte[] pArray)
Encodes a byte[] containing binary data, into a byte[] containing characters in the alphabet.
|
(package private) abstract void |
encode(byte[] pArray,
int i,
int length,
BaseNCodec.Context context) |
java.lang.Object |
encode(java.lang.Object obj)
Encodes an Object using the Base-N algorithm.
|
java.lang.String |
encodeAsString(byte[] pArray)
Encodes a byte[] containing binary data, into a String containing characters in the appropriate alphabet.
|
java.lang.String |
encodeToString(byte[] pArray)
Encodes a byte[] containing binary data, into a String containing characters in the Base-N alphabet.
|
protected byte[] |
ensureBufferSize(int size,
BaseNCodec.Context context)
Ensure that the buffer has room for
size bytes |
protected int |
getDefaultBufferSize()
Get the default buffer size.
|
long |
getEncodedLength(byte[] pArray)
Calculates the amount of space needed to encode the supplied array.
|
(package private) boolean |
hasData(BaseNCodec.Context context)
Returns true if this object has buffered data for reading.
|
protected abstract boolean |
isInAlphabet(byte value)
Returns whether or not the
octet is in the current alphabet. |
boolean |
isInAlphabet(byte[] arrayOctet,
boolean allowWSPad)
Tests a given byte array to see if it contains only valid characters within the alphabet.
|
boolean |
isInAlphabet(java.lang.String basen)
Tests a given String to see if it contains only valid characters within the alphabet.
|
protected static boolean |
isWhiteSpace(byte byteToCheck)
Checks if a byte value is whitespace or not.
|
(package private) int |
readResults(byte[] b,
int bPos,
int bAvail,
BaseNCodec.Context context)
Extracts buffered data into the provided byte[] array, starting at position bPos, up to a maximum of bAvail
bytes.
|
private byte[] |
resizeBuffer(BaseNCodec.Context context)
Increases our buffer by the
DEFAULT_BUFFER_RESIZE_FACTOR. |
static final int EOF
public static final int MIME_CHUNK_SIZE
The 76 character limit does not count the trailing CRLF, but counts all other characters, including any equal signs.
public static final int PEM_CHUNK_SIZE
The 64 character limit does not count the trailing CRLF, but counts all other characters, including any equal signs.
private static final int DEFAULT_BUFFER_RESIZE_FACTOR
private static final int DEFAULT_BUFFER_SIZE
protected static final int MASK_8BITS
protected static final byte PAD_DEFAULT
protected final byte PAD
private final int unencodedBlockSize
private final int encodedBlockSize
protected final int lineLength
private final int chunkSeparatorLength
lineLength > 0.protected BaseNCodec(int unencodedBlockSize,
int encodedBlockSize,
int lineLength,
int chunkSeparatorLength)
lineLength is rounded down to the nearest multiple of encodedBlockSize
If chunkSeparatorLength is zero, then chunking is disabled.unencodedBlockSize - the size of an unencoded block (e.g. Base64 = 3)encodedBlockSize - the size of an encoded block (e.g. Base64 = 4)lineLength - if > 0, use chunking with a length lineLengthchunkSeparatorLength - the chunk separator length, if relevantboolean hasData(BaseNCodec.Context context)
context - the context to be usedint available(BaseNCodec.Context context)
context - the context to be usedprotected int getDefaultBufferSize()
DEFAULT_BUFFER_SIZEprivate byte[] resizeBuffer(BaseNCodec.Context context)
DEFAULT_BUFFER_RESIZE_FACTOR.context - the context to be usedprotected byte[] ensureBufferSize(int size,
BaseNCodec.Context context)
size bytessize - minimum spare space requiredcontext - the context to be usedint readResults(byte[] b,
int bPos,
int bAvail,
BaseNCodec.Context context)
Package protected for access from I/O streams.
b - byte[] array to extract the buffered data into.bPos - position in byte[] array to start extraction at.bAvail - amount of bytes we're allowed to extract. We may extract fewer (if fewer are available).context - the context to be usedprotected static boolean isWhiteSpace(byte byteToCheck)
byteToCheck - the byte to checkpublic java.lang.Object encode(java.lang.Object obj)
throws EncoderException
encode in interface Encoderobj - Object to encodeEncoderException - if the parameter supplied is not of type byte[]public java.lang.String encodeToString(byte[] pArray)
pArray - a byte array containing binary datapublic java.lang.String encodeAsString(byte[] pArray)
pArray - a byte array containing binary datapublic java.lang.Object decode(java.lang.Object obj)
throws DecoderException
decode in interface Decoderobj - Object to decodeDecoderException - if the parameter supplied is not of type byte[]public byte[] decode(java.lang.String pArray)
pArray - A String containing Base-N character datapublic byte[] decode(byte[] pArray)
decode in interface BinaryDecoderpArray - A byte array containing Base-N character datapublic byte[] encode(byte[] pArray)
encode in interface BinaryEncoderpArray - a byte array containing binary dataabstract void encode(byte[] pArray,
int i,
int length,
BaseNCodec.Context context)
abstract void decode(byte[] pArray,
int i,
int length,
BaseNCodec.Context context)
protected abstract boolean isInAlphabet(byte value)
octet is in the current alphabet.
Does not allow whitespace or pad.value - The value to testtrue if the value is defined in the current alphabet, false otherwise.public boolean isInAlphabet(byte[] arrayOctet,
boolean allowWSPad)
arrayOctet - byte array to testallowWSPad - if true, then whitespace and PAD are also allowedtrue if all bytes are valid characters in the alphabet or if the byte array is empty;
false, otherwisepublic boolean isInAlphabet(java.lang.String basen)
basen - String to testtrue if all characters in the String are valid characters in the alphabet or if
the String is empty; false, otherwiseisInAlphabet(byte[], boolean)protected boolean containsAlphabetOrPad(byte[] arrayOctet)
arrayOctet - byte array to testtrue if any byte is a valid character in the alphabet or PAD; false otherwisepublic long getEncodedLength(byte[] pArray)
pArray - byte[] array which will later be encodedcommons-codec version 1.9 - Copyright © 2002-2014 - Apache Software Foundation