org.opensaml.xml
Class NamespaceManager

java.lang.Object
  extended by org.opensaml.xml.NamespaceManager

public class NamespaceManager
extends Object

A class which is responsible for managing XML namespace-related data for an XMLObject.

Code which mutates the state of an XMLObject such that XML namespace-related data is also logically changed, should call the appropriate method, based on the type of change being made.


Field Summary
private  Set<Namespace> attrNames
          Registered namespaces of attribute names.
private  Map<String,Namespace> attrValues
          Registered namespaces of attribute values.
private  Namespace contentValue
          Registered namespaces of content values.
private  Set<Namespace> decls
          Explicitly declared namespaces.
static String DEFAULT_NS_TOKEN
          The token used to represent the default namespace in getNonVisibleNamespacePrefixes().
private  Namespace elementName
          XMLObject name namespace.
private  Namespace elementType
          XMLObject type namespace.
private  XMLObject owner
          The owning XMLObject.
private  Set<Namespace> usage
          Indeterminate namespace usage.
private static Namespace XML_NAMESPACE
          The 'xml' namespace.
private static Namespace XSI_NAMESPACE
          The 'xsi' namespace.
 
Constructor Summary
NamespaceManager(XMLObject owningObject)
          Constructor.
 
Method Summary
private  void addNamespace(Set<Namespace> namespaces, Namespace newNamespace)
          Add a Namespace to a set of Namespaces.
private  void addPrefixes(Set<String> prefixes, Collection<Namespace> namespaces)
          Add the prefixes from a collection of namespaces to a set of prefixes.
private  Namespace buildNamespace(QName name)
          Build a Namespace instance from a QName.
private  boolean checkQName(QName name)
          Check whether the supplied QName contains non-empty namespace info and should be managed by the namespace manager.
private  Namespace copyNamespace(Namespace orig)
          Get a copy of a Namespace.
 void deregisterAttributeName(QName attributeName)
          Deregister a namespace-qualified attribute name.
 void deregisterAttributeValue(String attributeID)
          Deregister a QName attribute value.
 void deregisterContentValue()
          Deregister a QName content value.
 void deregisterNamespace(Namespace namespace)
          Deregister usage of a namespace in some indeterminate fashion.
 void deregisterNamespaceDeclaration(Namespace namespace)
          Deregister a namespace declaration.
static String generateAttributeID(QName name)
          From an QName representing a qualified attribute name, generate an attribute ID suitable for use in registerAttributeValue(String, QName) and deregisterAttributeValue(String).
 Set<Namespace> getAllNamespacesInSubtreeScope()
          Get the set of all namespaces which are in scope within the subtree rooted at the owning XMLObject.
private  Namespace getElementNameNamespace()
          Return a Namespace instance representing the namespace of the element name.
private  Namespace getElementTypeNamespace()
          Return a Namespace instance representing the namespace of the element type, if known.
 Set<Namespace> getNamespaces()
          Get the set of namespaces currently in use on the owning XMLObject.
