Class CsvParserBootstrapper
java.lang.Object
com.fasterxml.jackson.dataformat.csv.impl.CsvParserBootstrapper
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
FieldsModifier and TypeFieldDescriptionprotected 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
ConstructorsConstructorDescriptionCsvParserBootstrapper
(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 TypeMethodDescriptionprivate Reader
_createReader
(com.fasterxml.jackson.core.JsonEncoding enc) 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
reportWeirdUCS4
(String type) private static final int
skipSpace
(com.fasterxml.jackson.core.format.InputAccessor acc, byte b)
-
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
-
_inputBuffer
protected final byte[] _inputBuffer -
_inputPtr
private int _inputPtr -
_inputEnd
private int _inputEnd -
_inputProcessed
protected int _inputProcessedCurrent 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
- Throws:
IOException
-
_createReader
- 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
- Returns:
- True if a BOM was succesfully found, and encoding thereby recognized.
- Throws:
IOException
-
checkUTF32
- Throws:
IOException
-
checkUTF16
private boolean checkUTF16(int i16) -
reportWeirdUCS4
- Throws:
IOException
-
ensureLoaded
- Throws:
IOException
-