Class SAXBufferProcessor

  • All Implemented Interfaces:
    org.xml.sax.XMLReader

    public class SAXBufferProcessor
    extends AbstractProcessor
    implements org.xml.sax.XMLReader
    A processor of a XMLStreamBuffer that that reads the XML infoset as XMLReader.
    • Field Detail

      • _entityResolver

        protected org.xml.sax.EntityResolver _entityResolver
        Reference to entity resolver.
      • _dtdHandler

        protected org.xml.sax.DTDHandler _dtdHandler
        Reference to dtd handler.
      • _contentHandler

        protected org.xml.sax.ContentHandler _contentHandler
        Reference to content handler.
      • _errorHandler

        protected org.xml.sax.ErrorHandler _errorHandler
        Reference to error handler.
      • _lexicalHandler

        protected org.xml.sax.ext.LexicalHandler _lexicalHandler
        Reference to lexical handler.
      • _namespacePrefixesFeature

        protected boolean _namespacePrefixesFeature
        SAX Namespace attributes features
      • _namespacePrefixes

        protected java.lang.String[] _namespacePrefixes
      • _namespacePrefixesIndex

        protected int _namespacePrefixesIndex
      • _namespaceAttributesStartingStack

        protected int[] _namespaceAttributesStartingStack
      • _namespaceAttributesStack

        protected int[] _namespaceAttributesStack
      • _namespaceAttributesStackIndex

        protected int _namespaceAttributesStackIndex
    • Constructor Detail

      • SAXBufferProcessor

        public SAXBufferProcessor()
      • SAXBufferProcessor

        public SAXBufferProcessor​(XMLStreamBuffer buffer,
                                  boolean produceFragmentEvent)
        Parameters:
        produceFragmentEvent - True to generate fragment SAX events without start/endDocument. False to generate a full document SAX events.
    • Method Detail

      • getFeature

        public boolean getFeature​(java.lang.String name)
                           throws org.xml.sax.SAXNotRecognizedException,
                                  org.xml.sax.SAXNotSupportedException
        Specified by:
        getFeature in interface org.xml.sax.XMLReader
        Throws:
        org.xml.sax.SAXNotRecognizedException
        org.xml.sax.SAXNotSupportedException
      • setFeature

        public void setFeature​(java.lang.String name,
                               boolean value)
                        throws org.xml.sax.SAXNotRecognizedException,
                               org.xml.sax.SAXNotSupportedException
        Specified by:
        setFeature in interface org.xml.sax.XMLReader
        Throws:
        org.xml.sax.SAXNotRecognizedException
        org.xml.sax.SAXNotSupportedException
      • getProperty

        public java.lang.Object getProperty​(java.lang.String name)
                                     throws org.xml.sax.SAXNotRecognizedException,
                                            org.xml.sax.SAXNotSupportedException
        Specified by:
        getProperty in interface org.xml.sax.XMLReader
        Throws:
        org.xml.sax.SAXNotRecognizedException
        org.xml.sax.SAXNotSupportedException
      • setProperty

        public void setProperty​(java.lang.String name,
                                java.lang.Object value)
                         throws org.xml.sax.SAXNotRecognizedException,
                                org.xml.sax.SAXNotSupportedException
        Specified by:
        setProperty in interface org.xml.sax.XMLReader
        Throws:
        org.xml.sax.SAXNotRecognizedException
        org.xml.sax.SAXNotSupportedException
      • setEntityResolver

        public void setEntityResolver​(org.xml.sax.EntityResolver resolver)
        Specified by:
        setEntityResolver in interface org.xml.sax.XMLReader
      • getEntityResolver

        public org.xml.sax.EntityResolver getEntityResolver()
        Specified by:
        getEntityResolver in interface org.xml.sax.XMLReader
      • setDTDHandler

        public void setDTDHandler​(org.xml.sax.DTDHandler handler)
        Specified by:
        setDTDHandler in interface org.xml.sax.XMLReader
      • getDTDHandler

        public org.xml.sax.DTDHandler getDTDHandler()
        Specified by:
        getDTDHandler in interface org.xml.sax.XMLReader
      • setContentHandler

        public void setContentHandler​(org.xml.sax.ContentHandler handler)
        Specified by:
        setContentHandler in interface org.xml.sax.XMLReader
      • getContentHandler

        public org.xml.sax.ContentHandler getContentHandler()
        Specified by:
        getContentHandler in interface org.xml.sax.XMLReader
      • setErrorHandler

        public void setErrorHandler​(org.xml.sax.ErrorHandler handler)
        Specified by:
        setErrorHandler in interface org.xml.sax.XMLReader
      • getErrorHandler

        public org.xml.sax.ErrorHandler getErrorHandler()
        Specified by:
        getErrorHandler in interface org.xml.sax.XMLReader
      • setLexicalHandler

        public void setLexicalHandler​(org.xml.sax.ext.LexicalHandler handler)
      • getLexicalHandler

        public org.xml.sax.ext.LexicalHandler getLexicalHandler()
      • parse

        public void parse​(org.xml.sax.InputSource input)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
        Specified by:
        parse in interface org.xml.sax.XMLReader
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
      • parse

        public void parse​(java.lang.String systemId)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
        Specified by:
        parse in interface org.xml.sax.XMLReader
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
      • process

        public final void process​(XMLStreamBuffer buffer,
                                  boolean produceFragmentEvent)
                           throws org.xml.sax.SAXException
        Parameters:
        produceFragmentEvent - True to generate fragment SAX events without start/endDocument. False to generate a full document SAX events.
        Throws:
        org.xml.sax.SAXException
      • setXMLStreamBuffer

        public void setXMLStreamBuffer​(XMLStreamBuffer buffer,
                                       boolean produceFragmentEvent)
        Resets the parser to read from the beginning of the given XMLStreamBuffer.
        Parameters:
        produceFragmentEvent - True to generate fragment SAX events without start/endDocument. False to generate a full document SAX events.
      • process

        public final void process()
                           throws org.xml.sax.SAXException
        Parse the sub-tree (or a whole document) that XMLStreamBuffer points to, and sends events to handlers.

        TODO: We probably need two modes for a sub-tree event generation. One for firing a sub-tree as if it's a whole document (in which case start/endDocument and appropriate additional namespace bindings are necessary), and the other mode for firing a subtree as a subtree, like it does today. A stream buffer SAX feature could be used to specify this.

        Throws:
        org.xml.sax.SAXException - Follow the same semantics as XMLReader.parse(InputSource).
      • processCommentAsCharArraySmall

        private void processCommentAsCharArraySmall()
                                             throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • reportFatalError

        private org.xml.sax.SAXParseException reportFatalError​(java.lang.String msg)
                                                        throws org.xml.sax.SAXException
        Report a fatal error and abort. This is necessary to follow the SAX semantics of error handling.
        Throws:
        org.xml.sax.SAXException
      • isInscope

        private boolean isInscope()
      • processDocument

        private void processDocument()
                              throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • processElement

        protected void processElement​(java.lang.String uri,
                                      java.lang.String localName,
                                      java.lang.String qName,
                                      boolean inscope)
                               throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • readInscopeNamespaces

        private void readInscopeNamespaces​(java.util.Set<java.lang.String> prefixSet)
                                    throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • fixNull

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

        private void processCommentAsCharArrayCopy()
                                            throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • processCommentAsCharArrayMedium

        private void processCommentAsCharArrayMedium()
                                              throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • processEndPrefixMapping

        private void processEndPrefixMapping()
                                      throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • processNamespaceAttributes

        private int processNamespaceAttributes​(int item,
                                               boolean collectPrefixes,
                                               java.util.Set<java.lang.String> prefixSet)
                                        throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • processAttributes

        private void processAttributes​(int item)
                                throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • processNamespaceAttribute

        private void processNamespaceAttribute​(java.lang.String prefix,
                                               java.lang.String uri)
                                        throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • cacheNamespacePrefix

        private void cacheNamespacePrefix​(java.lang.String prefix)
      • cacheNamespacePrefixIndex

        private void cacheNamespacePrefixIndex()
      • cacheNamespacePrefixStartingIndex

        private void cacheNamespacePrefixStartingIndex()
      • processComment

        private void processComment​(java.lang.String s)
                             throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • processComment

        private void processComment​(char[] ch,
                                    int start,
                                    int length)
                             throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • processProcessingInstruction

        private void processProcessingInstruction​(java.lang.String target,
                                                  java.lang.String data)
                                           throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException