Package com.ctc.wstx.io
Class InputBootstrapper
- java.lang.Object
-
- com.ctc.wstx.io.InputBootstrapper
-
- Direct Known Subclasses:
ReaderBootstrapper,StreamBootstrapper
public abstract class InputBootstrapper extends java.lang.ObjectAbstract base class that defines common API used with both stream and reader-based input sources. Class is responsible for opening the physical input source, figure out encoding (if necessary; only for streams), and then handle (optional) XML declaration.
-
-
Field Summary
Fields Modifier and Type Field Description static byteBYTE_CRstatic byteBYTE_LFstatic byteBYTE_NULLstatic byteCHAR_CRstatic byteCHAR_LFstatic charCHAR_NELstatic charCHAR_NULLstatic charCHAR_SPACEprotected static java.lang.StringERR_XMLDECL_END_MARKERprotected static java.lang.StringERR_XMLDECL_EXP_ATTRVALprotected static java.lang.StringERR_XMLDECL_EXP_EQprotected static java.lang.StringERR_XMLDECL_EXP_SPACEprotected static java.lang.StringERR_XMLDECL_KW_ENCODINGprotected static java.lang.StringERR_XMLDECL_KW_STANDALONEprotected static java.lang.StringERR_XMLDECL_KW_VERSIONprotected intmDeclaredXmlVersionXML declaration from the input (1.0, 1.1 or 'unknown')protected java.lang.StringmFoundEncodingValue of encoding pseudo-attribute from xml declaration, if one was found; null otherwise.protected intmInputProcessedCurrent number of characters that were processed in previous blocks, before contents of current input buffer.protected intmInputRowCurrent row location of current point in input buffer, starting from 1protected intmInputRowStartCurrent index of the first character of the current row in input buffer.protected char[]mKeywordBufferNeed a short buffer to read in values of pseudo-attributes (version, encoding, standalone).protected java.lang.StringmPublicIdprotected java.lang.StringmStandaloneprotected SystemIdmSystemIdprotected booleanmXml11HandlingFlag that indicates whether input read from this input source needs to be xml 1.1 compliant or not; if not, xml 1.0 is assumed.
-
Constructor Summary
Constructors Modifier Constructor Description protectedInputBootstrapper(java.lang.String pubId, SystemId sysId)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract java.io.ReaderbootstrapInput(ReaderConfig cfg, boolean mainDoc, int xmlVersion)protected abstract intcheckKeyword(java.lang.String exp)booleandeclaredXml11()java.lang.StringgetDeclaredEncoding()intgetDeclaredVersion()abstract intgetInputColumn()abstract java.lang.StringgetInputEncoding()Actual character encoding used by the underlying input source; may have been passed by the application, or auto-detected by byte stream boot strapper (can not be determined from a Reader source).intgetInputRow()abstract intgetInputTotal()protected abstract javax.xml.stream.LocationgetLocation()protected abstract intgetNext()protected abstract intgetNextAfterWs(boolean reqWs)java.lang.StringgetPublicId()java.lang.StringgetStandalone()SystemIdgetSystemId()private intgetWsOrChar(int ok)Method that should get next character, which has to be either specified character (usually end marker), OR, any character as long as there' at least one space character before it.private inthandleEq(java.lang.String attr)protected voidinitFrom(InputBootstrapper src)protected abstract voidpushback()protected abstract intreadQuotedValue(char[] kw, int quoteChar)protected voidreadXmlDecl(boolean isMainDoc, int xmlVersion)private java.lang.StringreadXmlEncoding()private java.lang.StringreadXmlStandalone()private intreadXmlVersion()protected voidreportNull()private voidreportPseudoAttrProblem(java.lang.String attrName, java.lang.String got, java.lang.String expVal1, java.lang.String expVal2)protected voidreportUnexpectedChar(int i, java.lang.String msg)protected voidreportXmlProblem(java.lang.String msg)
-
-
-
Field Detail
-
ERR_XMLDECL_KW_VERSION
protected static final java.lang.String ERR_XMLDECL_KW_VERSION
- See Also:
- Constant Field Values
-
ERR_XMLDECL_KW_ENCODING
protected static final java.lang.String ERR_XMLDECL_KW_ENCODING
- See Also:
- Constant Field Values
-
ERR_XMLDECL_KW_STANDALONE
protected static final java.lang.String ERR_XMLDECL_KW_STANDALONE
- See Also:
- Constant Field Values
-
ERR_XMLDECL_END_MARKER
protected static final java.lang.String ERR_XMLDECL_END_MARKER
- See Also:
- Constant Field Values
-
ERR_XMLDECL_EXP_SPACE
protected static final java.lang.String ERR_XMLDECL_EXP_SPACE
- See Also:
- Constant Field Values
-
ERR_XMLDECL_EXP_EQ
protected static final java.lang.String ERR_XMLDECL_EXP_EQ
- See Also:
- Constant Field Values
-
ERR_XMLDECL_EXP_ATTRVAL
protected static final java.lang.String ERR_XMLDECL_EXP_ATTRVAL
- See Also:
- Constant Field Values
-
CHAR_NULL
public static final char CHAR_NULL
- See Also:
- Constant Field Values
-
CHAR_SPACE
public static final char CHAR_SPACE
- See Also:
- Constant Field Values
-
CHAR_NEL
public static final char CHAR_NEL
- See Also:
- Constant Field Values
-
CHAR_CR
public static final byte CHAR_CR
- See Also:
- Constant Field Values
-
CHAR_LF
public static final byte CHAR_LF
- See Also:
- Constant Field Values
-
BYTE_NULL
public static final byte BYTE_NULL
- See Also:
- Constant Field Values
-
BYTE_CR
public static final byte BYTE_CR
- See Also:
- Constant Field Values
-
BYTE_LF
public static final byte BYTE_LF
- See Also:
- Constant Field Values
-
mPublicId
protected final java.lang.String mPublicId
-
mSystemId
protected final SystemId mSystemId
-
mInputProcessed
protected int mInputProcessed
Current number of characters that were processed in previous blocks, before contents of current input buffer.
-
mInputRow
protected int mInputRow
Current row location of current point in input buffer, starting from 1
-
mInputRowStart
protected int mInputRowStart
Current index of the first character of the current row in input buffer. Needed to calculate column position, if necessary; benefit of not having column itself is that this only has to be updated once per line.
-
mDeclaredXmlVersion
protected int mDeclaredXmlVersion
XML declaration from the input (1.0, 1.1 or 'unknown')
-
mFoundEncoding
protected java.lang.String mFoundEncoding
Value of encoding pseudo-attribute from xml declaration, if one was found; null otherwise.
-
mStandalone
protected java.lang.String mStandalone
-
mXml11Handling
protected boolean mXml11Handling
Flag that indicates whether input read from this input source needs to be xml 1.1 compliant or not; if not, xml 1.0 is assumed. State of this flag depends on parent context (if one existed), or if not, on xml declaration of this input source.
-
mKeywordBuffer
protected final char[] mKeywordBuffer
Need a short buffer to read in values of pseudo-attributes (version, encoding, standalone). Don't really need tons of space; just enough for the longest anticipated encoding id... and maybe few chars just in case (for additional white space that we ignore)
-
-
Constructor Detail
-
InputBootstrapper
protected InputBootstrapper(java.lang.String pubId, SystemId sysId)
-
-
Method Detail
-
initFrom
protected void initFrom(InputBootstrapper src)
-
bootstrapInput
public abstract java.io.Reader bootstrapInput(ReaderConfig cfg, boolean mainDoc, int xmlVersion) throws java.io.IOException, javax.xml.stream.XMLStreamException
- Parameters:
xmlVersion- Optional xml version identifier of the main parsed document (if not bootstrapping the main document). Currently only relevant for checking that XML 1.0 document does not include XML 1.1 external parsed entities. If null, no checks will be done; when bootstrapping parsing of the main document, null should be passed for this argument.- Throws:
java.io.IOExceptionjavax.xml.stream.XMLStreamException
-
getPublicId
public java.lang.String getPublicId()
-
getSystemId
public SystemId getSystemId()
-
getDeclaredVersion
public int getDeclaredVersion()
-
declaredXml11
public boolean declaredXml11()
- Returns:
- True, if the input bootstrapped declared that it conforms to xml 1.1 (independent of where it was included from)
-
getStandalone
public java.lang.String getStandalone()
-
getDeclaredEncoding
public java.lang.String getDeclaredEncoding()
- Returns:
- Encoding declaration found from the xml declaration, if any; null if none.
-
getInputTotal
public abstract int getInputTotal()
- Returns:
- Total number of characters read from bootstrapped input (stream, reader)
-
getInputRow
public int getInputRow()
-
getInputColumn
public abstract int getInputColumn()
-
getInputEncoding
public abstract java.lang.String getInputEncoding()
Actual character encoding used by the underlying input source; may have been passed by the application, or auto-detected by byte stream boot strapper (can not be determined from a Reader source).- Returns:
- Input encoding in use, if it could be determined or was passed by the calling application
-
readXmlDecl
protected void readXmlDecl(boolean isMainDoc, int xmlVersion) throws java.io.IOException, WstxException- Parameters:
xmlVersion- Optional xml version identifier of the main parsed document (if not bootstrapping the main document). Currently only relevant for checking that XML 1.0 document does not include XML 1.1 external parsed entities. If null, no checks will be done; when bootstrapping parsing of the main document, null should be passed for this argument.- Throws:
java.io.IOExceptionWstxException
-
readXmlVersion
private final int readXmlVersion() throws java.io.IOException, WstxException- Returns:
- Xml version declaration read
- Throws:
java.io.IOExceptionWstxException
-
readXmlEncoding
private final java.lang.String readXmlEncoding() throws java.io.IOException, WstxException- Throws:
java.io.IOExceptionWstxException
-
readXmlStandalone
private final java.lang.String readXmlStandalone() throws java.io.IOException, WstxException- Throws:
java.io.IOExceptionWstxException
-
handleEq
private final int handleEq(java.lang.String attr) throws java.io.IOException, WstxException- Throws:
java.io.IOExceptionWstxException
-
getWsOrChar
private final int getWsOrChar(int ok) throws java.io.IOException, WstxExceptionMethod that should get next character, which has to be either specified character (usually end marker), OR, any character as long as there' at least one space character before it.- Throws:
java.io.IOExceptionWstxException
-
pushback
protected abstract void pushback()
-
getNext
protected abstract int getNext() throws java.io.IOException, WstxException- Throws:
java.io.IOExceptionWstxException
-
getNextAfterWs
protected abstract int getNextAfterWs(boolean reqWs) throws java.io.IOException, WstxException- Throws:
java.io.IOExceptionWstxException
-
checkKeyword
protected abstract int checkKeyword(java.lang.String exp) throws java.io.IOException, WstxException- Returns:
- First character that does not match expected, if any; CHAR_NULL if match succeeded
- Throws:
java.io.IOExceptionWstxException
-
readQuotedValue
protected abstract int readQuotedValue(char[] kw, int quoteChar) throws java.io.IOException, WstxException- Throws:
java.io.IOExceptionWstxException
-
getLocation
protected abstract javax.xml.stream.Location getLocation()
-
reportNull
protected void reportNull() throws WstxException- Throws:
WstxException
-
reportXmlProblem
protected void reportXmlProblem(java.lang.String msg) throws WstxException- Throws:
WstxException
-
reportUnexpectedChar
protected void reportUnexpectedChar(int i, java.lang.String msg) throws WstxException- Throws:
WstxException
-
reportPseudoAttrProblem
private final void reportPseudoAttrProblem(java.lang.String attrName, java.lang.String got, java.lang.String expVal1, java.lang.String expVal2) throws WstxException- Throws:
WstxException
-
-