Package org.opensaml.core.xml.util

# Class AttributeMap

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

All Implemented Interfaces:
  `Map<QName,String>`

@NotThreadSafe public class AttributeMap extends Object implements Map<QName,String>
A map of attribute names and attribute values that invalidates the DOM of the attribute owning XMLObject when the attributes change.

## Nested Class Summary

## Nested classes/interfaces inherited from interface java.util.Map

`Map.Entry<K extends Object,V extends Object>`

## Field Summary

Fields
Modifier and Type
Field
Description
`private final XMLObject`
`attributeOwner`
XMLObject owning the attributes.
`private Map<QName,String>`
`attributes`
Map of attributes.
`private Set<QName>`
`idAttribNames`
Set of attribute QNames which have been locally registered as having an ID type within this AttributeMap instance.
`private boolean`
`inferQNameValues`
Flag indicating whether an attempt should be made to infer QName values, if attribute is not registered as a QName type.
`private final org.slf4j.Logger`
`log`
Logger.
`private Set<QName>`
`qnameAttribNames`
Set of attribute QNames which have been locally registered as having an QName value type within this AttributeMap instance.

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`private void`
`checkAndDeregisterQNameValue(QName attributeName, String attributeValue)`
Check whether the attribute value is a QName type, and if it is, deregister it with the owner's namespace manger.
`private void`
`checkAndRegisterQNameValue(QName attributeName, String attributeValue)`
Check whether the attribute value is a QName type, and if it is, register it with the owner's namespace manger.
`private QName`
`checkQName(QName attributeName, String attributeValue)`
Check where the attribute value is a QName type, and if so, return the QName.
`void`
`clear()`
`private String`
`constructAttributeValue(QName attributeValue)`
Construct the string representation of a QName attribute value.
`boolean`
`containsKey(Object key)`
`boolean`
`containsValue(Object value)`
`void`
`deregisterID(QName attributeName)`
Deregister an attribute as having a type of ID.
`void`
`deregisterQNameAttribute(QName attributeName)`
Deregister an attribute as having a type of QName.
`private void`
`deregisterQNameValue(QName attributeName)`
Deregister a QName attribute value with the owner's namespace manger.
`Set<Map.Entry<QName,String>>`
`entrySet()`
Returns the set of entries.
`String`
`get(Object key)`
`boolean`
`isEmpty()`
`boolean`
`isIDAttribute(QName attributeName)`
Check whether a given attribute is locally registered as having an ID type within this AttributeMap instance.
`boolean`
`isInferQNameValues()`
Get the flag indicating whether an attempt should be made to infer QName values, if attribute is not registered via a configuration as a QName type.
`boolean`
`isQNameAttribute(QName attributeName)`
Check whether a given attribute is known to have a QName type.
`Set<QName>`
`keySet()`
Returns the set of keys.
`String`
`put(QName attributeName, String value)`
`QName`
`put(QName attributeName, QName value)`
Set an attribute value as a QName.
`void`
`putAll(Map<? extends QName,? extends String> t)`
`void`
`registerID(QName attributeName)`
Register an attribute as having a type of ID.
`void`
`registerQNameAttribute(QName attributeName)`
Register an attribute as having a type of QName.
`private void`
`registerQNameValue(QName attributeName, QName attributeValue)`
Register a QName attribute value with the owner's namespace manger.
`private void`
`releaseDOM()`
Releases the DOM caching associated XMLObject and its ancestors.
`String`
`remove(Object key)`
`private QName`
`resolveQName(String attributeValue, boolean isDefaultNSOK)`
Attempt to resolve the specified attribute value into a QName.
`void`
`setInferQNameValues(boolean flag)`
Set the flag indicating whether an attempt should be made to infer QName values, if attribute is not registered via a configuration as a QName type.
`int`
`size()`
`Collection<String>`
`values()`
Returns the values in this map.

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

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

### Methods inherited from interface java.util.Map

`compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll`

## Field Details

### log

@Nonnull private final org.slf4j.Logger log
Logger.

### attributeOwner

@Nonnull private final XMLObject attributeOwner
XMLObject owning the attributes.

### attributes

@Nonnull private Map<QName,String> attributes
Map of attributes.

### idAttribNames

@Nonnull private Set<QName> idAttribNames
Set of attribute QNames which have been locally registered as having an ID type within this AttributeMap instance.

### qnameAttribNames

@Nonnull private Set<QName> qnameAttribNames
Set of attribute QNames which have been locally registered as having an QName value type within this AttributeMap instance.

### inferQNameValues

private boolean inferQNameValues
Flag indicating whether an attempt should be made to infer QName values, if attribute is not registered as a QName type.

## Constructor Details

### AttributeMap

public AttributeMap(@Nonnull XMLObject newOwner)
Constructor.

Parameters:
  `newOwner` - the XMLObject that owns these attributes

## Method Details

### put

public String put(QName attributeName, String value)

Specified by:
  `put` in interface `Map<QName,String>`

### put

public QName put(QName attributeName, QName value)
Set an attribute value as a QName. This method takes care of properly registering and deregistering the namespace information associated with the new QName being added, and with the old QName being possibly removed.

Parameters:
  `attributeName` - the attribute name
  `value` - the QName attribute value
Returns:
  the old attribute value, possibly null

### clear

public void clear()

Specified by:
  `clear` in interface `Map<QName,String>`

### keySet

