com.ctc.wstx.sr
Class TypedStreamReader

java.lang.Object
  extended by com.ctc.wstx.io.WstxInputData
      extended by com.ctc.wstx.sr.StreamScanner
          extended by com.ctc.wstx.sr.BasicStreamReader
              extended by com.ctc.wstx.sr.TypedStreamReader
All Implemented Interfaces:
InputConfigFlags, ParsingErrorMsgs, InputProblemReporter, StreamReaderImpl, XMLStreamConstants, XMLStreamReader, org.codehaus.stax2.DTDInfo, org.codehaus.stax2.LocationInfo, org.codehaus.stax2.typed.TypedXMLStreamReader, org.codehaus.stax2.validation.Validatable, org.codehaus.stax2.XMLStreamReader2
Direct Known Subclasses:
ValidatingStreamReader

public class TypedStreamReader
extends BasicStreamReader

Complete implementation of XMLStreamReader2, including Typed Access API (Stax2 v3.0) implementation. Only functionality missing is DTD validation, which is provided by a specialized sub-class.


Field Summary
protected  org.codehaus.stax2.ri.typed.CharArrayBase64Decoder _base64Decoder
          Lazily-constructed decoder object for decoding base64 encoded element binary content.
protected  org.codehaus.stax2.ri.typed.ValueDecoderFactory _decoderFactory
          Factory used for constructing decoders we need for typed access
protected static int MASK_TYPED_ACCESS_ARRAY
          Mask of event types that are legal (starting) states to call Typed Access API from.
protected static int MASK_TYPED_ACCESS_BINARY
           
 
Fields inherited from class com.ctc.wstx.sr.BasicStreamReader
MASK_GET_ELEMENT_TEXT, MASK_GET_TEXT, MASK_GET_TEXT_WITH_WRITER, MASK_GET_TEXT_XXX, mAttrCollector, mCfgCoalesceText, mCfgLazyParsing, mCfgReportTextAsChars, mCheckIndentation, mConfigFlags, mCurrToken, mDocStandalone, mDtdPublicId, mDtdSystemId, mElementStack, mGeneralEntities, mOwner, mParseState, mPendingException, mReturnNullForDefaultNamespace, mSecondaryToken, mShortestTextSegment, mStDoctypeFound, mStEmptyElem, mStTextThreshold, mTextBuffer, mTokenState, mValidateText, mVldContent, mWsStatus, sPrefixXml, sPrefixXmlns
 
Fields inherited from class com.ctc.wstx.sr.StreamScanner
CHAR_CR_LF_OR_NULL, CHAR_FIRST_PURE_TEXT, CHAR_LOWEST_LEGAL_LOCALNAME_CHAR, INT_CR_LF_OR_NULL, mCachedEntities, mCfgNsEnabled, mCfgReplaceEntities, mCfgTreatCharRefsAsEntities, mConfig, mCurrDepth, mCurrEntity, mCurrName, mDocXmlVersion, mInput, mInputTopDepth, mNameBuffer, mNormalizeLFs, mRootInput, mTokenInputCol, mTokenInputRow, mTokenInputTotal
 
Fields inherited from class com.ctc.wstx.io.WstxInputData
CHAR_NULL, CHAR_SPACE, INT_NULL, INT_SPACE, MAX_UNICODE_CHAR, mCurrInputProcessed, mCurrInputRow, mCurrInputRowStart, mInputBuffer, mInputEnd, mInputPtr, mXml11
 
Fields inherited from interface org.codehaus.stax2.XMLStreamReader2
FEATURE_DTD_OVERRIDE
 
Fields inherited from interface javax.xml.stream.XMLStreamConstants
ATTRIBUTE, CDATA, CHARACTERS, COMMENT, DTD, END_DOCUMENT, END_ELEMENT, ENTITY_DECLARATION, ENTITY_REFERENCE, NAMESPACE, NOTATION_DECLARATION, PROCESSING_INSTRUCTION, SPACE, START_DOCUMENT, START_ELEMENT
 
