Class ElemAttrs

java.lang.Object
com.ctc.wstx.sr.ElemAttrs

public final class ElemAttrs extends Object
Container class that is constructed with enough raw attribute information, to be able to lazily construct full attribute objects, to be accessed via Iterator, or fully-qualified name.

Implementation note: code for using Map-like structure is unfortunately cut'n pasted from AttributeCollector. Problem with refactoring is that it's 90% the same code, but not 100%.

Although instances of this class are constructed by stream readers, it is actually used by element event objects.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final int
     
    private final int[]
     
    private final int
     
    private final int
    Raw offset (in mRawAttrs) of the first attribute instance that was created through default value expansion.
    private final String[]
    Array that contains 4 Strings for each attribute; localName, URI, prefix, value.
    private static final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    ElemAttrs(String[] rawAttrs, int defOffset)
    Method called to create "short" attribute list; list that has only few entries, and can thus be searched for attributes using linear search, without using any kind of Map structure.
    ElemAttrs(String[] rawAttrs, int defOffset, int[] attrMap, int hashSize, int spillEnd)
    Method called to create "long" attribute list; list that has a few entries, and efficient access by fully-qualified name should not be done by linear search.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
     
    private final int
    findMapIndex(String nsURI, String localName)
    Note: this method is very similar to
    invalid reference
    com.ctc.wstx.sr.AttributeCollector#getAttrValue
    ; basically most of it was cut'n pasted.
    int
     
     
    boolean
    isDefault(int ix)
     

    Methods inherited from class java.lang.Object

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

    • OFFSET_NS_URI

      private static final int OFFSET_NS_URI
      See Also:
    • mRawAttrs

      private final String[] mRawAttrs
      Array that contains 4 Strings for each attribute; localName, URI, prefix, value. Can be used to lazily construct structure(s) needed to return Iterator for accessing all attributes.
    • mDefaultOffset

      private final int mDefaultOffset
      Raw offset (in mRawAttrs) of the first attribute instance that was created through default value expansion.
    • mAttrMap

      private final int[] mAttrMap
    • mAttrHashSize

      private final int mAttrHashSize
    • mAttrSpillEnd

      private final int mAttrSpillEnd
  • Constructor Details

    • ElemAttrs

      public ElemAttrs(String[] rawAttrs, int defOffset)
      Method called to create "short" attribute list; list that has only few entries, and can thus be searched for attributes using linear search, without using any kind of Map structure.

      Currently the limit is 4 attributes; 1, 2 or 3 attribute lists are considered short, 4 or more 'long'.

      Parameters:
      rawAttrs - Array that contains 4 Strings for each attribute; localName, URI, prefix, value. Can be used to lazily construct structure(s) needed to return Iterator for accessing all attributes.
      defOffset - Index of the first default attribute, if any; number of all attributes if none
    • ElemAttrs

      public ElemAttrs(String[] rawAttrs, int defOffset, int[] attrMap, int hashSize, int spillEnd)
      Method called to create "long" attribute list; list that has a few entries, and efficient access by fully-qualified name should not be done by linear search.
      Parameters:
      rawAttrs - Array that contains 4 Strings for each attribute; localName, URI, prefix, value. Can be used to lazily construct structure(s) needed to return Iterator for accessing all attributes.
  • Method Details

    • getRawAttrs

      public String[] getRawAttrs()
    • findIndex

      public int findIndex(QName name)
    • getFirstDefaultOffset

      public int getFirstDefaultOffset()
    • isDefault

      public boolean isDefault(int ix)
    • findMapIndex

      private final int findMapIndex(String nsURI, String localName)

      Note: this method is very similar to

      invalid reference
      com.ctc.wstx.sr.AttributeCollector#getAttrValue
      ; basically most of it was cut'n pasted. Would be nice to refactor, but it's bit hard to do that since data structures are not 100% identical (mostly attribute storage, not Map structure itself).