private  Set<Namespace> getNonVisibleNamespaceCandidates()
          Get the set of non-visibly used namespaces used on the owning XMLObject (only the owner, not the owner's children).
 Set<String> getNonVisibleNamespacePrefixes()
          Obtain the set of namespace prefixes used in a non-visible manner on owning XMLObject and its children.
 Set<Namespace> getNonVisibleNamespaces()
          Obtain the set of namespaces used in a non-visible manner on owning XMLObject and its children.
 XMLObject getOwner()
          Get the owning XMLObject instance.
private  Set<Namespace> getVisibleNamespaces()
          Get the set of namespaces which are currently visibly-used on the owning XMLObject (only the owner, not its children).
private  Set<Namespace> mergeNamespaceCollections(Collection<Namespace>... namespaces)
          Merge 2 or more Namespace collections into a single set, with equivalence semantics as described in addNamespace(Set, Namespace).
 void registerAttributeName(QName attributeName)
          Register a namespace-qualified attribute name.
 void registerAttributeValue(String attributeID, QName attributeValue)
          Register a QName attribute value.
 void registerContentValue(QName content)
          Register a QName element content value.
 void registerElementName(QName name)
          Register the owning XMLObject's element name.
 void registerElementType(QName type)
          Register the owning XMLObject's element type, if explicitly declared via an xsi:type.
 void registerNamespace(Namespace namespace)
          Register usage of a namespace in some indeterminate fashion.
 void registerNamespaceDeclaration(Namespace namespace)
          Register a namespace declaration.
private  void removeNamespace(Set<Namespace> namespaces, Namespace oldNamespace)
          Remove a Namespace from a set of Namespaces.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_NS_TOKEN

public static final String DEFAULT_NS_TOKEN
The token used to represent the default namespace in getNonVisibleNamespacePrefixes().

See Also:
Constant Field Values

XML_NAMESPACE

private static final Namespace XML_NAMESPACE
The 'xml' namespace.


XSI_NAMESPACE

private static final Namespace XSI_NAMESPACE
The 'xsi' namespace.


owner

private XMLObject owner
The owning XMLObject.


elementName

private Namespace elementName
XMLObject name namespace.


elementType

private Namespace elementType
XMLObject type namespace.


decls

private Set<Namespace> decls
Explicitly declared namespaces.


usage

private Set<Namespace> usage
Indeterminate namespace usage.


attrNames

private Set<Namespace> attrNames
Registered namespaces of attribute names.


attrValues

private Map<String,Namespace> attrValues
Registered namespaces of attribute values.


contentValue

private Namespace contentValue
Registered namespaces of content values.

Constructor Detail

NamespaceManager

public NamespaceManager(XMLObject owningObject)
Constructor.

Parameters:
owningObject - the XMLObject whose namespace info is to be managed
Method Detail

generateAttributeID

public static String generateAttributeID(QName name)
From an QName representing a qualified attribute name, generate an attribute ID suitable for use in registerAttributeValue(String, QName) and deregisterAttributeValue(String).

Parameters:
name - attribute name as a QName
Returns:
a string attribute ID

getOwner

public XMLObject getOwner()
Get the owning XMLObject instance.

Returns:
the owning XMLObject

getNamespaces

public Set<Namespace> getNamespaces()
Get the set of namespaces currently in use on the owning XMLObject.

Returns:
the set of namespaces

registerNamespace

public void registerNamespace(Namespace namespace)
Register usage of a namespace in some indeterminate fashion.

Other methods which indicate specific usage should be preferred over this one. This method exists primarily for backward-compatibility support for XMLObject.addNamespace(Namespace).

Parameters:
namespace - namespace to register

deregisterNamespace

public void deregisterNamespace(Namespace namespace)
Deregister usage of a namespace in some indeterminate fashion.

Other methods which indicate specific usage should be preferred over this one. This method exists primarily for backward-compatibility support for XMLObject.removeNamespace(Namespace).

Parameters:
namespace - namespace to deregister

registerNamespaceDeclaration

public void registerNamespaceDeclaration(Namespace namespace)
Register a namespace declaration.

Parameters:
namespace - the namespace to register

deregisterNamespaceDeclaration

public void deregisterNamespaceDeclaration(Namespace namespace)
Deregister a namespace declaration.

Parameters:
namespace - the namespace to deregister

registerAttributeName

public void registerAttributeName(QName attributeName)
Register a namespace-qualified attribute name.

Parameters:
attributeName - the attribute name to register

deregisterAttributeName

public void deregisterAttributeName(QName attributeName)
Deregister a namespace-qualified attribute name.

Parameters:
attributeName - the attribute name to deregister

registerAttributeValue

public void registerAttributeValue(String attributeID,
                                   QName attributeValue)
Register a QName attribute value.

Parameters:
attributeID - unique identifier for the attribute within the XMLObject's content model
attributeValue - the QName value to register

deregisterAttributeValue

public void deregisterAttributeValue(String attributeID)
Deregister a QName attribute value.

Parameters:
attributeID - unique identifier for the attribute within the XMLObject's content model

registerContentValue

public void registerContentValue(QName content)
Register a QName element content value.

Parameters:
content - the QName value to register

deregisterContentValue

public void deregisterContentValue()
Deregister a QName content value.


getNonVisibleNamespacePrefixes

public Set<String> getNonVisibleNamespacePrefixes()
Obtain the set of namespace prefixes used in a non-visible manner on owning XMLObject and its children.

The primary use case for this information is to support the inclusive prefixes information that may optionally be supplied as a part of XML exclusive canonicalization.

Returns:
the set of non-visibly used namespace prefixes

getNonVisibleNamespaces

public Set<Namespace> getNonVisibleNamespaces()
Obtain the set of namespaces used in a non-visible manner on owning XMLObject and its children.

The primary use case for this information is to support the inclusive prefixes information that may optionally be supplied as a part of XML exclusive canonicalization.

The Namespace instances themselves will be copied before being returned, so modifications to them do not affect the actual Namespace instances in the underlying tree. The original alwaysDeclare property is not preserved.

Returns:
the set of non-visibly used namespaces

getAllNamespacesInSubtreeScope

public Set<Namespace> getAllNamespacesInSubtreeScope()
Get the set of all namespaces which are in scope within the subtree rooted at the owning XMLObject.

The Namespace instances themselves will be copied before being returned, so modifications to them do not affect the actual Namespace instances in the underlying tree. The original alwaysDeclare property is not preserved.

Returns:
set of all namespaces in scope for the owning object

registerElementName

public void registerElementName(QName name)
Register the owning XMLObject's element name.

Parameters:
name - the element name to register

registerElementType

public void registerElementType(QName type)
Register the owning XMLObject's element type, if explicitly declared via an xsi:type.

Parameters:
type - the element type to register

getElementNameNamespace

private Namespace getElementNameNamespace()
Return a Namespace instance representing the namespace of the element name.

Returns:
the element name's namespace

getElementTypeNamespace

private Namespace getElementTypeNamespace()
Return a Namespace instance representing the namespace of the element type, if known.

Returns:
the element type's namespace

buildNamespace

private Namespace buildNamespace(QName name)
Build a Namespace instance from a QName.

Parameters:
name - the source QName
Returns:
a Namespace built using the information in the QName

addNamespace

private void addNamespace(Set<Namespace> namespaces,
                          Namespace newNamespace)
Add a Namespace to a set of Namespaces. Namespaces with identical URI and prefix will be treated as equivalent. An alwaysDeclare property of true will take precedence over a value of false.

Parameters:
namespaces - the set of namespaces
newNamespace - the namespace to add to the set

removeNamespace

private void removeNamespace(Set<Namespace> namespaces,
                             Namespace oldNamespace)
Remove a Namespace from a set of Namespaces. Equivalence of Namespace instances will be based on namespace URI and prefix only. The alwaysDeclare property will be ignored for purpose of equivalence.

Parameters:
namespaces - the set of namespaces
oldNamespace - the namespace to add to the set

mergeNamespaceCollections

private Set<Namespace> mergeNamespaceCollections(Collection<Namespace>... namespaces)
Merge 2 or more Namespace collections into a single set, with equivalence semantics as described in addNamespace(Set, Namespace).

Parameters:
namespaces - list of Namespaces to merge
Returns:
the a new set of merged Namespaces

getVisibleNamespaces

private Set<Namespace> getVisibleNamespaces()
Get the set of namespaces which are currently visibly-used on the owning XMLObject (only the owner, not its children).

Namespaces returned in the set are copied from the ones held in the manager. The alwaysDeclare property is not preserved.

Returns:
the set of visibly-used namespaces

getNonVisibleNamespaceCandidates

private Set<Namespace> getNonVisibleNamespaceCandidates()
Get the set of non-visibly used namespaces used on the owning XMLObject (only the owner, not the owner's children).

Namespaces returned in the set are copied from the ones held in the manager. The alwaysDeclare property is not preserved.

Returns:
the set of non-visibly-used namespaces

copyNamespace

private Namespace copyNamespace(Namespace orig)
Get a copy of a Namespace. The alwaysDeclare property is not preserved.

Parameters:
orig - the namespace instance to copy
Returns:
a copy of the specified namespace

addPrefixes

private void addPrefixes(Set<String> prefixes,
                         Collection<Namespace> namespaces)
Add the prefixes from a collection of namespaces to a set of prefixes. The value used to represent the default namespace will be normalized to DEFAULT_NS_TOKEN.

Parameters:
prefixes - the set of prefixes to which to add
namespaces - the source set of Namespaces

checkQName

private boolean checkQName(QName name)
Check whether the supplied QName contains non-empty namespace info and should be managed by the namespace manager.

Parameters:
name - the QName to check
Returns:
true if the QName contains non-empty namespace info and should be managed, false otherwise


Copyright © 1999-2013. All Rights Reserved.