Class AttributeMapWithIdentity

  • All Implemented Interfaces:
    java.lang.Iterable<AttributeInfo>, AttributeMap

    public class AttributeMapWithIdentity
    extends java.lang.Object
    implements AttributeMap
    An implementation of AttributeMap suitable for representing attributes on a mutable tree. Unlike an ordinary AttributeMap, each AttributeInfo has a persistent index value, which remains unchanged when attributes are added or removed or renamed. New attributes are allocated an index value greater than any previously-allocated index value.

    However, an AttributeMapWithIdentity, like any other AttributeMap, is an immutable object.

    • Method Detail

      • size

        public int size()
        Return the number of attributes in the map.
        Specified by:
        size in interface AttributeMap
        Returns:
        The number of attributes in the map.
      • get

        public AttributeInfo get​(NodeName name)
        Description copied from interface: AttributeMap
        Get the attribute with a given name, if it exists
        Specified by:
        get in interface AttributeMap
        Parameters:
        name - the name of the required attribute
        Returns:
        the required attribute if it exists
      • get

        public AttributeInfo get​(java.lang.String uri,
                                 java.lang.String local)
        Description copied from interface: AttributeMap
        Get the attribute with a given name, if it exists
        Specified by:
        get in interface AttributeMap
        Parameters:
        uri - the namespace part of the name of the required attribute
        local - the local part of the name of the required attribute
        Returns:
        the required attribute if it exists
      • getIndex

        public int getIndex​(java.lang.String uri,
                            java.lang.String local)
      • remove

        public AttributeMapWithIdentity remove​(int index)
        Remove an existing attribute, to create a new AttributeMap
        Parameters:
        index - the index of the attribute to be removed (if it exists)
        Returns:
        a new attribute map in which the specified attribute is marked as deleted.
      • iterator

        public java.util.Iterator<AttributeInfo> iterator()
        Specified by:
        iterator in interface java.lang.Iterable<AttributeInfo>
      • asList

        public java.util.List<AttributeInfo> asList()
        Description copied from interface: AttributeMap
        Get the contents of the AttributeMap as a list of AttributeInfo objects.

        The order of the returned list must be consistent with document order, with the order of the attribute axis, and with position-based retrieval of individual AttributeInfo objects; multiple calls are not required to return the same list, but they must be consistent in their ordering.

        Modifying the returned list has no effect on the AttributeMap

        Specified by:
        asList in interface AttributeMap
        Returns:
        a list of attributes in the AttributeMap
      • itemAt

        public AttributeInfo itemAt​(int index)
        Description copied from interface: AttributeMap
        Get the AttributeInfo with a given index.
        Specified by:
        itemAt in interface AttributeMap
        Parameters:
        index - the index position, zero-based. The order of index positions of attributes in an attribute map reflects document order.
        Returns:
        the AttributeInfo at the given position. In an immutable tree the result will always be equivalent to calling asList().get(index). However, if the tree has been modified, then the index values of the attributes may not be contiguous.