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.
  • Field Details

    • log

      private final org.slf4j.Logger log
      Logger.
    • attributeOwner

      private final XMLObject attributeOwner
      XMLObject owning the attributes.
    • attributes

      private Map<QName,​String> attributes
      Map of attributes.
    • idAttribNames

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

      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​(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​(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​(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​(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​(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​(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​(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.
      Parameters:
      attributeName - the attribute name
      attributeValue - the attribute value
    • registerQNameValue

      private void registerQNameValue​(QName attributeName, 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​(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.
      Parameters:
      attributeName - the attribute name
      attributeValue - the attribute value
    • deregisterQNameValue

      private void deregisterQNameValue​(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​(QName attributeName, 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​(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

      private String constructAttributeValue​(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