com.fasterxml.jackson.dataformat.csv.impl
Class UTF8Reader

java.lang.Object
  extended by java.io.Reader
      extended by com.fasterxml.jackson.dataformat.csv.impl.UTF8Reader
All Implemented Interfaces:
Closeable, Readable

public final class UTF8Reader
extends Reader

Optimized Reader that reads UTF-8 encoded content from an input stream. In addition to doing (hopefully) optimal conversion, it can also take array of "pre-read" (leftover) bytes; this is necessary when preliminary stream/reader is trying to figure out underlying character encoding.


Field Summary
protected  byte[] _inputBuffer
           
protected  int _inputEnd
          Pointed to the end marker, that is, position one after the last valid available byte.
protected  int _inputPtr
          Pointer to the next available byte (if any), iff less than mByteBufferEnd
protected  int _surrogate
          Decoded first character of a surrogate pair, if one needs to be buffered
 
Fields inherited from class java.io.Reader
lock
 
Constructor Summary
UTF8Reader(com.fasterxml.jackson.core.io.IOContext ctxt, byte[] buf, int ptr, int len)
           
UTF8Reader(com.fasterxml.jackson.core.io.IOContext ctxt, InputStream in, boolean autoClose)
           
UTF8Reader(com.fasterxml.jackson.core.io.IOContext ctxt, InputStream in, boolean autoClose, byte[] buf, int ptr, int len)
           
 
Method Summary
protected  boolean canModifyBuffer()
          Method that can be used to see if we can actually modify the underlying buffer.
 void close()
           
 void freeBuffers()
          This method should be called along with (or instead of) normal close.
protected  InputStream getStream()
           
 int read()
          Although this method is implemented by the base class, AND it should never be called by Woodstox code, let's still implement it bit more efficiently just in case
 int read(char[] cbuf)
           
 int read(char[] cbuf, int start, int len)
           
protected  int readBytes()
          Method for reading as many bytes from the underlying stream as possible (that fit in the buffer), to the beginning of the buffer.
protected  int readBytesAt(int offset)
          Method for reading as many bytes from the underlying stream as possible (that fit in the buffer considering offset), to the specified offset.
protected  void reportBounds(char[] cbuf, int start, int len)
           
protected  void reportStrangeStream()
           
 
Methods inherited from class java.io.Reader
mark, markSupported, read, ready, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_inputBuffer

protected byte[] _inputBuffer

_inputPtr

protected int _inputPtr
Pointer to the next available byte (if any), iff less than mByteBufferEnd


_inputEnd

protected int _inputEnd
Pointed to the end marker, that is, position one after the last valid available byte.


_surrogate

protected int _surrogate
Decoded first character of a surrogate pair, if one needs to be buffered

Constructor Detail

UTF8Reader

public UTF8Reader(com.fasterxml.jackson.core.io.IOContext ctxt,
                  InputStream in,
                  boolean autoClose,
                  byte[] buf,
                  int ptr,
                  int len)

UTF8Reader

public UTF8Reader(com.fasterxml.jackson.core.io.IOContext ctxt,
                  byte[] buf,
                  int ptr,
                  int len)

UTF8Reader

public UTF8Reader(com.fasterxml.jackson.core.io.IOContext ctxt,
                  InputStream in,
                  boolean autoClose)
Method Detail

canModifyBuffer

protected final boolean canModifyBuffer()
Method that can be used to see if we can actually modify the underlying buffer. This is the case if we are managing the buffer, but not if it was just given to us.


close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Specified by:
close in class Reader
Throws:
IOException

read

public int read()
         throws IOException
Although this method is implemented by the base class, AND it should never be called by Woodstox code, let's still implement it bit more efficiently just in case

Overrides:
read in class Reader
Throws:
IOException

read

public int read(char[] cbuf)
         throws IOException
Overrides:
read in class Reader
Throws:
IOException

read

public int read(char[] cbuf,
                int start,
                int len)
         throws IOException
Specified by:
read in class Reader
Throws:
IOException

getStream

protected final InputStream getStream()

readBytes

protected final int readBytes()
                       throws IOException
Method for reading as many bytes from the underlying stream as possible (that fit in the buffer), to the beginning of the buffer.

Throws:
IOException

readBytesAt

protected final int readBytesAt(int offset)
                         throws IOException
Method for reading as many bytes from the underlying stream as possible (that fit in the buffer considering offset), to the specified offset.

Returns:
Number of bytes read, if any; -1 to indicate none available (that is, end of input)
Throws:
IOException

freeBuffers

public final void freeBuffers()
This method should be called along with (or instead of) normal close. After calling this method, no further reads should be tried. Method will try to recycle read buffers (if any).


reportBounds

protected void reportBounds(char[] cbuf,
                            int start,
                            int len)
                     throws IOException
Throws:
IOException

reportStrangeStream

protected void reportStrangeStream()
                            throws IOException
Throws:
IOException


Copyright © 2012 fasterxml.com. All Rights Reserved.