# Class DOMCryptoContext

java.lang.Object
javax.xml.crypto.dom.DOMCryptoContext

All Implemented Interfaces:
  `XMLCryptoContext`

Direct Known Subclasses:
  `DOMSignContext, DOMValidateContext`

public class DOMCryptoContext extends Object implements XMLCryptoContext
This class provides a DOM-specific implementation of the `XMLCryptoContext` interface. It also includes additional methods that are specific to a DOM-based implementation for registering and retrieving elements that contain attributes of type ID.

Since:
  1.6

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `DOMCryptoContext()`
  Default constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `get(Object key)`
  This implementation uses an internal `HashMap` to get the object that the specified key maps to.
  `String`
  `getBaseURI()`
  Returns the base URI.
  `String`
  `getDefaultNamespacePrefix()`
  Returns the default namespace prefix.
  `Element`
  `getElementById(String idValue)`
  Returns the `Element` with the specified ID attribute value.
  `KeySelector`
  `getKeySelector()`
  Returns the key selector for finding a key.
  `String`
  `getNamespacePrefix(String namespaceURI, String defaultPrefix)`
  This implementation uses an internal `HashMap` to get the prefix that the specified URI maps to.
  `Object`
  `getProperty(String name)`
  This implementation uses an internal `HashMap` to get the object that the specified name maps to.
  `URIDereferencer`
  `getURIDereferencer()`
  Returns a `URIDereferencer` that is used to dereference `URIReference`s.
  `Iterator<Map.Entry<String,Element>>`
  `iterator()`
  Returns a read-only iterator over the set of Id/Element mappings of this `DOMCryptoContext`.
  `Object`
  `put(Object key, Object value)`
  This implementation uses an internal `HashMap` to map the key to the specified object.
  `String`
  `putNamespacePrefix(String namespaceURI, String prefix)`
  This implementation uses an internal `HashMap` to map the URI to the specified prefix.
  `void`
  `setBaseURI(String baseURI)`
  Sets the base URI.
  `void`
  `setDefaultNamespacePrefix(String defaultPrefix)`
  Sets the default namespace prefix.
  `void`
  `setIdAttributeNS(Element element, String namespaceURI, String localName)`
  Registers the element's attribute specified by the namespace URI and local name to be of type ID.
  `void`
  `setKeySelector(KeySelector ks)`
  Sets the key selector for finding a key.
  `Object`
  `setProperty(String name, Object value)`
  This implementation uses an internal `HashMap` to map the name to the specified object.
  `void`
  `setURIDereferencer(URIDereferencer dereferencer)`
  Sets a `URIDereferencer` that is used to dereference `URIReference`s.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### DOMCryptoContext

    protected DOMCryptoContext()
    Default constructor. (For invocation by subclass constructors).

