Package com.fasterxml.aalto.in
Class ByteSourceBootstrapper
- java.lang.Object
-
- com.fasterxml.aalto.in.InputBootstrapper
-
- com.fasterxml.aalto.in.ByteSourceBootstrapper
-
- All Implemented Interfaces:
XmlConsts
public final class ByteSourceBootstrapper extends InputBootstrapper
Class that takes care of bootstrapping main document input from a byte-oriented input source: usually either anInputStream
, or a block source like byte array.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.io.InputStream
_in
Underlying InputStream to use for reading content.protected byte[]
_inputBuffer
private int
_inputLen
private int
_inputPtr
private static byte
BYTE_CR
private static byte
BYTE_LF
private static byte
BYTE_NULL
protected boolean
mBigEndian
protected boolean
mByteSizeFound
protected int
mBytesPerChar
protected boolean
mHadBOM
-
Fields inherited from class com.fasterxml.aalto.in.InputBootstrapper
_config, _inputProcessed, _inputRow, _inputRowStart, ERR_XMLDECL_END_MARKER, ERR_XMLDECL_EXP_ATTRVAL, ERR_XMLDECL_EXP_EQ, ERR_XMLDECL_EXP_SPACE, ERR_XMLDECL_KW_ENCODING, ERR_XMLDECL_KW_STANDALONE, ERR_XMLDECL_KW_VERSION, mDeclaredXmlVersion, mFoundEncoding, mKeyword, mStandalone
-
Fields inherited from interface com.fasterxml.aalto.util.XmlConsts
CHAR_CR, CHAR_LF, CHAR_NULL, CHAR_SPACE, MAX_UNICODE_CHAR, STAX_DEFAULT_OUTPUT_ENCODING, STAX_DEFAULT_OUTPUT_VERSION, XML_DECL_KW_ENCODING, XML_DECL_KW_STANDALONE, XML_DECL_KW_VERSION, XML_SA_NO, XML_SA_YES, XML_V_10, XML_V_10_STR, XML_V_11, XML_V_11_STR, XML_V_UNKNOWN
-
-
Constructor Summary
Constructors Modifier Constructor Description private
ByteSourceBootstrapper(ReaderConfig cfg, byte[] inputBuffer, int inputStart, int inputLen)
private
ByteSourceBootstrapper(ReaderConfig cfg, java.io.InputStream in)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description XmlScanner
bootstrap()
Main bootstrapping method, which will try to open the underlying input source, check its encoding, read xml declaration if there is one, and finally create a scanner for actual parsing.protected int
checkKeyword(java.lang.String exp)
protected int
checkMbKeyword(java.lang.String expected)
protected int
checkSbKeyword(java.lang.String expected)
static ByteSourceBootstrapper
construct(ReaderConfig cfg, byte[] inputBuffer, int inputStart, int inputLen)
static ByteSourceBootstrapper
construct(ReaderConfig cfg, java.io.InputStream in)
private void
determineStreamEncoding()
Method called to figure out what the physical encoding of the file appears to be (in case it can be determined from BOM, or xml declaration, either of which may be present)XmlScanner
doBootstrap()
protected boolean
ensureLoaded(int minimum)
protected javax.xml.stream.Location
getLocation()
protected int
getNext()
protected int
getNextAfterWs(boolean reqWs)
protected boolean
hasXmlDeclaration()
protected void
loadMore()
protected byte
nextByte()
protected int
nextMultiByte()
protected void
pushback()
protected int
readQuotedValue(char[] kw, int quoteChar)
private void
reportEBCDIC()
private void
reportWeirdUCS4(java.lang.String type)
protected void
skipMbLF(int lf)
protected int
skipMbWs()
protected void
skipSbLF(byte lfByte)
protected int
skipSbWs()
private void
verifyEncoding(java.lang.String id, int bpc)
private void
verifyEncoding(java.lang.String id, int bpc, boolean bigEndian)
protected java.lang.String
verifyXmlEncoding(java.lang.String enc)
-
Methods inherited from class com.fasterxml.aalto.in.InputBootstrapper
readXmlDeclaration, reportEof, reportNull, reportPseudoAttrProblem, reportUnexpectedChar, reportXmlProblem
-
-
-
-
Field Detail
-
BYTE_NULL
private static final byte BYTE_NULL
- See Also:
- Constant Field Values
-
BYTE_CR
private static final byte BYTE_CR
- See Also:
- Constant Field Values
-
BYTE_LF
private static final byte BYTE_LF
- See Also:
- Constant Field Values
-
_in
protected final java.io.InputStream _in
Underlying InputStream to use for reading content.
-
_inputBuffer
protected final byte[] _inputBuffer
-
_inputPtr
private int _inputPtr
-
_inputLen
private int _inputLen
-
mBigEndian
protected boolean mBigEndian
-
mBytesPerChar
protected int mBytesPerChar
-
mHadBOM
protected boolean mHadBOM
-
mByteSizeFound
protected boolean mByteSizeFound
-
-
Constructor Detail
-
ByteSourceBootstrapper
private ByteSourceBootstrapper(ReaderConfig cfg, java.io.InputStream in)
-
ByteSourceBootstrapper
private ByteSourceBootstrapper(ReaderConfig cfg, byte[] inputBuffer, int inputStart, int inputLen)
-
-
Method Detail
-
construct
public static ByteSourceBootstrapper construct(ReaderConfig cfg, java.io.InputStream in) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
construct
public static ByteSourceBootstrapper construct(ReaderConfig cfg, byte[] inputBuffer, int inputStart, int inputLen) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
bootstrap
public final XmlScanner bootstrap() throws javax.xml.stream.XMLStreamException
Description copied from class:InputBootstrapper
Main bootstrapping method, which will try to open the underlying input source, check its encoding, read xml declaration if there is one, and finally create a scanner for actual parsing.- Specified by:
bootstrap
in classInputBootstrapper
- Throws:
javax.xml.stream.XMLStreamException
-
doBootstrap
public XmlScanner doBootstrap() throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
determineStreamEncoding
private void determineStreamEncoding() throws java.io.IOException
Method called to figure out what the physical encoding of the file appears to be (in case it can be determined from BOM, or xml declaration, either of which may be present)- Throws:
java.io.IOException
-
hasXmlDeclaration
protected boolean hasXmlDeclaration() throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
verifyXmlEncoding
protected java.lang.String verifyXmlEncoding(java.lang.String enc) throws javax.xml.stream.XMLStreamException
- Returns:
- Normalized encoding name
- Throws:
javax.xml.stream.XMLStreamException
-
ensureLoaded
protected boolean ensureLoaded(int minimum) throws java.io.IOException
- Throws:
java.io.IOException
-
loadMore
protected void loadMore() throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
pushback
protected void pushback()
- Specified by:
pushback
in classInputBootstrapper
-
getNext
protected int getNext() throws java.io.IOException, javax.xml.stream.XMLStreamException
- Specified by:
getNext
in classInputBootstrapper
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
getNextAfterWs
protected int getNextAfterWs(boolean reqWs) throws java.io.IOException, javax.xml.stream.XMLStreamException
- Specified by:
getNextAfterWs
in classInputBootstrapper
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
checkKeyword
protected int checkKeyword(java.lang.String exp) throws java.io.IOException, javax.xml.stream.XMLStreamException
- Specified by:
checkKeyword
in classInputBootstrapper
- Returns:
- First character that does not match expected, if any; CHAR_NULL if match succeeded
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
readQuotedValue
protected int readQuotedValue(char[] kw, int quoteChar) throws java.io.IOException, javax.xml.stream.XMLStreamException
- Specified by:
readQuotedValue
in classInputBootstrapper
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
getLocation
protected javax.xml.stream.Location getLocation()
- Specified by:
getLocation
in classInputBootstrapper
-
nextByte
protected byte nextByte() throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
skipSbWs
protected int skipSbWs() throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
skipSbLF
protected void skipSbLF(byte lfByte) throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
checkSbKeyword
protected int checkSbKeyword(java.lang.String expected) throws java.io.IOException, javax.xml.stream.XMLStreamException
- Returns:
- First character that does not match expected, if any; CHAR_NULL if match succeeded
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
nextMultiByte
protected int nextMultiByte() throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
skipMbWs
protected int skipMbWs() throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
skipMbLF
protected void skipMbLF(int lf) throws java.io.IOException, javax.xml.stream.XMLStreamException
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
checkMbKeyword
protected int checkMbKeyword(java.lang.String expected) throws java.io.IOException, javax.xml.stream.XMLStreamException
- Returns:
- First character that does not match expected, if any; CHAR_NULL if match succeeded
- Throws:
java.io.IOException
javax.xml.stream.XMLStreamException
-
verifyEncoding
private void verifyEncoding(java.lang.String id, int bpc) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
verifyEncoding
private void verifyEncoding(java.lang.String id, int bpc, boolean bigEndian) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
reportWeirdUCS4
private void reportWeirdUCS4(java.lang.String type) throws java.io.IOException
- Throws:
java.io.IOException
-
reportEBCDIC
private void reportEBCDIC() throws java.io.IOException
- Throws:
java.io.IOException
-
-