Fields inherited from interface com.ctc.wstx.cfg.InputConfigFlags
CFG_AUTO_CLOSE_INPUT, CFG_CACHE_DTDS, CFG_CACHE_DTDS_BY_PUBLIC_ID, CFG_COALESCE_TEXT, CFG_INTERN_NAMES, CFG_INTERN_NS_URIS, CFG_LAZY_PARSING, CFG_NAMESPACE_AWARE, CFG_NORMALIZE_LFS, CFG_PRESERVE_LOCATION, CFG_REPLACE_ENTITY_REFS, CFG_REPORT_CDATA, CFG_REPORT_PROLOG_WS, CFG_SUPPORT_DTD, CFG_SUPPORT_DTDPP, CFG_SUPPORT_EXTERNAL_ENTITIES, CFG_TREAT_CHAR_REFS_AS_ENTS, CFG_VALIDATE_AGAINST_DTD, CFG_XMLID_TYPING, CFG_XMLID_UNIQ_CHECKS
 
Fields inherited from interface com.ctc.wstx.cfg.ParsingErrorMsgs
SUFFIX_EOF_EXP_NAME, SUFFIX_IN_ATTR_VALUE, SUFFIX_IN_CDATA, SUFFIX_IN_CLOSE_ELEMENT, SUFFIX_IN_COMMENT, SUFFIX_IN_DEF_ATTR_VALUE, SUFFIX_IN_DOC, SUFFIX_IN_DTD, SUFFIX_IN_DTD_EXTERNAL, SUFFIX_IN_DTD_INTERNAL, SUFFIX_IN_ELEMENT, SUFFIX_IN_ENTITY_REF, SUFFIX_IN_EPILOG, SUFFIX_IN_NAME, SUFFIX_IN_PROC_INSTR, SUFFIX_IN_PROLOG, SUFFIX_IN_TEXT, SUFFIX_IN_XML_DECL
 
Constructor Summary
protected TypedStreamReader(InputBootstrapper bs, BranchingReaderSource input, ReaderCreator owner, ReaderConfig cfg, InputElementStack elemStack, boolean forER)
           
 
Method Summary
protected  org.codehaus.stax2.ri.typed.CharArrayBase64Decoder _base64Decoder()
           
protected  org.codehaus.stax2.typed.TypedXMLStreamException _constructTypeException(IllegalArgumentException iae, String lexicalValue)
          Method called to wrap or convert given conversion-fail exception into a full TypedXMLStreamException,
protected  org.codehaus.stax2.ri.typed.ValueDecoderFactory _decoderFactory()
           
protected  QName _verifyQName(QName n)
          Method called to verify validity of the parsed QName element or attribute value.
static TypedStreamReader createStreamReader(BranchingReaderSource input, ReaderCreator owner, ReaderConfig cfg, InputBootstrapper bs, boolean forER)
          Factory method for constructing readers.
 void getAttributeAs(int index, org.codehaus.stax2.typed.TypedValueDecoder tvd)
           
 int getAttributeAsArray(int index, org.codehaus.stax2.typed.TypedArrayDecoder tad)
          Method that allows reading contents of an attribute as an array of whitespace-separate tokens, decoded using specified decoder.
 byte[] getAttributeAsBinary(int index)
           
 byte[] getAttributeAsBinary(int index, org.codehaus.stax2.typed.Base64Variant v)
           
 boolean getAttributeAsBoolean(int index)
           
 BigDecimal getAttributeAsDecimal(int index)
           
 double getAttributeAsDouble(int index)
           
 double[] getAttributeAsDoubleArray(int index)
           
 float getAttributeAsFloat(int index)
           
 float[] getAttributeAsFloatArray(int index)
           
 int getAttributeAsInt(int index)
           
 int[] getAttributeAsIntArray(int index)
           
 BigInteger getAttributeAsInteger(int index)
           
 long getAttributeAsLong(int index)
           
 long[] getAttributeAsLongArray(int index)
           
 QName getAttributeAsQName(int index)
           
 int getAttributeIndex(String namespaceURI, String localName)
           
 void getElementAs(org.codehaus.stax2.typed.TypedValueDecoder tvd)
           
 byte[] getElementAsBinary()
           
 byte[] getElementAsBinary(org.codehaus.stax2.typed.Base64Variant v)
           
 boolean getElementAsBoolean()
           
 BigDecimal getElementAsDecimal()
           
 double getElementAsDouble()
           
 float getElementAsFloat()
           
 int getElementAsInt()
           
 BigInteger getElementAsInteger()
           
 long getElementAsLong()
           
 QName getElementAsQName()
           
 int readElementAsArray(org.codehaus.stax2.typed.TypedArrayDecoder dec)
          Method called to parse array of primitives.
 int readElementAsBinary(byte[] resultBuffer, int offset, int maxLength)
           
 int readElementAsBinary(byte[] resultBuffer, int offset, int maxLength, org.codehaus.stax2.typed.Base64Variant v)
           
 int readElementAsDoubleArray(double[] value, int from, int length)
           
 int readElementAsFloatArray(float[] value, int from, int length)
           
 int readElementAsIntArray(int[] value, int from, int length)
           
 int readElementAsLongArray(long[] value, int from, int length)
           
 