- ## Method Details

  - ### getNamespacePrefix

    public String getNamespacePrefix(String namespaceURI, String defaultPrefix)
    This implementation uses an internal `HashMap` to get the prefix that the specified URI maps to. It returns the `defaultPrefix` if it maps to `null`.
    Specified by:
      `getNamespacePrefix` in interface `XMLCryptoContext`
    Parameters:
      `namespaceURI` - a namespace URI
      `defaultPrefix` - the prefix to be returned in the event that the the specified namespace URI has not been bound to a prefix.
    Returns:
      the prefix that is associated with the specified namespace URI, or `defaultPrefix` if the URI is not registered. If the namespace URI is registered but has no prefix, an empty string (`""`) is returned.
    Throws:
      `NullPointerException` - if `namespaceURI` is `null`
    See Also:
      - `XMLCryptoContext.putNamespacePrefix(String, String)`

  - ### putNamespacePrefix

    public String putNamespacePrefix(String namespaceURI, String prefix)
    This implementation uses an internal `HashMap` to map the URI to the specified prefix.
    Specified by:
      `putNamespacePrefix` in interface `XMLCryptoContext`
    Parameters:
      `namespaceURI` - a namespace URI
      `prefix` - a namespace prefix (or `null` to remove any existing mapping). Specifying the empty string (`""`) binds no prefix to the namespace URI.
    Returns:
      the previous prefix associated with the specified namespace URI, or `null` if there was none
    Throws:
      `NullPointerException` - if `namespaceURI` is `null`
    See Also:
      - `XMLCryptoContext.getNamespacePrefix(String, String)`

  - ### getDefaultNamespacePrefix

    public String getDefaultNamespacePrefix()
    Description copied from interface: `XMLCryptoContext`
    Returns the default namespace prefix. The default namespace prefix is the prefix for all namespace URIs not explicitly set by the `putNamespacePrefix` method.
    Specified by:
      `getDefaultNamespacePrefix` in interface `XMLCryptoContext`
    Returns:
      the default namespace prefix, or `null` if none has been set.
    See Also:
      - `XMLCryptoContext.setDefaultNamespacePrefix(String)`

  - ### setDefaultNamespacePrefix

    public void setDefaultNamespacePrefix(String defaultPrefix)
    Description copied from interface: `XMLCryptoContext`
    Sets the default namespace prefix. This sets the namespace prefix for all namespace URIs not explicitly set by the `putNamespacePrefix` method.
    Specified by:
      `setDefaultNamespacePrefix` in interface `XMLCryptoContext`
    Parameters:
      `defaultPrefix` - the default namespace prefix, or `null` to remove the current setting. Specify the empty string (`""`) to bind no prefix.
    See Also:
      - `XMLCryptoContext.getDefaultNamespacePrefix()`

  - ### getBaseURI

    public String getBaseURI()
    Description copied from interface: `XMLCryptoContext`
    Returns the base URI.
    Specified by:
      `getBaseURI` in interface `XMLCryptoContext`
    Returns:
      the base URI, or `null` if not specified
    See Also:
      - `XMLCryptoContext.setBaseURI(String)`

  - ### setBaseURI

    public void setBaseURI(String baseURI)
    Description copied from interface: `XMLCryptoContext`
    Sets the base URI.
    Specified by:
      `setBaseURI` in interface `XMLCryptoContext`
    Parameters:
      `baseURI` - the base URI, or `null` to remove current value
    Throws:
      `IllegalArgumentException` - if `baseURI` is not RFC 2396 compliant
    See Also:
      - `XMLCryptoContext.getBaseURI()`

  - ### getURIDereferencer

    public URIDereferencer getURIDereferencer()
    Description copied from interface: `XMLCryptoContext`
    Returns a `URIDereferencer` that is used to dereference `URIReference`s.
    Specified by:
      `getURIDereferencer` in interface `XMLCryptoContext`
    Returns:
      the `URIDereferencer`, or `null` if not specified
    See Also:
      - `XMLCryptoContext.setURIDereferencer(URIDereferencer)`

  - ### setURIDereferencer

    public void setURIDereferencer(URIDereferencer dereferencer)
    Description copied from interface: `XMLCryptoContext`
    Sets a `URIDereferencer` that is used to dereference `URIReference`s. The specified `URIDereferencer` is used in place of an implementation's default `URIDereferencer`.
    Specified by:
      `setURIDereferencer` in interface `XMLCryptoContext`
    Parameters:
      `dereferencer` - the `URIDereferencer`, or `null` to remove any current setting
    See Also:
      - `XMLCryptoContext.getURIDereferencer()`

  - ### getProperty

    public Object getProperty(String name)
    This implementation uses an internal `HashMap` to get the object that the specified name maps to.
    Specified by:
      `getProperty` in interface `XMLCryptoContext`
    Parameters:
      `name` - the name of the property
    Returns:
      the current value of the specified property, or `null` if it does not have a value
    Throws:
      `NullPointerException` - if `name` is `null`
    See Also:
      - `XMLCryptoContext.setProperty(String, Object)`

  - ### setProperty

    public Object setProperty(String name, Object value)
    This implementation uses an internal `HashMap` to map the name to the specified object.
    Specified by:
      `setProperty` in interface `XMLCryptoContext`
    Parameters:
      `name` - the name of the property
      `value` - the value of the property to be set
    Returns:
      the previous value of the specified property, or `null` if it did not have a value
    Throws:
      `NullPointerException` - if `name` is `null`
    See Also:
      - `XMLCryptoContext.getProperty(String)`

  - ### getKeySelector

    public KeySelector getKeySelector()
    Description copied from interface: `XMLCryptoContext`
    Returns the key selector for finding a key.
    Specified by:
      `getKeySelector` in interface `XMLCryptoContext`
    Returns:
      the key selector, or `null` if not specified
    See Also:
      - `XMLCryptoContext.setKeySelector(KeySelector)`

  - ### setKeySelector

    public void setKeySelector(KeySelector ks)
    Description copied from interface: `XMLCryptoContext`
    Sets the key selector for finding a key.
    Specified by:
      `setKeySelector` in interface `XMLCryptoContext`
    Parameters:
      `ks` - the key selector, or `null` to remove the current setting
    See Also:
      - `XMLCryptoContext.getKeySelector()`

  - ### getElementById

    public Element getElementById(String idValue)
    Returns the `Element` with the specified ID attribute value.

    This implementation uses an internal `HashMap` to get the element that the specified attribute value maps to.

    Parameters:
      `idValue` - the value of the ID
    Returns:
      the `Element` with the specified ID attribute value, or `null` if none.
    Throws:
      `NullPointerException` - if `idValue` is `null`
    See Also:
      - `setIdAttributeNS(Element, String, String)`

  - ### setIdAttributeNS

    public void setIdAttributeNS(Element element, String namespaceURI, String localName)
    Registers the element's attribute specified by the namespace URI and local name to be of type ID. The attribute must have a non-empty value.

    This implementation uses an internal `HashMap` to map the attribute's value to the specified element.

    Parameters:
      `element` - the element
      `namespaceURI` - the namespace URI of the attribute (specify `null` if not applicable)
      `localName` - the local name of the attribute
    Throws:
      `IllegalArgumentException` - if `localName` is not an attribute of the specified element or it does not contain a specific value
      `NullPointerException` - if `element` or `localName` is `null`
    See Also:
      - `getElementById(String)`

  - ### iterator

    public Iterator<Map.Entry<String,Element>> iterator()
    Returns a read-only iterator over the set of Id/Element mappings of this `DOMCryptoContext`. Attempts to modify the set via the `Iterator.remove()` method throw an `UnsupportedOperationException`. The mappings are returned in no particular order. Each element in the iteration is represented as a `Map.Entry`. If the `DOMCryptoContext` is modified while an iteration is in progress, the results of the iteration are undefined.
    Returns:
      a read-only iterator over the set of mappings

  - ### get

    public Object get(Object key)
    This implementation uses an internal `HashMap` to get the object that the specified key maps to.
    Specified by:
      `get` in interface `XMLCryptoContext`
    Parameters:
      `key` - the key whose associated value is to be returned
    Returns:
      the value to which this context maps the specified key, or `null` if there is no mapping for the key
    See Also:
      - `XMLCryptoContext.put(Object, Object)`

  - ### put

    public Object put(Object key, Object value)
    This implementation uses an internal `HashMap` to map the key to the specified object.
    Specified by:
      `put` in interface `XMLCryptoContext`
    Parameters:
      `key` - key with which the specified value is to be associated with
      `value` - value to be associated with the specified key
    Returns:
      the previous value associated with the key, or `null` if there was no mapping for the key
    Throws:
      `IllegalArgumentException` - if some aspect of this key or value prevents it from being stored in this context
    See Also:
      - `XMLCryptoContext.get(Object)`