com.ibm.jzos
Class Transcoder

java.lang.Object
  extended by com.ibm.jzos.Transcoder

public class Transcoder
extends java.lang.Object

This class provides conversions from a source Charset (Codepage) to a target Charset. A byte array encoded in the source Charset is accepted as input. These bytes are decoded to unicode with the source Charset decoder. The resulting CharBuffer is written to the supplied outputStream through an OutputStreamWriter encoded with the target Charset.

This class is not threadsafe; the decoder and ByteBuffer used for processing the input are stateful. This is due to the fact that the source byte array may be encoded with a multi-byte Charset (e.g. UTF-8), and a call to translate() may deliver a byte array that has an incomplete byte sequence. Subsequent call(s) to translate() are expected to deliver the remaining bytes in the sequence. Once these bytes arrive, the incomplete sequence can be decoded. A direct ByteBuffer is used (rather than wrapping the input byte array) so that the incomplete byte sequence can be preserved between calls.

The errorActions taken for both the decoder and encoder are CodingErrorAction.REPLACE. The default replacement will be used, but can be overridden.


Constructor Summary
Transcoder(java.lang.String sourceEncoding, java.lang.String targetEncoding, java.io.OutputStream outputStream)
          Construct an instnace
Transcoder(java.lang.String sourceEncoding, java.lang.String targetEncoding, java.io.OutputStream outputStream, int byteBufferSize, int charBufferSize, boolean autoFlush)
          Construct an instance
 
Method Summary
 void flush()
          Flush the output encoding writer
 java.nio.charset.CharsetDecoder getDecoder()
          Return the CharsetDecoder that is in use by this Transcoder.
 java.nio.charset.CharsetEncoder getEncoder()
          Return the CharsetEncoder that is in use by this Transcoder.
 java.nio.charset.Charset getSourceCharset()
          Answer the source CharSet
 java.nio.charset.Charset getTargetCharset()
          Answer the target Charset
 boolean isAutoFlush()
          Answer true if autoFlush is enabled
 void reset()
          Rest the encoding state
 void setAutoFlush(boolean autoFlush)
          Enable or disable autoflush
 void translate(byte[] bytes)
          Transcode a byte array
 void translate(byte[] bytes, int offset, int length)
          Transcode a byte array at a given offset and length
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Transcoder

public Transcoder(java.lang.String sourceEncoding,
                  java.lang.String targetEncoding,
                  java.io.OutputStream outputStream)
           throws java.nio.charset.UnsupportedCharsetException
Construct an instnace

Parameters:
sourceEncoding - the source codepage name
targetEncoding - the target codepage name
outputStream - the target OutputStream
Throws:
java.nio.charset.UnsupportedCharsetException

Transcoder

public Transcoder(java.lang.String sourceEncoding,
                  java.lang.String targetEncoding,
                  java.io.OutputStream outputStream,
                  int byteBufferSize,
                  int charBufferSize,
                  boolean autoFlush)
           throws java.nio.charset.UnsupportedCharsetException
Construct an instance

Parameters:
sourceEncoding - the source codepage name
targetEncoding - the target codepage name
outputStream - the target OutputStream
byteBufferSize - the byte/input buffer size
charBufferSize - the character/output buffersize
autoFlush - if true, autoflush the output stream
Throws:
java.nio.charset.UnsupportedCharsetException
Method Detail

translate

public void translate(byte[] bytes)
               throws java.io.IOException
Transcode a byte array

Throws:
java.io.IOException

translate

public void translate(byte[] bytes,
                      int offset,
                      int length)
               throws java.io.IOException
Transcode a byte array at a given offset and length

Throws:
java.io.IOException

getDecoder

public java.nio.charset.CharsetDecoder getDecoder()
Return the CharsetDecoder that is in use by this Transcoder. Access is provided so that the CodingErrorActions can be changed or a new unicode replacement string supplied. By default, the decoder REPLACEs malformed input and unmappable bytes with the its default replacement string.


getEncoder

public java.nio.charset.CharsetEncoder getEncoder()
Return the CharsetEncoder that is in use by this Transcoder. Access is provided so that the CodingErrorActions can be changed or a new replacement byte sequence supplied. By default, the encoder REPLACEs malformed input and unmappable characters with the its default replacement byte sequence.


flush

public void flush()
           throws java.io.IOException
Flush the output encoding writer

Throws:
java.io.IOException

reset

public void reset()
           throws java.io.IOException
Rest the encoding state

Throws:
java.io.IOException

isAutoFlush

public boolean isAutoFlush()
Answer true if autoFlush is enabled


setAutoFlush

public void setAutoFlush(boolean autoFlush)
Enable or disable autoflush


getSourceCharset

public java.nio.charset.Charset getSourceCharset()
Answer the source CharSet


getTargetCharset

public java.nio.charset.Charset getTargetCharset()
Answer the target Charset