Methods inherited from class com.ctc.wstx.sr.BasicStreamReader
_constructTypeException, _constructUnexpectedInTyped, checkCData, checkKeyword, close, closeCompletely, createElementStack, ensureFinishToken, findEntity, finishDTD, finishToken, fireSaxCharacterEvents, fireSaxCommentEvent, fireSaxEndElement, fireSaxPIEvent, fireSaxSpaceEvents, fireSaxStartElement, getAttributeCollector, getAttributeCount, getAttributeInfo, getAttributeLocalName, getAttributeName, getAttributeNamespace, getAttributePrefix, getAttributeType, getAttributeValue, getAttributeValue, getCharacterEncodingScheme, getCurrentEntityDecl, getDepth, getDTDInfo, getDTDInternalSubset, getDTDPublicId, getDTDRootName, getDTDSystemId, getElementText, getEncoding, getEndingByteOffset, getEndingCharOffset, getEndLocation, getEventType, getFeature, getInputElementStack, getLocalName, getLocation, getLocationInfo, getName, getNamespaceContext, getNamespaceCount, getNamespacePrefix, getNamespaceURI, getNamespaceURI, getNamespaceURI, getNonTransientNamespaceContext, getPIData, getPITarget, getPrefix, getPrefixedName, getProcessedDTD, getProcessedDTDSchema, getProperty, getStartingByteOffset, getStartingCharOffset, getText, getText, getTextCharacters, getTextCharacters, getTextLength, getTextStart, getVersion, handleEOF, handleGreedyEntityProblem, handleIncompleteEntityProblem, handleMultiDocStart, handleMultiDocXmlDecl, handleRootElem, handleUndeclaredEntity, hasConfigFlags, hasName, hasNext, hasText, initValidation, isAttributeSpecified, isCharacters, isEmptyElement, isEndElement, isNamespaceAware, isPropertySupported, isStandalone, isStartElement, isWhiteSpace, next, nextTag, parseQuoted, readCDataSecondary, readCoalescedText, readEndElem, readTextSecondary, reportInvalidContent, require, safeEnsureFinishToken, safeFinishToken, setFeature, setProperty, setValidationProblemHandler, skipElement, skipEquals, skipWS, standaloneSet, stopValidatingAgainst, stopValidatingAgainst, throwNotTextualOrElem, throwUnexpectedEOF, validateAgainst, withStartElement
 
Methods inherited from class com.ctc.wstx.sr.StreamScanner
_reportProblem, _reportProblem, closeAllInput, constructFromIOE, constructNullCharException, constructWfcException, ensureInput, expandBy50Pct, expandEntity, fullyResolveEntity, getCurrentInput, getCurrentLocation, getIntEntity, getLastCharLocation, getNameBuffer, getNext, getNextAfterWS, getNextChar, getNextCharAfterWS, getNextCharFromCurrent, getNextInCurrAfterWS, getNextInCurrAfterWS, getSource, getStartLocation, getSystemId, initInputSource, inputInBuffer, loadMore, loadMore, loadMoreFromCurrent, loadMoreFromCurrent, markLF, markLF, parseEntityName, parseFNameForError, parseFullName, parseFullName, parseFullName2, parseLocalName, parseLocalName2, parsePublicId, parseSystemId, parseUntil, peekNext, pushback, reportProblem, reportProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, resolveCharOnlyEntity, resolveNonCharEntity, resolveSimpleEntity, skipCRLF, skipFullName, throwFromIOE, throwFromStrE, throwInvalidSpace, throwInvalidSpace, throwLazyError, throwNullChar, throwNullParent, throwParseError, throwParseError, throwUnexpectedChar, throwUnexpectedEOB, throwUnexpectedEOF, throwWfcException, tokenTypeDesc
 
