Class StreamReaderBufferProcessor

  • All Implemented Interfaces:
    javax.xml.stream.XMLStreamConstants, javax.xml.stream.XMLStreamReader, org.jvnet.staxex.XMLStreamReaderEx

    public class StreamReaderBufferProcessor
    extends AbstractProcessor
    implements org.jvnet.staxex.XMLStreamReaderEx
    A processor of a XMLStreamBuffer that reads the XML infoset as XMLStreamReader.

    Because of XMLStreamReader design, this processor always produce a full document infoset, even if the buffer just contains a fragment.

    When XMLStreamBuffer contains a multiple tree (AKA "forest"), XMLStreamReader will behave as if there are multiple root elements (so you'll see XMLStreamConstants.START_ELEMENT event where you'd normally expect XMLStreamConstants.END_DOCUMENT.)

    • Field Detail

      • _depth

        protected int _depth
        The element depth that we are in. Used to determine when we are done with a tree.
      • _namespaceAIIsPrefix

        protected java.lang.String[] _namespaceAIIsPrefix
        Namespace prefixes. Can be empty but not null.
      • _namespaceAIIsNamespaceName

        protected java.lang.String[] _namespaceAIIsNamespaceName
      • _namespaceAIIsEnd

        protected int _namespaceAIIsEnd
      • _eventType

        protected int _eventType
      • _attributeCache

        protected AttributesHolder _attributeCache
        Holder of the attributes. Be careful that this follows the SAX convention of using "" instead of null.
      • _charSequence

        protected java.lang.CharSequence _charSequence
      • _characters

        protected char[] _characters
      • _textOffset

        protected int _textOffset
      • _textLen

        protected int _textLen
      • _piTarget

        protected java.lang.String _piTarget
      • _piData

        protected java.lang.String _piData
      • PARSING

        private static final int PARSING
        The parser is in the middle of parsing a document, with no end in sight.
        See Also:
        Constant Field Values
      • PENDING_END_DOCUMENT

        private static final int PENDING_END_DOCUMENT
        The parser has already reported the XMLStreamConstants.END_ELEMENT, and we are parsing a fragment. We'll report XMLStreamConstants.END_DOCUMENT next and be done.
        See Also:
        Constant Field Values
      • COMPLETED

        private static final int COMPLETED
        The parser has reported the XMLStreamConstants.END_DOCUMENT event, so we are really done parsing.
        See Also:
        Constant Field Values
      • _completionState

        private int _completionState
        True if processing is complete.
    • Constructor Detail

      • StreamReaderBufferProcessor

        public StreamReaderBufferProcessor()
      • StreamReaderBufferProcessor

        public StreamReaderBufferProcessor​(XMLStreamBuffer buffer)
                                    throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
    • Method Detail

      • setXMLStreamBuffer

        public void setXMLStreamBuffer​(XMLStreamBuffer buffer)
                                throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • nextTagAndMark

        public XMLStreamBuffer nextTagAndMark()
                                       throws javax.xml.stream.XMLStreamException
        Does nextTag() and if the parser moved to a new start tag, returns a XMLStreamBufferMark that captures the infoset starting from the newly discovered element.

        (Ideally we should have a method that works against the current position, but the way the data structure is read makes this somewhat difficult.) This creates a new XMLStreamBufferMark that shares the underlying data storage, thus it's fairly efficient.

        Throws:
        javax.xml.stream.XMLStreamException
      • getProperty

        public java.lang.Object getProperty​(java.lang.String name)
        Specified by:
        getProperty in interface javax.xml.stream.XMLStreamReader
      • next

        public int next()
                 throws javax.xml.stream.XMLStreamException
        Specified by:
        next in interface javax.xml.stream.XMLStreamReader
        Throws:
        javax.xml.stream.XMLStreamException
      • require

        public final void require​(int type,
                                  java.lang.String namespaceURI,
                                  java.lang.String localName)
                           throws javax.xml.stream.XMLStreamException
        Specified by:
        require in interface javax.xml.stream.XMLStreamReader
        Throws:
        javax.xml.stream.XMLStreamException
      • getElementTextTrim

        public final java.lang.String getElementTextTrim()
                                                  throws javax.xml.stream.XMLStreamException
        Specified by:
        getElementTextTrim in interface org.jvnet.staxex.XMLStreamReaderEx
        Throws:
        javax.xml.stream.XMLStreamException
      • getElementText

        public final java.lang.String getElementText()
                                              throws javax.xml.stream.XMLStreamException
        Specified by:
        getElementText in interface javax.xml.stream.XMLStreamReader
        Throws:
        javax.xml.stream.XMLStreamException
      • getElementText

        public final java.lang.String getElementText​(boolean startElementRead)
                                              throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • nextTag

        public final int nextTag()
                          throws javax.xml.stream.XMLStreamException
        Specified by:
        nextTag in interface javax.xml.stream.XMLStreamReader
        Throws:
        javax.xml.stream.XMLStreamException
      • nextTag

        public final int nextTag​(boolean currentTagRead)
                          throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • hasNext

        public final boolean hasNext()
        Specified by:
        hasNext in interface javax.xml.stream.XMLStreamReader
      • close

        public void close()
                   throws javax.xml.stream.XMLStreamException
        Specified by:
        close in interface javax.xml.stream.XMLStreamReader
        Throws:
        javax.xml.stream.XMLStreamException
      • isStartElement

        public final boolean isStartElement()
        Specified by:
        isStartElement in interface javax.xml.stream.XMLStreamReader
      • isEndElement

        public final boolean isEndElement()
        Specified by:
        isEndElement in interface javax.xml.stream.XMLStreamReader
      • isCharacters

        public final boolean isCharacters()
        Specified by:
        isCharacters in interface javax.xml.stream.XMLStreamReader
      • isWhiteSpace

        public final boolean isWhiteSpace()
        Specified by:
        isWhiteSpace in interface javax.xml.stream.XMLStreamReader
      • getAttributeValue

        public final java.lang.String getAttributeValue​(java.lang.String namespaceURI,
                                                        java.lang.String localName)
        Specified by:
        getAttributeValue in interface javax.xml.stream.XMLStreamReader
      • getAttributeCount

        public final int getAttributeCount()
        Specified by:
        getAttributeCount in interface javax.xml.stream.XMLStreamReader
      • getAttributeName

        public final javax.xml.namespace.QName getAttributeName​(int index)
        Specified by:
        getAttributeName in interface javax.xml.stream.XMLStreamReader
      • getAttributeNamespace

        public final java.lang.String getAttributeNamespace​(int index)
        Specified by:
        getAttributeNamespace in interface javax.xml.stream.XMLStreamReader
      • getAttributeLocalName

        public final java.lang.String getAttributeLocalName​(int index)
        Specified by:
        getAttributeLocalName in interface javax.xml.stream.XMLStreamReader
      • getAttributePrefix

        public final java.lang.String getAttributePrefix​(int index)
        Specified by:
        getAttributePrefix in interface javax.xml.stream.XMLStreamReader
      • getAttributeType

        public final java.lang.String getAttributeType​(int index)
        Specified by:
        getAttributeType in interface javax.xml.stream.XMLStreamReader
      • getAttributeValue

        public final java.lang.String getAttributeValue​(int index)
        Specified by:
        getAttributeValue in interface javax.xml.stream.XMLStreamReader
      • isAttributeSpecified

        public final boolean isAttributeSpecified​(int index)
        Specified by:
        isAttributeSpecified in interface javax.xml.stream.XMLStreamReader
      • getNamespaceCount

        public final int getNamespaceCount()
        Specified by:
        getNamespaceCount in interface javax.xml.stream.XMLStreamReader
      • getNamespacePrefix

        public final java.lang.String getNamespacePrefix​(int index)
        Specified by:
        getNamespacePrefix in interface javax.xml.stream.XMLStreamReader
      • getNamespaceURI

        public final java.lang.String getNamespaceURI​(int index)
        Specified by:
        getNamespaceURI in interface javax.xml.stream.XMLStreamReader
      • getNamespaceURI

        public final java.lang.String getNamespaceURI​(java.lang.String prefix)
        Specified by:
        getNamespaceURI in interface javax.xml.stream.XMLStreamReader
      • getNamespaceContext

        public final org.jvnet.staxex.NamespaceContextEx getNamespaceContext()
        Specified by:
        getNamespaceContext in interface javax.xml.stream.XMLStreamReader
        Specified by:
        getNamespaceContext in interface org.jvnet.staxex.XMLStreamReaderEx
      • getEventType

        public final int getEventType()
        Specified by:
        getEventType in interface javax.xml.stream.XMLStreamReader
      • getText

        public final java.lang.String getText()
        Specified by:
        getText in interface javax.xml.stream.XMLStreamReader
      • getTextCharacters

        public final char[] getTextCharacters()
        Specified by:
        getTextCharacters in interface javax.xml.stream.XMLStreamReader
      • getTextStart

        public final int getTextStart()
        Specified by:
        getTextStart in interface javax.xml.stream.XMLStreamReader
      • getTextLength

        public final int getTextLength()
        Specified by:
        getTextLength in interface javax.xml.stream.XMLStreamReader
      • getTextCharacters

        public final int getTextCharacters​(int sourceStart,
                                           char[] target,
                                           int targetStart,
                                           int length)
                                    throws javax.xml.stream.XMLStreamException
        Specified by:
        getTextCharacters in interface javax.xml.stream.XMLStreamReader
        Throws:
        javax.xml.stream.XMLStreamException
      • getPCDATA

        public final java.lang.CharSequence getPCDATA()
        Specified by:
        getPCDATA in interface org.jvnet.staxex.XMLStreamReaderEx
      • getEncoding

        public final java.lang.String getEncoding()
        Specified by:
        getEncoding in interface javax.xml.stream.XMLStreamReader
      • hasText

        public final boolean hasText()
        Specified by:
        hasText in interface javax.xml.stream.XMLStreamReader
      • getLocation

        public final javax.xml.stream.Location getLocation()
        Specified by:
        getLocation in interface javax.xml.stream.XMLStreamReader
      • hasName

        public final boolean hasName()
        Specified by:
        hasName in interface javax.xml.stream.XMLStreamReader
      • getName

        public final javax.xml.namespace.QName getName()
        Specified by:
        getName in interface javax.xml.stream.XMLStreamReader
      • getLocalName

        public final java.lang.String getLocalName()
        Specified by:
        getLocalName in interface javax.xml.stream.XMLStreamReader
      • getNamespaceURI

        public final java.lang.String getNamespaceURI()
        Specified by:
        getNamespaceURI in interface javax.xml.stream.XMLStreamReader
      • getPrefix

        public final java.lang.String getPrefix()
        Specified by:
        getPrefix in interface javax.xml.stream.XMLStreamReader
      • getVersion

        public final java.lang.String getVersion()
        Specified by:
        getVersion in interface javax.xml.stream.XMLStreamReader
      • isStandalone

        public final boolean isStandalone()
        Specified by:
        isStandalone in interface javax.xml.stream.XMLStreamReader
      • standaloneSet

        public final boolean standaloneSet()
        Specified by:
        standaloneSet in interface javax.xml.stream.XMLStreamReader
      • getCharacterEncodingScheme

        public final java.lang.String getCharacterEncodingScheme()
        Specified by:
        getCharacterEncodingScheme in interface javax.xml.stream.XMLStreamReader
      • getPITarget

        public final java.lang.String getPITarget()
        Specified by:
        getPITarget in interface javax.xml.stream.XMLStreamReader
      • getPIData

        public final java.lang.String getPIData()
        Specified by:
        getPIData in interface javax.xml.stream.XMLStreamReader
      • processElement

        protected void processElement​(java.lang.String prefix,
                                      java.lang.String uri,
                                      java.lang.String localName,
                                      boolean inscope)
      • isInscope

        private boolean isInscope​(int depth)
      • resizeNamespaceAttributes

        private void resizeNamespaceAttributes()
      • processNamespaceAttributes

        private int processNamespaceAttributes​(int item,
                                               boolean inscope)
      • fixNull

        private static java.lang.String fixNull​(java.lang.String s)
      • processAttributes

        private void processAttributes​(int item)
      • pushElementStack

        private void pushElementStack()
      • popElementStack

        private void popElementStack​(int depth)
      • fixEmptyString

        private static java.lang.String fixEmptyString​(java.lang.String s)