Class WstxInputData

  • Direct Known Subclasses:
    StreamScanner

    public class WstxInputData
    extends java.lang.Object
    Base class used by readers (specifically, by StreamScanner, and its sub-classes) to encapsulate input buffer portion of the class. Philosophically this should probably be done via containment (composition), not sub-classing but for performance reason, this "core" class is generally extended from instead.

    Main reason for the input data portion to be factored out of main class is that this way it can also be passed to nested input handling Objects, which can then manipulate input buffers of the caller, efficiently.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static char CHAR_NULL
      Null-character is used as return value from some method(s), since it is not a legal character in an XML document.
      static char CHAR_SPACE  
      static char INT_NULL  
      static char INT_SPACE  
      static int MAX_UNICODE_CHAR
      This constant defines the highest Unicode character allowed in XML content.
      protected long mCurrInputProcessed
      Number of characters that were contained in previous blocks (blocks that were already processed prior to the current buffer).
      protected int mCurrInputRow
      Current row location of current point in input buffer, starting from 1
      protected int mCurrInputRowStart
      Current index of the first character of the current row in input buffer.
      protected char[] mInputBuffer
      Current buffer from which data is read; generally data is read into buffer from input source, but not always (especially when using nested input contexts when expanding parsed entity references etc).
      protected int mInputEnd
      Index of character after last available one in the buffer.
      protected int mInputPtr
      Pointer to next available character in buffer
      protected boolean mXml11
      Flag that indicates whether XML content is to be treated as per XML 1.1 specification or not (if not, it'll use xml 1.0).
      private static byte NAME_CHAR_ALL_VALID_B  
      private static byte NAME_CHAR_INVALID_B  
      private static byte NAME_CHAR_VALID_NONFIRST_B  
      private static byte PUBID_CHAR_VALID_B  
      private static byte[] sCharValidity  
      private static byte[] sPubidValidity  
      private static int VALID_CHAR_COUNT
      We will only use validity array for first 256 characters, mostly because after those characters it's easier to do fairly simple block checks.
      private static int VALID_PUBID_CHAR_COUNT
      Public identifiers only use 7-bit ascii range.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected WstxInputData()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void copyBufferStateFrom​(WstxInputData src)
      Note: Only public due to sub-classes needing to call this on base class instance from different package (confusing?)
      static int findIllegalNameChar​(java.lang.String name, boolean nsAware, boolean xml11)
      Method that can be called to check whether given String contains any characters that are not legal XML names.
      static int findIllegalNmtokenChar​(java.lang.String nmtoken, boolean nsAware, boolean xml11)  
      static java.lang.String getCharDesc​(char c)  
      protected boolean isNameChar​(char c)
      Method that can be used to check whether specified character is a valid character of an XML 1.0/1.1 name as any other char than the first one; except that colon (:) is not recognized as valid here: caller has to verify it separately (since it generally affects namespace mapping of a qualified name).
      static boolean isNameChar​(char c, boolean nsAware, boolean xml11)  
      protected boolean isNameStartChar​(char c)
      Method that can be used to check whether specified character is a valid first character of an XML 1.0/1.1 name; except that colon (:) is not recognized as a start char here: caller has to verify it separately (since it generally affects namespace mapping of a qualified name).
      static boolean isNameStartChar​(char c, boolean nsAware, boolean xml11)  
      static boolean isSpaceChar​(char c)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • CHAR_NULL

        public static final char CHAR_NULL
        Null-character is used as return value from some method(s), since it is not a legal character in an XML document.
        See Also:
        Constant Field Values
      • MAX_UNICODE_CHAR

        public static final int MAX_UNICODE_CHAR
        This constant defines the highest Unicode character allowed in XML content.
        See Also:
        Constant Field Values
      • VALID_CHAR_COUNT

        private static final int VALID_CHAR_COUNT
        We will only use validity array for first 256 characters, mostly because after those characters it's easier to do fairly simple block checks.
        See Also:
        Constant Field Values
      • NAME_CHAR_VALID_NONFIRST_B

        private static final byte NAME_CHAR_VALID_NONFIRST_B
        See Also:
        Constant Field Values
      • sCharValidity

        private static final byte[] sCharValidity
      • VALID_PUBID_CHAR_COUNT

        private static final int VALID_PUBID_CHAR_COUNT
        Public identifiers only use 7-bit ascii range.
        See Also:
        Constant Field Values
      • sPubidValidity

        private static final byte[] sPubidValidity
      • mXml11

        protected boolean mXml11
        Flag that indicates whether XML content is to be treated as per XML 1.1 specification or not (if not, it'll use xml 1.0).
      • mInputBuffer

        protected char[] mInputBuffer
        Current buffer from which data is read; generally data is read into buffer from input source, but not always (especially when using nested input contexts when expanding parsed entity references etc).
      • mInputPtr

        protected int mInputPtr
        Pointer to next available character in buffer
      • mInputEnd

        protected int mInputEnd
        Index of character after last available one in the buffer.
      • mCurrInputProcessed

        protected long mCurrInputProcessed
        Number of characters that were contained in previous blocks (blocks that were already processed prior to the current buffer).
      • mCurrInputRow

        protected int mCurrInputRow
        Current row location of current point in input buffer, starting from 1
      • mCurrInputRowStart

        protected int mCurrInputRowStart
        Current index of the first character of the current row in input buffer. Needed to calculate column position, if necessary; benefit of not having column itself is that this only has to be updated once per line.
    • Constructor Detail

      • WstxInputData

        protected WstxInputData()
    • Method Detail

      • copyBufferStateFrom

        public void copyBufferStateFrom​(WstxInputData src)
        Note: Only public due to sub-classes needing to call this on base class instance from different package (confusing?)
      • isNameStartChar

        protected final boolean isNameStartChar​(char c)
        Method that can be used to check whether specified character is a valid first character of an XML 1.0/1.1 name; except that colon (:) is not recognized as a start char here: caller has to verify it separately (since it generally affects namespace mapping of a qualified name).
      • isNameChar

        protected final boolean isNameChar​(char c)
        Method that can be used to check whether specified character is a valid character of an XML 1.0/1.1 name as any other char than the first one; except that colon (:) is not recognized as valid here: caller has to verify it separately (since it generally affects namespace mapping of a qualified name).
      • isNameStartChar

        public static final boolean isNameStartChar​(char c,
                                                    boolean nsAware,
                                                    boolean xml11)
      • isNameChar

        public static final boolean isNameChar​(char c,
                                               boolean nsAware,
                                               boolean xml11)
      • findIllegalNameChar

        public static final int findIllegalNameChar​(java.lang.String name,
                                                    boolean nsAware,
                                                    boolean xml11)
        Method that can be called to check whether given String contains any characters that are not legal XML names.
        Returns:
        Index of the first illegal xml name characters, if any; -1 if the name is completely legal
      • findIllegalNmtokenChar

        public static final int findIllegalNmtokenChar​(java.lang.String nmtoken,
                                                       boolean nsAware,
                                                       boolean xml11)
      • isSpaceChar

        public static final boolean isSpaceChar​(char c)
      • getCharDesc

        public static java.lang.String getCharDesc​(char c)