Methods inherited from class com.ctc.wstx.io.WstxInputData
copyBufferStateFrom, findIllegalNameChar, findIllegalNmtokenChar, getCharDesc, isNameChar, isNameChar, isNameStartChar, isNameStartChar, isSpaceChar
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.codehaus.stax2.LocationInfo
getCurrentLocation, getStartLocation
 

Field Detail

MASK_TYPED_ACCESS_ARRAY

protected static final int MASK_TYPED_ACCESS_ARRAY
Mask of event types that are legal (starting) states to call Typed Access API from.

See Also:
Constant Field Values

MASK_TYPED_ACCESS_BINARY

protected static final int MASK_TYPED_ACCESS_BINARY
See Also:
Constant Field Values

_decoderFactory

protected org.codehaus.stax2.ri.typed.ValueDecoderFactory _decoderFactory
Factory used for constructing decoders we need for typed access


_base64Decoder

protected org.codehaus.stax2.ri.typed.CharArrayBase64Decoder _base64Decoder
Lazily-constructed decoder object for decoding base64 encoded element binary content.

Constructor Detail

TypedStreamReader

protected TypedStreamReader(InputBootstrapper bs,
                            BranchingReaderSource input,
                            ReaderCreator owner,
                            ReaderConfig cfg,
                            InputElementStack elemStack,
                            boolean forER)
                     throws XMLStreamException
Throws:
XMLStreamException
Method Detail

createStreamReader

public static TypedStreamReader createStreamReader(BranchingReaderSource input,
                                                   ReaderCreator owner,
                                                   ReaderConfig cfg,
                                                   InputBootstrapper bs,
                                                   boolean forER)
                                            throws XMLStreamException
Factory method for constructing readers.

Parameters:
owner - "Owner" of this reader, factory that created the reader; needed for returning updated symbol table information after parsing.
input - Input source used to read the XML document.
cfg - Object that contains reader configuration info.
Throws:
XMLStreamException

getElementAsBoolean

public boolean getElementAsBoolean()
                            throws XMLStreamException
Throws:
XMLStreamException

getElementAsInt

public int getElementAsInt()
                    throws XMLStreamException
Throws:
XMLStreamException

getElementAsLong

public long getElementAsLong()
                      throws XMLStreamException
Throws:
XMLStreamException

getElementAsFloat

public float getElementAsFloat()
                        throws XMLStreamException
Throws:
XMLStreamException

getElementAsDouble

public double getElementAsDouble()
                          throws XMLStreamException
Throws:
XMLStreamException

getElementAsInteger

public BigInteger getElementAsInteger()
                               throws XMLStreamException
Throws:
XMLStreamException

getElementAsDecimal

public BigDecimal getElementAsDecimal()
                               throws XMLStreamException
Throws:
XMLStreamException

getElementAsQName

public QName getElementAsQName()
                        throws XMLStreamException
Throws:
XMLStreamException

getElementAsBinary

public final byte[] getElementAsBinary()
                                throws XMLStreamException
Throws:
XMLStreamException

getElementAsBinary

public byte[] getElementAsBinary(org.codehaus.stax2.typed.Base64Variant v)
                          throws XMLStreamException
Throws:
XMLStreamException

getElementAs

public void getElementAs(org.codehaus.stax2.typed.TypedValueDecoder tvd)
                  throws XMLStreamException
Throws:
XMLStreamException

readElementAsIntArray

public int readElementAsIntArray(int[] value,
                                 int from,
                                 int length)
                          throws XMLStreamException
Throws:
XMLStreamException

readElementAsLongArray

public int readElementAsLongArray(long[] value,
                                  int from,
                                  int length)
                           throws XMLStreamException
Throws:
XMLStreamException

readElementAsFloatArray

public int readElementAsFloatArray(float[] value,
                                   int from,
                                   int length)
                            throws XMLStreamException
Throws:
XMLStreamException