public Set<QName> keySet()
Returns the set of keys.

Specified by:
  `keySet` in interface `Map<QName,String>`
Returns:
  unmodifiable set of keys

### size

public int size()

Specified by:
  `size` in interface `Map<QName,String>`

### isEmpty

public boolean isEmpty()

Specified by:
  `isEmpty` in interface `Map<QName,String>`

### containsKey

public boolean containsKey(Object key)

Specified by:
  `containsKey` in interface `Map<QName,String>`

### containsValue

public boolean containsValue(Object value)

Specified by:
  `containsValue` in interface `Map<QName,String>`

### get

public String get(Object key)

Specified by:
  `get` in interface `Map<QName,String>`

### remove

public String remove(Object key)

Specified by:
  `remove` in interface `Map<QName,String>`

### putAll

public void putAll(Map<? extends QName,? extends String> t)

Specified by:
  `putAll` in interface `Map<QName,String>`

### values

public Collection<String> values()
Returns the values in this map.

Specified by:
  `values` in interface `Map<QName,String>`
Returns:
  an unmodifiable collection of values

### entrySet

public Set<Map.Entry<QName,String>> entrySet()
Returns the set of entries.

Specified by:
  `entrySet` in interface `Map<QName,String>`
Returns:
  unmodifiable set of entries

### registerID

public void registerID(@Nonnull QName attributeName)
Register an attribute as having a type of ID.

Parameters:
  `attributeName` - the QName of the ID attribute to be registered

### deregisterID

public void deregisterID(@Nonnull QName attributeName)
Deregister an attribute as having a type of ID.

Parameters:
  `attributeName` - the QName of the ID attribute to be de-registered

### isIDAttribute

public boolean isIDAttribute(@Nonnull QName attributeName)
Check whether a given attribute is locally registered as having an ID type within this AttributeMap instance.

Parameters:
  `attributeName` - the QName of the attribute to be checked for ID type.
Returns:
  true if attribute is registered as having an ID type.

### registerQNameAttribute

public void registerQNameAttribute(@Nonnull QName attributeName)
Register an attribute as having a type of QName.

Parameters:
  `attributeName` - the name of the QName-valued attribute to be registered

### deregisterQNameAttribute

public void deregisterQNameAttribute(@Nonnull QName attributeName)
Deregister an attribute as having a type of QName.

Parameters:
  `attributeName` - the name of the QName-valued attribute to be registered

### isQNameAttribute

public boolean isQNameAttribute(@Nonnull QName attributeName)
Check whether a given attribute is known to have a QName type.

Parameters:
  `attributeName` - the QName of the attribute to be checked for QName type.
Returns:
  true if attribute is registered as having an QName type.

### isInferQNameValues

public boolean isInferQNameValues()
Get the flag indicating whether an attempt should be made to infer QName values, if attribute is not registered via a configuration as a QName type. Default is false.

Returns:
  true if QName types should be inferred, false if not

### setInferQNameValues

public void setInferQNameValues(boolean flag)
Set the flag indicating whether an attempt should be made to infer QName values, if attribute is not registered via a configuration as a QName type. Default is false.

Parameters:
  `flag` - true if QName types should be inferred, false if not

### releaseDOM

private void releaseDOM()
Releases the DOM caching associated XMLObject and its ancestors.

### checkAndRegisterQNameValue

private void checkAndRegisterQNameValue(@Nonnull QName attributeName, @Nullable String attributeValue)
Check whether the attribute value is a QName type, and if it is, register it with the owner's namespace manger.

Parameters:
  `attributeName` - the attribute name
  `attributeValue` - the attribute value

### registerQNameValue

private void registerQNameValue(@Nonnull QName attributeName, @Nonnull QName attributeValue)
Register a QName attribute value with the owner's namespace manger.

Parameters:
  `attributeName` - the attribute name
  `attributeValue` - the attribute value

### checkAndDeregisterQNameValue

private void checkAndDeregisterQNameValue(@Nonnull QName attributeName, @Nullable String attributeValue)
Check whether the attribute value is a QName type, and if it is, deregister it with the owner's namespace manger.

Parameters:
  `attributeName` - the attribute name
  `attributeValue` - the attribute value

### deregisterQNameValue

private void deregisterQNameValue(@Nonnull QName attributeName)
Deregister a QName attribute value with the owner's namespace manger.

Parameters:
  `attributeName` - the attribute name whose QName attribute value should be deregistered

### checkQName

private QName checkQName(@Nonnull QName attributeName, @Nullable String attributeValue)
Check where the attribute value is a QName type, and if so, return the QName.

Parameters:
  `attributeName` - the attribute name
  `attributeValue` - the attribute value
Returns:
  the QName if the attribute value is a QName type, otherwise null

### resolveQName

private QName resolveQName(@Nullable String attributeValue, boolean isDefaultNSOK)
Attempt to resolve the specified attribute value into a QName.

Parameters:
  `attributeValue` - the value to evaluate
  `isDefaultNSOK` - flag indicating whether resolution should be attempted if the prefix is null, that is, the value is considered to be be potentially in the default XML namespace
Returns:
  the QName, or null if unable to resolve into a QName

### constructAttributeValue

@Nullable private String constructAttributeValue(@Nonnull QName attributeValue)
Construct the string representation of a QName attribute value.

Parameters:
  `attributeValue` - the QName to process
Returns:
  the attribute value string representation of the QName