# 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`

## 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)`