Package org.opensaml.core.xml.util

# Class IDIndex

java.lang.Object
org.opensaml.core.xml.util.IDIndex

@NotThreadSafe public class IDIndex extends Object
Class which provides storage for the ID-to-XMLObject index mapping on an owning `XMLObject`.

## Field Summary

Fields
Modifier and Type
Field
Description
`private Map<String,XMLObject>`
`idMappings`
Mapping of ID attributes to XMLObjects in the subtree rooted at this object's owner.
`private final XMLObject`
`owner`
The XMLObject which owns this ID index.

## Constructor Summary

Constructors
Constructor
Description
`IDIndex(XMLObject newOwner)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`deregisterIDMapping(String id)`
Deregister an ID-to-XMLObject mapping for one of this object's owner's children.
`void`
`deregisterIDMappings(IDIndex idIndex)`
Deregister multiple ID-to-XMLObject mappings for this object's owner's children.
`protected Map<String,XMLObject>`
`getIDMappings()`
Get the ID-to-XMLObject mappings for this object's owner's children.
`Set<String>`
`getIDs()`
Get the set of ID strings which are the index keys.
`boolean`
`isEmpty()`
Return whether the index is currently empty.
`XMLObject`
`lookup(String id)`
Lookup and return the XMLObject identified by the specified ID attribute.
`void`
`registerIDMapping(String id, XMLObject referent)`
Register an ID-to-XMLObject mapping for one of this object's owner's children.
`void`
`registerIDMappings(IDIndex idIndex)`
Register multiple ID-to-XMLObject mappings for this object's owner's children.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### owner

@Nonnull private final XMLObject owner
The XMLObject which owns this ID index.

### idMappings

@Nonnull private Map<String,XMLObject> idMappings
Mapping of ID attributes to XMLObjects in the subtree rooted at this object's owner. This allows constant-time dereferencing of ID-typed attributes within the subtree.

## Constructor Details

### IDIndex

public IDIndex(@Nonnull XMLObject newOwner)
Constructor.

Parameters:
  `newOwner` - the XMLObject which owns this ID-to-XMLObject index

## Method Details

### registerIDMapping

public void registerIDMapping(@Nonnull @NotEmpty String id, @Nonnull XMLObject referent)
Register an ID-to-XMLObject mapping for one of this object's owner's children.

Parameters:
  `id` - the XMLObject child's ID attribute value
  `referent` - the XMLObject child

### registerIDMappings

public void registerIDMappings(@Nonnull IDIndex idIndex)
Register multiple ID-to-XMLObject mappings for this object's owner's children.

Parameters:
  `idIndex` - the ID-to-XMLObject mapping to register

### deregisterIDMapping

public void deregisterIDMapping(@Nonnull @NotEmpty String id)
Deregister an ID-to-XMLObject mapping for one of this object's owner's children.

Parameters:
  `id` - the ID attribute value of the XMLObject child to deregister

### deregisterIDMappings

public void deregisterIDMappings(@Nonnull IDIndex idIndex)
Deregister multiple ID-to-XMLObject mappings for this object's owner's children.

Parameters:
  `idIndex` - the ID-to-XMLObject mappings to deregister

### lookup

@Nullable public XMLObject lookup(@Nonnull @NotEmpty String id)
Lookup and return the XMLObject identified by the specified ID attribute.

Parameters:
  `id` - the ID attribute value to lookup
Returns:
  the XMLObject identified by the ID attribute value

### isEmpty

public boolean isEmpty()
Return whether the index is currently empty.

Returns:
  true if the index is currently empty

### getIDs

@Nonnull @Unmodifiable @NotLive public Set<String> getIDs()
Get the set of ID strings which are the index keys.

Returns:
  the set of ID strings which are keys to the index

### getIDMappings

@Nonnull @Unmodifiable @NotLive protected Map<String,XMLObject> getIDMappings()
Get the ID-to-XMLObject mappings for this object's owner's children.

Returns:
  the ID-to-XMLObject mapping