Class IndexedXMLObjectChildrenList<ElementType extends XMLObject>

  • Type Parameters:
    ElementType - the type of element added to the list
    All Implemented Interfaces:
    Iterable<ElementType>, Collection<ElementType>, List<ElementType>

    @NotThreadSafe
    public class IndexedXMLObjectChildrenList<ElementType extends XMLObject>
    extends XMLObjectChildrenList<ElementType>
    A list which indexes XMLObjects by their schema type and element QName for quick retrival based on those items.
    • Constructor Detail

      • IndexedXMLObjectChildrenList

        public IndexedXMLObjectChildrenList​(@Nonnull
                                            XMLObject parent)
        Constructor.
        Parameters:
        parent - the parent of the XMLObjects added to the list
      • IndexedXMLObjectChildrenList

        public IndexedXMLObjectChildrenList​(@Nonnull
                                            XMLObject parent,
                                            @Nonnull
                                            Collection<ElementType> col)
        Constructor.
        Parameters:
        parent - the parent of all elements
        col - collection to add to this list
    • Method Detail

      • add

        public void add​(int index,
                        @Nullable
                        ElementType element)
        Adds the given XMLObject to this list. A null element is ignored, as is an element already in the list.

        An IllegalArgumentException is thrown if the given XMLObject already has a parent other than the parent given at list construction time.

        Specified by:
        add in interface List<ElementType extends XMLObject>
        Overrides:
        add in class XMLObjectChildrenList<ElementType extends XMLObject>
        Parameters:
        index - index at which to add the given XMLObject
        element - element to be stored at the given index
      • get

        @Nonnull
        public List<ElementType> get​(@Nonnull
                                     QName typeOrName)
        Retrieves all the SAMLObjects that have given schema type or element name, or a null if no such objects exist.
        Parameters:
        typeOrName - the schema type or element name
        Returns:
        list of SAMLObjects that have given schema type or element name or null
      • checkAndCreateIndex

        protected void checkAndCreateIndex​(@Nonnull
                                           QName index)
        Check for the existence of an index for the specified QName and create it if it doesn't exist.
        Parameters:
        index - the index to check
      • indexElement

        protected void indexElement​(@Nullable
                                    ElementType element)
        Indexes the given SAMLObject by type and element name. A null input is ignored.
        Parameters:
        element - the SAMLObject to index
      • indexElement

        protected void indexElement​(@Nonnull
                                    QName index,
                                    @Nullable
                                    ElementType element)
        Indexes the given SAMLobject by the given index.
        Parameters:
        index - the index for the element
        element - the element to be indexed
      • remove

        public boolean remove​(@Nullable
                              ElementType element)
        Removes a given element from the list and index.
        Overrides:
        remove in class XMLObjectChildrenList<ElementType extends XMLObject>
        Parameters:
        element - the element to be removed
        Returns:
        true if the element was in the list and removed, false if not
      • removeElementFromIndex

        protected void removeElementFromIndex​(@Nullable
                                              ElementType element)
        Removes the given element from the schema type and element QName index. A null input is ignored.
        Parameters:
        element - the element to remove from the index
      • removeElementFromIndex

        protected void removeElementFromIndex​(@Nonnull
                                              QName index,
                                              @Nullable
                                              ElementType element)
        Removes an object from the given index id.
        Parameters:
        index - the id of the index
        element - the element to be removed from that index
      • set

        @Nullable
        public ElementType set​(int index,
                               @Nullable
                               ElementType element)
        Replaces the XMLObject at the specified index with the given element. A null input is ignored and returned.

        An IllegalArgumentException is thrown if the given XMLObject already has a parent other than the parent given at list construction time.

        Specified by:
        set in interface List<ElementType extends XMLObject>
        Overrides:
        set in class XMLObjectChildrenList<ElementType extends XMLObject>
        Parameters:
        index - index of the XMLObject to be replaced
        element - element to be stored at the given index
        Returns:
        the replaced XMLObject
      • subList

        @Nonnull
        public List<? extends ElementType> subList​(@Nonnull
                                                   QName index)
        Returns a view of the list that only contains elements stored under the given index. The returned list is backed by this list and supports all optional operations, so changes made to the returned list are reflected in this list.
        Parameters:
        index - index of the elements returned in the list view
        Returns:
        a view of this list that contains only the elements stored under the given index