readElementAsDoubleArray

public int readElementAsDoubleArray(double[] value,
                                    int from,
                                    int length)
                             throws XMLStreamException
Throws:
XMLStreamException

readElementAsArray

public final int readElementAsArray(org.codehaus.stax2.typed.TypedArrayDecoder dec)
                             throws XMLStreamException
Method called to parse array of primitives.

!!! 05-Sep-2008, tatu: Current implementation is not optimal either performance-wise, or from getting accurate Location for decoding problems. But it works otherwise, and we need to get Woodstox 4.0 out by the end of the year... so it'll do, for now.

Returns:
Number of elements decoded (if any were decoded), or -1 to indicate that no more values can be decoded.
Throws:
XMLStreamException

readElementAsBinary

public final int readElementAsBinary(byte[] resultBuffer,
                                     int offset,
                                     int maxLength)
                              throws XMLStreamException
Throws:
XMLStreamException

readElementAsBinary

public int readElementAsBinary(byte[] resultBuffer,
                               int offset,
                               int maxLength,
                               org.codehaus.stax2.typed.Base64Variant v)
                        throws XMLStreamException
Throws:
XMLStreamException

getAttributeIndex

public int getAttributeIndex(String namespaceURI,
                             String localName)

getAttributeAsBoolean

public boolean getAttributeAsBoolean(int index)
                              throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsInt

public int getAttributeAsInt(int index)
                      throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsLong

public long getAttributeAsLong(int index)
                        throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsFloat

public float getAttributeAsFloat(int index)
                          throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsDouble

public double getAttributeAsDouble(int index)
                            throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsInteger

public BigInteger getAttributeAsInteger(int index)
                                 throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsDecimal

public BigDecimal getAttributeAsDecimal(int index)
                                 throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsQName

public QName getAttributeAsQName(int index)
                          throws XMLStreamException
Throws:
XMLStreamException

getAttributeAs

public void getAttributeAs(int index,
                           org.codehaus.stax2.typed.TypedValueDecoder tvd)
                    throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsIntArray

public int[] getAttributeAsIntArray(int index)
                             throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsLongArray

public long[] getAttributeAsLongArray(int index)
                               throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsFloatArray

public float[] getAttributeAsFloatArray(int index)
                                 throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsDoubleArray

public double[] getAttributeAsDoubleArray(int index)
                                   throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsArray

public int getAttributeAsArray(int index,
                               org.codehaus.stax2.typed.TypedArrayDecoder tad)
                        throws XMLStreamException
Method that allows reading contents of an attribute as an array of whitespace-separate tokens, decoded using specified decoder.

Returns:
Number of tokens decoded, 0 if none found
Throws:
XMLStreamException

getAttributeAsBinary

public byte[] getAttributeAsBinary(int index)
                            throws XMLStreamException
Throws:
XMLStreamException

getAttributeAsBinary

public byte[] getAttributeAsBinary(int index,
                                   org.codehaus.stax2.typed.Base64Variant v)
                            throws XMLStreamException
Throws:
XMLStreamException

_verifyQName

protected QName _verifyQName(QName n)
                      throws org.codehaus.stax2.typed.TypedXMLStreamException
Method called to verify validity of the parsed QName element or attribute value. At this point binding of a prefixed name (if qname has a prefix) has been verified, and thereby prefix also must be valid (since there must have been a preceding declaration). But local name might still not be a legal well-formed xml name, so let's verify that.

Throws:
org.codehaus.stax2.typed.TypedXMLStreamException

_decoderFactory

protected org.codehaus.stax2.ri.typed.ValueDecoderFactory _decoderFactory()

_base64Decoder

protected org.codehaus.stax2.ri.typed.CharArrayBase64Decoder _base64Decoder()

_constructTypeException

protected org.codehaus.stax2.typed.TypedXMLStreamException _constructTypeException(IllegalArgumentException iae,
                                                                                   String lexicalValue)
Method called to wrap or convert given conversion-fail exception into a full TypedXMLStreamException,

Parameters:
iae - Problem as reported by converter
lexicalValue - Lexical value (element content, attribute value) that could not be converted succesfully.


Copyright © 2011 Codehaus. All Rights Reserved.