org.opensaml.xml.util
Class AttributeMap

java.lang.Object
  extended by org.opensaml.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. Note:


Nested Class Summary
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Field Summary
private  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  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
AttributeMap(XMLObject newOwner)
          Constructor.
 
Method Summary
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.
 QName put(QName attributeName, QName value)
          Set an attribute value as a QName.
 String put(QName attributeName, String value)
          
 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
equals, hashCode
 

Field Detail

log

private final Logger log
Logger.


attributeOwner

private 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 Detail

AttributeMap

public AttributeMap(XMLObject newOwner)
             throws NullPointerException
Constructor.

Parameters:
newOwner - the XMLObject that owns these attributes
Throws:
NullPointerException - thrown if the given XMLObject is null
Method Detail

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


Copyright © 1999-2013. All Rights Reserved.