Class MXParser

java.lang.Object
org.codehaus.plexus.metadata.merge.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
See Also:
  • XmlReader
  • Field Details

    • XML_URI

      protected static final String XML_URI
      See Also:
    • XMLNS_URI

      protected static final String XMLNS_URI
      See Also:
    • FEATURE_XML_ROUNDTRIP

      protected static final String FEATURE_XML_ROUNDTRIP
      See Also:
    • FEATURE_NAMES_INTERNED

      protected static final String FEATURE_NAMES_INTERNED
      See Also:
    • PROPERTY_XMLDECL_VERSION

      protected static final String PROPERTY_XMLDECL_VERSION
      See Also:
    • PROPERTY_XMLDECL_STANDALONE

      protected static final String PROPERTY_XMLDECL_STANDALONE
      See Also:
    • PROPERTY_XMLDECL_CONTENT

      protected static final String PROPERTY_XMLDECL_CONTENT
      See Also:
    • PROPERTY_LOCATION

      protected static final String PROPERTY_LOCATION
      See Also:
    • REPORT_NAMESPACE_PREFIXES

      protected static final String REPORT_NAMESPACE_PREFIXES
      See Also:
    • 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
    • text

      protected String text
    • 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
    • READ_CHUNK_SIZE

      protected static final int READ_CHUNK_SIZE
      See Also:
    • 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
    • TRACE_SIZING

      private static final boolean TRACE_SIZING
      See Also:
    • 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
    • LOOKUP_MAX

      protected static final int LOOKUP_MAX
      See Also:
    • LOOKUP_MAX_CHAR

      protected static final char LOOKUP_MAX_CHAR
      See Also:
    • lookupNameStartChar

      protected static boolean[] lookupNameStartChar
    • lookupNameChar

      protected static boolean[] lookupNameChar
  • Constructor Details

    • MXParser

      public MXParser()
  • Method Details

    • 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
    • findFragment

      private static int findFragment(int bufMinPos, char[] b, int start, int end)
    • 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
    • setName

      private static final void setName(char ch)
    • setNameStart

      private static final void setNameStart(char ch)
    • isNameStartChar

      protected boolean isNameStartChar(char ch)
    • isNameChar

      protected boolean isNameChar(char ch)
    • isS

      protected boolean isS(char ch)
    • printable

      protected String printable(char ch)
    • printable

      protected String printable(String s)