Class CsvParserBootstrapper

java.lang.Object
com.fasterxml.jackson.dataformat.csv.impl.CsvParserBootstrapper

public final class CsvParserBootstrapper extends Object
This class is used to determine the encoding of byte stream that is to contain CSV document. Since there is no real specification for how this should work with CSV, it will be based on rules used with JSON (which themselves are similar to those used with XML); main points are to check for BOM first, then look for multi-byted fixed-length encodings (UTF-16, UTF-32). And finally, if neither found, must decide between most likely alternatives, UTF-8 and Latin-1.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
     
    protected int
     
    protected final com.fasterxml.jackson.core.ObjectCodec
     
    protected final com.fasterxml.jackson.core.io.IOContext
     
    protected final InputStream
     
    protected final byte[]
     
    private int
     
    protected int
    Current number of input units (bytes or chars) that were processed in previous blocks, before contents of current input buffer.
    private int
     
    (package private) static final byte
     
    (package private) static final byte
     
    (package private) static final byte
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    CsvParserBootstrapper(com.fasterxml.jackson.core.io.IOContext ctxt, com.fasterxml.jackson.core.ObjectCodec codec, byte[] inputBuffer, int inputStart, int inputLen)
     
    CsvParserBootstrapper(com.fasterxml.jackson.core.io.IOContext ctxt, com.fasterxml.jackson.core.ObjectCodec codec, InputStream in)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    private Reader
    _createReader(com.fasterxml.jackson.core.JsonEncoding enc, boolean autoClose)
     
    private boolean
    checkUTF16(int i16)
     
    private boolean
    checkUTF32(int quad)
     
    constructParser(int baseFeatures, int csvFeatures)
     
    protected boolean
    ensureLoaded(int minimum)
     
    private boolean
    handleBOM(int quad)
     
    static com.fasterxml.jackson.core.format.MatchStrength
    hasCSVFormat(com.fasterxml.jackson.core.format.InputAccessor acc, int quoteChar, char separatorChar)
    Current implementation is not as thorough as one used by other data formats like JSON.
    private void
     
    private static final int
    skipSpace(com.fasterxml.jackson.core.format.InputAccessor acc, byte b)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • UTF8_BOM_1

      static final byte UTF8_BOM_1
      See Also:
    • UTF8_BOM_2

      static final byte UTF8_BOM_2
      See Also:
    • UTF8_BOM_3

      static final byte UTF8_BOM_3
      See Also:
    • _context

      protected final com.fasterxml.jackson.core.io.IOContext _context
    • _codec

      protected final com.fasterxml.jackson.core.ObjectCodec _codec
    • _in

      protected final InputStream _in
    • _inputBuffer

      protected final byte[] _inputBuffer
    • _inputPtr

      private int _inputPtr
    • _inputEnd

      private int _inputEnd
    • _inputProcessed

      protected int _inputProcessed
      Current number of input units (bytes or chars) that were processed in previous blocks, before contents of current input buffer.

      Note: includes possible BOMs, if those were part of the input.

    • _bigEndian

      protected boolean _bigEndian
    • _bytesPerChar

      protected int _bytesPerChar
  • Constructor Details

    • CsvParserBootstrapper

      public CsvParserBootstrapper(com.fasterxml.jackson.core.io.IOContext ctxt, com.fasterxml.jackson.core.ObjectCodec codec, InputStream in)
    • CsvParserBootstrapper

      public CsvParserBootstrapper(com.fasterxml.jackson.core.io.IOContext ctxt, com.fasterxml.jackson.core.ObjectCodec codec, byte[] inputBuffer, int inputStart, int inputLen)
  • Method Details

    • constructParser

      public CsvParser constructParser(int baseFeatures, int csvFeatures) throws IOException
      Throws:
      IOException
    • _createReader

      private Reader _createReader(com.fasterxml.jackson.core.JsonEncoding enc, boolean autoClose) throws IOException
      Throws:
      IOException
    • hasCSVFormat

      public static com.fasterxml.jackson.core.format.MatchStrength hasCSVFormat(com.fasterxml.jackson.core.format.InputAccessor acc, int quoteChar, char separatorChar) throws IOException
      Current implementation is not as thorough as one used by other data formats like JSON. But it should work, for now, and can be improved as necessary.
      Throws:
      IOException
    • skipSpace

      private static final int skipSpace(com.fasterxml.jackson.core.format.InputAccessor acc, byte b) throws IOException
      Throws:
      IOException
    • handleBOM

      private boolean handleBOM(int quad) throws IOException
      Returns:
      True if a BOM was successfully found, and encoding thereby recognized.
      Throws:
      IOException
    • checkUTF32

      private boolean checkUTF32(int quad) throws IOException
      Throws:
      IOException
    • checkUTF16

      private boolean checkUTF16(int i16)
    • reportWeirdUCS4

      private void reportWeirdUCS4(String type) throws IOException
      Throws:
      IOException
    • ensureLoaded

      protected boolean ensureLoaded(int minimum) throws IOException
      Throws:
      IOException