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.Object
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
Fields Modifier and Type Field Description static byte
BYTE_CR
static byte
BYTE_LF
static byte
BYTE_NULL
static byte
CHAR_CR
static byte
CHAR_LF
static char
CHAR_NEL
static char
CHAR_NULL
static char
CHAR_SPACE
protected static java.lang.String
ERR_XMLDECL_END_MARKER
protected static java.lang.String
ERR_XMLDECL_EXP_ATTRVAL
protected static java.lang.String
ERR_XMLDECL_EXP_EQ
protected static java.lang.String
ERR_XMLDECL_EXP_SPACE
protected static java.lang.String
ERR_XMLDECL_KW_ENCODING
protected static java.lang.String
ERR_XMLDECL_KW_STANDALONE
protected static java.lang.String
ERR_XMLDECL_KW_VERSION
(package private) int
mDeclaredXmlVersion
XML declaration from the input (1.0, 1.1 or 'unknown')(package private) java.lang.String
mFoundEncoding
Value of encoding pseudo-attribute from xml declaration, if one was found; null otherwise.protected int
mInputProcessed
Current number of characters that were processed in previous blocks, before contents of current input buffer.protected int
mInputRow
Current row location of current point in input buffer, starting from 1protected int
mInputRowStart
Current index of the first character of the current row in input buffer.(package private) char[]
mKeyword
Need a short buffer to read in values of pseudo-attributes (version, encoding, standalone).protected java.lang.String
mPublicId
(package private) java.lang.String
mStandalone
protected SystemId
mSystemId
(package private) 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.
-
Constructor Summary
Constructors Modifier Constructor Description protected
InputBootstrapper(java.lang.String pubId, SystemId sysId)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract java.io.Reader
bootstrapInput(ReaderConfig cfg, boolean mainDoc, int xmlVersion)
protected abstract int
checkKeyword(java.lang.String exp)
boolean
declaredXml11()
java.lang.String
getDeclaredEncoding()
int
getDeclaredVersion()
abstract int
getInputColumn()
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).int
getInputRow()
abstract int
getInputTotal()
protected abstract javax.xml.stream.Location
getLocation()
protected abstract int
getNext()
protected abstract int
getNextAfterWs(boolean reqWs)
java.lang.String
getPublicId()
java.lang.String
getStandalone()
SystemId
getSystemId()
private 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 int
handleEq(java.lang.String attr)
protected void
initFrom(InputBootstrapper src)
protected abstract void
pushback()
protected abstract int
readQuotedValue(char[] kw, int quoteChar)
protected void
readXmlDecl(boolean isMainDoc, int xmlVersion)
private java.lang.String
readXmlEncoding()
private java.lang.String
readXmlStandalone()
private int
readXmlVersion()
protected void
reportNull()
private void
reportPseudoAttrProblem(java.lang.String attrName, java.lang.String got, java.lang.String expVal1, java.lang.String expVal2)
protected void
reportUnexpectedChar(int i, java.lang.String msg)
protected void
reportXmlProblem(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
int mDeclaredXmlVersion
XML declaration from the input (1.0, 1.1 or 'unknown')
-
mFoundEncoding
java.lang.String mFoundEncoding
Value of encoding pseudo-attribute from xml declaration, if one was found; null otherwise.
-
mStandalone
java.lang.String mStandalone
-
mXml11Handling
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.
-
mKeyword
final char[] mKeyword
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.IOException
javax.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.IOException
WstxException
-
readXmlVersion
private final int readXmlVersion() throws java.io.IOException, WstxException
- Returns:
- Xml version declaration read
- Throws:
java.io.IOException
WstxException
-
readXmlEncoding
private final java.lang.String readXmlEncoding() throws java.io.IOException, WstxException
- Throws:
java.io.IOException
WstxException
-
readXmlStandalone
private final java.lang.String readXmlStandalone() throws java.io.IOException, WstxException
- Throws:
java.io.IOException
WstxException
-
handleEq
private final int handleEq(java.lang.String attr) throws java.io.IOException, WstxException
- Throws:
java.io.IOException
WstxException
-
getWsOrChar
private final int getWsOrChar(int ok) throws java.io.IOException, WstxException
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:
java.io.IOException
WstxException
-
pushback
protected abstract void pushback()
-
getNext
protected abstract int getNext() throws java.io.IOException, WstxException
- Throws:
java.io.IOException
WstxException
-
getNextAfterWs
protected abstract int getNextAfterWs(boolean reqWs) throws java.io.IOException, WstxException
- Throws:
java.io.IOException
WstxException
-
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.IOException
WstxException
-
readQuotedValue
protected abstract int readQuotedValue(char[] kw, int quoteChar) throws java.io.IOException, WstxException
- Throws:
java.io.IOException
WstxException
-
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
-
-