Package com.ctc.wstx.io
Class InputBootstrapper
java.lang.Object
com.ctc.wstx.io.InputBootstrapper
- Direct Known Subclasses:
ReaderBootstrapper
,StreamBootstrapper
Abstract 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
FieldsModifier and TypeFieldDescriptionstatic final byte
static final byte
static final byte
static final byte
static final byte
static final char
static final char
static final char
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected static final String
protected int
XML declaration from the input (1.0, 1.1 or 'unknown')protected String
Value of encoding pseudo-attribute from xml declaration, if one was found; null otherwise.protected int
Current number of characters that were processed in previous blocks, before contents of current input buffer.protected int
Current row location of current point in input buffer, starting from 1protected int
Current index of the first character of the current row in input buffer.protected final char[]
Need a short buffer to read in values of pseudo-attributes (version, encoding, standalone).protected final String
protected String
protected final SystemId
protected boolean
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. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract Reader
bootstrapInput
(ReaderConfig cfg, boolean mainDoc, int xmlVersion) protected abstract int
checkKeyword
(String exp) boolean
int
abstract int
abstract String
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).int
abstract int
protected abstract Location
protected abstract int
getNext()
protected abstract int
getNextAfterWs
(boolean reqWs) private final int
getWsOrChar
(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 final int
protected void
protected abstract void
pushback()
protected abstract int
readQuotedValue
(char[] kw, int quoteChar) protected void
readXmlDecl
(boolean isMainDoc, int xmlVersion) private final String
private final String
private final int
protected void
private final void
reportPseudoAttrProblem
(String attrName, String got, String expVal1, String expVal2) protected void
reportUnexpectedChar
(int i, String msg) protected void
reportXmlProblem
(String msg)
-
Field Details
-
ERR_XMLDECL_KW_VERSION
- See Also:
-
ERR_XMLDECL_KW_ENCODING
- See Also:
-
ERR_XMLDECL_KW_STANDALONE
- See Also:
-
ERR_XMLDECL_END_MARKER
- See Also:
-
ERR_XMLDECL_EXP_SPACE
- See Also:
-
ERR_XMLDECL_EXP_EQ
- See Also:
-
ERR_XMLDECL_EXP_ATTRVAL
- See Also:
-
CHAR_NULL
public static final char CHAR_NULL- See Also:
-
CHAR_SPACE
public static final char CHAR_SPACE- See Also:
-
CHAR_NEL
public static final char CHAR_NEL- See Also:
-
CHAR_CR
public static final byte CHAR_CR- See Also:
-
CHAR_LF
public static final byte CHAR_LF- See Also:
-
BYTE_NULL
public static final byte BYTE_NULL- See Also:
-
BYTE_CR
public static final byte BYTE_CR- See Also:
-
BYTE_LF
public static final byte BYTE_LF- See Also:
-
mPublicId
-
mSystemId
-
mInputProcessed
protected int mInputProcessedCurrent number of characters that were processed in previous blocks, before contents of current input buffer. -
mInputRow
protected int mInputRowCurrent row location of current point in input buffer, starting from 1 -
mInputRowStart
protected int mInputRowStartCurrent 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 mDeclaredXmlVersionXML declaration from the input (1.0, 1.1 or 'unknown') -
mFoundEncoding
Value of encoding pseudo-attribute from xml declaration, if one was found; null otherwise. -
mStandalone
-
mXml11Handling
protected boolean mXml11HandlingFlag 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[] mKeywordBufferNeed 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 Details
-
InputBootstrapper
-
-
Method Details
-
initFrom
-
bootstrapInput
public abstract Reader bootstrapInput(ReaderConfig cfg, boolean mainDoc, int xmlVersion) throws IOException, 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:
IOException
XMLStreamException
-
getPublicId
-
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
-
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
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
- 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:
IOException
WstxException
-
readXmlVersion
- Returns:
- Xml version declaration read
- Throws:
IOException
WstxException
-
readXmlEncoding
- Throws:
IOException
WstxException
-
readXmlStandalone
- Throws:
IOException
WstxException
-
handleEq
- Throws:
IOException
WstxException
-
getWsOrChar
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.- Throws:
IOException
WstxException
-
pushback
protected abstract void pushback() -
getNext
- Throws:
IOException
WstxException
-
getNextAfterWs
- Throws:
IOException
WstxException
-
checkKeyword
- Returns:
- First character that does not match expected, if any; CHAR_NULL if match succeeded
- Throws:
IOException
WstxException
-
readQuotedValue
- Throws:
IOException
WstxException
-
getLocation
-
reportNull
- Throws:
WstxException
-
reportXmlProblem
- Throws:
WstxException
-
reportUnexpectedChar
- Throws:
WstxException
-
reportPseudoAttrProblem
private final void reportPseudoAttrProblem(String attrName, String got, String expVal1, String expVal2) throws WstxException - Throws:
WstxException
-