ORG.oclc.ecat.util
Class CharacterDecoder
java.lang.Object
|
+--ORG.oclc.ecat.util.CharacterDecoder
- Direct Known Subclasses:
- BASE64Decoder, UCDecoder, UUDecoder
- public abstract class CharacterDecoder
- extends Object
This class defines the decoding half of character encoders.
A character decoder is an algorithim for transforming 8 bit
binary data that has been encoded into text by a character
encoder, back into original binary form.
The character encoders, in general, have been structured
around a central theme that binary data can be encoded into
text that has the form:
[Buffer Prefix]
[Line Prefix][encoded data atoms][Line Suffix]
[Buffer Suffix]
Of course in the simplest encoding schemes, the buffer has no
distinct prefix of suffix, however all have some fixed relationship
between the text in an 'atom' and the binary data itself.
In the CharacterEncoder and CharacterDecoder classes, one complete
chunk of data is referred to as a buffer. Encoded buffers
are all text, and decoded buffers (sometimes just referred to as
buffers) are binary octets.
To create a custom decoder, you must, at a minimum, overide three
abstract methods in this class.
- bytesPerAtom which tells the decoder how many bytes to
expect from decodeAtom
- decodeAtom which decodes the bytes sent to it as text.
- bytesPerLine which tells the encoder the maximum number of
bytes per line.
In general, the character decoders return error in the form of a
CEFormatException. The syntax of the detail string is
DecoderClassName: Error message.
Several useful decoders have already been written and are
referenced in the See Also list below.
- See Also:
CEFormatException
,
CharacterEncoder
,
UCDecoder
,
UUDecoder
,
BASE64Decoder
Method Summary |
byte[] |
decodeBuffer(InputStream in)
Decode the contents of the inputstream into a buffer. |
void |
decodeBuffer(InputStream aStream,
OutputStream bStream)
Decode the text from the InputStream and write the decoded
octets to the OutputStream. |
byte[] |
decodeBuffer(String inputString)
Alternate decode interface that takes a String containing the encoded
buffer and returns a byte array containing the data. |
protected int |
readFully(InputStream in,
byte[] buffer,
int offset,
int len)
This method works around the bizarre semantics of BufferedInputStream's
read method. |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
CharacterDecoder
public CharacterDecoder()
readFully
protected int readFully(InputStream in,
byte[] buffer,
int offset,
int len)
throws IOException
- This method works around the bizarre semantics of BufferedInputStream's
read method.
decodeBuffer
public void decodeBuffer(InputStream aStream,
OutputStream bStream)
throws IOException
- Decode the text from the InputStream and write the decoded
octets to the OutputStream. This method runs until the stream
is exhausted.
- Throws:
- CEFormatException - An error has occured while decoding
- CEStreamExhausted - The input stream is unexpectedly out of data
decodeBuffer
public byte[] decodeBuffer(String inputString)
throws IOException
- Alternate decode interface that takes a String containing the encoded
buffer and returns a byte array containing the data.
- Throws:
- CEFormatException - An error has occured while decoding
decodeBuffer
public byte[] decodeBuffer(InputStream in)
throws IOException
- Decode the contents of the inputstream into a buffer.