Class MXParser

  • All Implemented Interfaces:
    org.codehaus.plexus.util.xml.pull.XmlPullParser

    public class MXParser
    extends Object
    implements org.codehaus.plexus.util.xml.pull.XmlPullParser
    Absolutely minimal implementation of XMLPULL V1 API. Encoding handling done with XmlReader
    Author:
    Aleksander Slominski
    See Also:
    XmlReader
    • Field Detail

      • allStringsInterned

        protected boolean allStringsInterned
        Implementation notice: the is instance variable that controls if newString() is interning.

        NOTE: newStringIntern always returns interned strings and newString MAY return interned String depending on this variable.

        NOTE: by default in this minimal implementation it is false!

      • usePC

        protected boolean usePC
      • seenStartTag

        protected boolean seenStartTag
      • seenEndTag

        protected boolean seenEndTag
      • pastEndTag

        protected boolean pastEndTag
      • seenAmpersand

        protected boolean seenAmpersand
      • seenMarkup

        protected boolean seenMarkup
      • seenDocdecl

        protected boolean seenDocdecl
      • tokenize

        protected boolean tokenize
      • entityRefName

        protected String entityRefName
      • xmlDeclVersion

        protected String xmlDeclVersion
      • xmlDeclStandalone

        protected Boolean xmlDeclStandalone
      • xmlDeclContent

        protected String xmlDeclContent
      • processNamespaces

        protected boolean processNamespaces
      • roundtripSupported

        protected boolean roundtripSupported
      • location

        protected String location
      • lineNumber

        protected int lineNumber
      • columnNumber

        protected int columnNumber
      • seenRoot

        protected boolean seenRoot
      • reachedEnd

        protected boolean reachedEnd
      • eventType

        protected int eventType
      • emptyElementTag

        protected boolean emptyElementTag
      • depth

        protected int depth
      • elRawName

        protected char[][] elRawName
      • elRawNameEnd

        protected int[] elRawNameEnd
      • elRawNameLine

        protected int[] elRawNameLine
      • elName

        protected String[] elName
      • elPrefix

        protected String[] elPrefix
      • elUri

        protected String[] elUri
      • elNamespaceCount

        protected int[] elNamespaceCount
      • reader

        protected Reader reader
      • inputEncoding

        protected String inputEncoding
      • bufLoadFactor

        protected int bufLoadFactor
      • buf

        protected char[] buf
      • bufSoftLimit

        protected int bufSoftLimit
      • preventBufferCompaction

        protected boolean preventBufferCompaction
      • bufAbsoluteStart

        protected int bufAbsoluteStart
      • bufStart

        protected int bufStart
      • bufEnd

        protected int bufEnd
      • pos

        protected int pos
      • posStart

        protected int posStart
      • posEnd

        protected int posEnd
      • pc

        protected char[] pc
      • pcStart

        protected int pcStart
      • pcEnd

        protected int pcEnd
      • attributeCount

        protected int attributeCount
      • attributeName

        protected String[] attributeName
      • attributeNameHash

        protected int[] attributeNameHash
      • attributePrefix

        protected String[] attributePrefix
      • attributeUri

        protected String[] attributeUri
      • attributeValue

        protected String[] attributeValue
      • namespaceEnd

        protected int namespaceEnd
      • namespacePrefix

        protected String[] namespacePrefix
      • namespacePrefixHash

        protected int[] namespacePrefixHash
      • namespaceUri

        protected String[] namespaceUri
      • entityEnd

        protected int entityEnd
      • entityName

        protected String[] entityName
      • entityNameBuf

        protected char[][] entityNameBuf
      • entityReplacement

        protected String[] entityReplacement
      • entityReplacementBuf

        protected char[][] entityReplacementBuf
      • entityNameHash

        protected int[] entityNameHash
      • charRefOneCharBuf

        protected char[] charRefOneCharBuf
      • VERSION

        protected static final char[] VERSION
      • NCODING

        protected static final char[] NCODING
      • TANDALONE

        protected static final char[] TANDALONE
      • YES

        protected static final char[] YES
      • NO

        protected static final char[] NO
      • lookupNameStartChar

        protected static boolean[] lookupNameStartChar
      • lookupNameChar

        protected static boolean[] lookupNameChar
    • Constructor Detail

      • MXParser

        public MXParser()
    • Method Detail

      • resetStringCache

        protected void resetStringCache()
      • newString

        protected String newString​(char[] cbuf,
                                   int off,
                                   int len)
      • newStringIntern

        protected String newStringIntern​(char[] cbuf,
                                         int off,
                                         int len)
      • ensureElementsCapacity

        protected void ensureElementsCapacity()
        Make sure that we have enough space to keep element stack if passed size. It will always create one additional slot then current depth
      • ensureAttributesCapacity

        protected void ensureAttributesCapacity​(int size)
        Make sure that in attributes temporary array is enough space.
        Parameters:
        size - The size.
      • ensureNamespacesCapacity

        protected void ensureNamespacesCapacity​(int size)
      • fastHash

        protected static final int fastHash​(char[] ch,
                                            int off,
                                            int len)
        simplistic implementation of hash function that has constant time to compute - so it also means diminishing hash quality for long strings but for XML parsing it should be good enough ...
        Parameters:
        ch - The characters.
        off - The offset.
        len - The length.
        Returns:
        the hash.
      • ensureEntityCapacity

        protected void ensureEntityCapacity()
      • reset

        protected void reset()
      • setFeature

        public void setFeature​(String name,
                               boolean state)
                        throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Method setFeature
        Specified by:
        setFeature in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Parameters:
        name - a String
        state - a boolean
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException - in case of an error.
      • getFeature

        public boolean getFeature​(String name)
        Unknown properties are always returned as false
        Specified by:
        getFeature in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • setProperty

        public void setProperty​(String name,
                                Object value)
                         throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        setProperty in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • getProperty

        public Object getProperty​(String name)
        Specified by:
        getProperty in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • setInput

        public void setInput​(Reader in)
                      throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        setInput in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • setInput

        public void setInput​(InputStream inputStream,
                             String inputEncoding)
                      throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        setInput in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • getInputEncoding

        public String getInputEncoding()
        Specified by:
        getInputEncoding in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • defineEntityReplacementText

        public void defineEntityReplacementText​(String entityName,
                                                String replacementText)
                                         throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        defineEntityReplacementText in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • getNamespaceCount

        public int getNamespaceCount​(int depth)
                              throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        getNamespaceCount in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • getNamespacePrefix

        public String getNamespacePrefix​(int pos)
                                  throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        getNamespacePrefix in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • getNamespaceUri

        public String getNamespaceUri​(int pos)
                               throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        getNamespaceUri in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • getNamespace

        public String getNamespace​(String prefix)
        Specified by:
        getNamespace in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getDepth

        public int getDepth()
        Specified by:
        getDepth in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getPositionDescription

        public String getPositionDescription()
        Return string describing current position of parsers as text 'STATE [seen %s...] @line:column'.
        Specified by:
        getPositionDescription in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getLineNumber

        public int getLineNumber()
        Specified by:
        getLineNumber in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getColumnNumber

        public int getColumnNumber()
        Specified by:
        getColumnNumber in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • isWhitespace

        public boolean isWhitespace()
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        isWhitespace in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • getText

        public String getText()
        Specified by:
        getText in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getTextCharacters

        public char[] getTextCharacters​(int[] holderForStartAndLength)
        Specified by:
        getTextCharacters in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getNamespace

        public String getNamespace()
        Specified by:
        getNamespace in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getName

        public String getName()
        Specified by:
        getName in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getPrefix

        public String getPrefix()
        Specified by:
        getPrefix in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • isEmptyElementTag

        public boolean isEmptyElementTag()
                                  throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        isEmptyElementTag in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • getAttributeCount

        public int getAttributeCount()
        Specified by:
        getAttributeCount in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getAttributeNamespace

        public String getAttributeNamespace​(int index)
        Specified by:
        getAttributeNamespace in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getAttributeName

        public String getAttributeName​(int index)
        Specified by:
        getAttributeName in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getAttributePrefix

        public String getAttributePrefix​(int index)
        Specified by:
        getAttributePrefix in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getAttributeType

        public String getAttributeType​(int index)
        Specified by:
        getAttributeType in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • isAttributeDefault

        public boolean isAttributeDefault​(int index)
        Specified by:
        isAttributeDefault in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getAttributeValue

        public String getAttributeValue​(int index)
        Specified by:
        getAttributeValue in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getAttributeValue

        public String getAttributeValue​(String namespace,
                                        String name)
        Specified by:
        getAttributeValue in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
      • getEventType

        public int getEventType()
                         throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Specified by:
        getEventType in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • require

        public void require​(int type,
                            String namespace,
                            String name)
                     throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                            IOException
        Specified by:
        require in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • skipSubTree

        public void skipSubTree()
                         throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                IOException
        Skip sub tree that is currently porser positioned on.

        NOTE: parser must be on START_TAG and when funtion returns parser will be positioned on corresponding END_TAG

        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException - in case of an error.
        IOException - in case of an error.
      • nextText

        public String nextText()
                        throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                               IOException
        Specified by:
        nextText in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • nextTag

        public int nextTag()
                    throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                           IOException
        Specified by:
        nextTag in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • next

        public int next()
                 throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                        IOException
        Specified by:
        next in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • nextToken

        public int nextToken()
                      throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                             IOException
        Specified by:
        nextToken in interface org.codehaus.plexus.util.xml.pull.XmlPullParser
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • nextImpl

        protected int nextImpl()
                        throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                               IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseProlog

        protected int parseProlog()
                           throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                  IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseEpilog

        protected int parseEpilog()
                           throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                  IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseEndTag

        public int parseEndTag()
                        throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                               IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseStartTag

        public int parseStartTag()
                          throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                 IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseAttribute

        protected char parseAttribute()
                               throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                      IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseEntityRef

        protected char[] parseEntityRef()
                                 throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                        IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • lookuEntityReplacement

        protected char[] lookuEntityReplacement​(int entitNameLen)
                                         throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                                IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseComment

        protected void parseComment()
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                    IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parsePI

        protected boolean parsePI()
                           throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                  IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseXmlDecl

        protected void parseXmlDecl​(char ch)
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                    IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseXmlDeclWithVersion

        protected void parseXmlDeclWithVersion​(int versionStart,
                                               int versionEnd)
                                        throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                               IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseDocdecl

        protected void parseDocdecl()
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                    IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • parseCDSect

        protected void parseCDSect​(boolean hadCharData)
                            throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                   IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • fillBuf

        protected void fillBuf()
                        throws IOException,
                               org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Throws:
        IOException
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • more

        protected char more()
                     throws IOException,
                            org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Throws:
        IOException
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
      • ensurePC

        protected void ensurePC​(int end)
      • joinPC

        protected void joinPC()
      • requireInput

        protected char requireInput​(char ch,
                                    char[] input)
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                    IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • requireNextS

        protected char requireNextS()
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                                    IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • skipS

        protected char skipS​(char ch)
                      throws org.codehaus.plexus.util.xml.pull.XmlPullParserException,
                             IOException
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException
        IOException
      • isNameStartChar

        protected boolean isNameStartChar​(char ch)
      • isNameChar

        protected boolean isNameChar​(char ch)
      • isS

        protected boolean isS​(char ch)
      • printable

        protected String printable​(char ch)