Package org.opensaml.core.xml
Class NamespaceManager
java.lang.Object
org.opensaml.core.xml.NamespaceManager
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
FieldsModifier and TypeFieldDescriptionRegistered namespaces of attribute names.Registered namespaces of attribute values.private NamespaceRegistered namespaces of content values.Explicitly declared namespaces.static final StringThe token used to represent the default namespace ingetNonVisibleNamespacePrefixes().private NamespaceXMLObject name namespace.private NamespaceXMLObject type namespace.private final XMLObjectThe owning XMLObject.private static final NamespaceThe 'xml' namespace.private static final NamespaceThe 'xsi' namespace. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddNamespace(Set<Namespace> namespaces, Namespace newNamespace) Add a Namespace to a set of Namespaces.private voidaddPrefixes(Set<String> prefixes, Collection<Namespace> namespaces) Add the prefixes from a collection of namespaces to a set of prefixes.private NamespacebuildNamespace(QName name) private booleancheckQName(QName name) Check whether the supplied QName contains non-empty namespace info and should be managed by the namespace manager.voidderegisterAttributeName(QName attributeName) Deregister a namespace-qualified attribute name.voidderegisterAttributeValue(String attributeID) Deregister a QName attribute value.voidDeregister a QName content value.voidderegisterNamespaceDeclaration(Namespace namespace) Deregister a namespace declaration.static StringgenerateAttributeID(QName name) From a QName representing a qualified attribute name, generate an attribute ID suitable for use inregisterAttributeValue(String, QName)andderegisterAttributeValue(String).Get the set of all namespaces which are in scope within the subtree rooted at the owning XMLObject.private NamespaceReturn a Namespace instance representing the namespace of the element name.private NamespaceReturn a Namespace instance representing the namespace of the element type, if known.Get the set of namespace declarations registered on the owning XMLObject.Get the set of namespaces currently in use on the owning XMLObject.Get the set of non-visibly used namespaces used on the owning XMLObject (only the owner, not the owner's children).Obtain the set of namespace prefixes used in a non-visible manner on owning XMLObject and its children.Obtain the set of namespaces used in a non-visible manner on owning XMLObject and its children.getOwner()Get the owning XMLObject instance.Get the set of namespaces which are currently visibly-used on the owning XMLObject (only the owner, not its children).mergeNamespaceCollections(Collection<Namespace>... namespaces) Merge 2 or more Namespace collections into a single set.voidregisterAttributeName(QName attributeName) Register a namespace-qualified attribute name.voidregisterAttributeValue(String attributeID, QName attributeValue) Register a QName attribute value.voidregisterContentValue(QName content) Register a QName element content value.voidregisterElementName(QName name) Register the owning XMLObject's element name.voidregisterElementType(QName type) Register the owning XMLObject's element type, if explicitly declared via an xsi:type.voidregisterNamespaceDeclaration(Namespace namespace) Register a namespace declaration.private voidremoveNamespace(Set<Namespace> namespaces, Namespace oldNamespace) Remove a Namespace from a set of Namespaces.
-
Field Details
-
DEFAULT_NS_TOKEN
The token used to represent the default namespace ingetNonVisibleNamespacePrefixes().- See Also:
-
XML_NAMESPACE
The 'xml' namespace. -
XSI_NAMESPACE
The 'xsi' namespace. -
owner
The owning XMLObject. -
elementName
XMLObject name namespace. -
elementType
XMLObject type namespace. -
decls
Explicitly declared namespaces. -
attrNames
Registered namespaces of attribute names. -
attrValues
Registered namespaces of attribute values. -
contentValue
Registered namespaces of content values.
-
-
Constructor Details
-
NamespaceManager
Constructor.- Parameters:
owningObject- the XMLObject whose namespace info is to be managed
-
-
Method Details
-
generateAttributeID
From a QName representing a qualified attribute name, generate an attribute ID suitable for use inregisterAttributeValue(String, QName)andderegisterAttributeValue(String).- Parameters:
name- attribute name as a QName- Returns:
- a string attribute ID
-
getOwner
Get the owning XMLObject instance.- Returns:
- the owning XMLObject
-
getNamespaces
Get the set of namespaces currently in use on the owning XMLObject.- Returns:
- the unmodifiable set of namespaces
-
registerNamespaceDeclaration
Register a namespace declaration.- Parameters:
namespace- the namespace to register
-
deregisterNamespaceDeclaration
Deregister a namespace declaration.- Parameters:
namespace- the namespace to deregister
-
getNamespaceDeclarations
Get the set of namespace declarations registered on the owning XMLObject.- Returns:
- the set of namespace declarations
-
registerAttributeName
Register a namespace-qualified attribute name.- Parameters:
attributeName- the attribute name to register
-
deregisterAttributeName
Deregister a namespace-qualified attribute name.- Parameters:
attributeName- the attribute name to deregister
-
registerAttributeValue
Register a QName attribute value.- Parameters:
attributeID- unique identifier for the attribute within the XMLObject's content modelattributeValue- the QName value to register
-
deregisterAttributeValue
Deregister a QName attribute value.- Parameters:
attributeID- unique identifier for the attribute within the XMLObject's content model
-
registerContentValue
Register a QName element content value.- Parameters:
content- the QName value to register
-
deregisterContentValue
public void deregisterContentValue()Deregister a QName content value. -
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
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.
- Returns:
- the set of non-visibly used namespaces
-
getAllNamespacesInSubtreeScope
Get the set of all namespaces which are in scope within the subtree rooted at the owning XMLObject.- Returns:
- set of all namespaces in scope for the owning object
-
registerElementName
Register the owning XMLObject's element name.- Parameters:
name- the element name to register
-
registerElementType
Register the owning XMLObject's element type, if explicitly declared via an xsi:type.- Parameters:
type- the element type to register
-
getElementNameNamespace
Return a Namespace instance representing the namespace of the element name.- Returns:
- the element name's namespace
-
getElementTypeNamespace
Return a Namespace instance representing the namespace of the element type, if known.- Returns:
- the element type's namespace
-
buildNamespace
- Parameters:
name- the source QName- Returns:
- a Namespace built using the information in the QName
-
addNamespace
private void addNamespace(@Nonnull @Live Set<Namespace> namespaces, @Nullable Namespace newNamespace) Add a Namespace to a set of Namespaces. Namespaces with identical URI and prefix will be treated as equivalent.- Parameters:
namespaces- the set of namespacesnewNamespace- the namespace to add to the set
-
removeNamespace
private void removeNamespace(@Nonnull @Live Set<Namespace> namespaces, @Nullable Namespace oldNamespace) Remove a Namespace from a set of Namespaces.- Parameters:
namespaces- the set of namespacesoldNamespace- the namespace to add to the set
-
mergeNamespaceCollections
@SafeVarargs @Nonnull @Unmodifiable @NotLive private Set<Namespace> mergeNamespaceCollections(@Nonnull Collection<Namespace>... namespaces) Merge 2 or more Namespace collections into a single set.- Parameters:
namespaces- list of Namespaces to merge- Returns:
- the a new set of merged Namespaces
-
getVisibleNamespaces
Get the set of namespaces which are currently visibly-used on the owning XMLObject (only the owner, not its children).- Returns:
- the set of visibly-used namespaces
-
getNonVisibleNamespaceCandidates
Get the set of non-visibly used namespaces used on the owning XMLObject (only the owner, not the owner's children).- Returns:
- the set of non-visibly-used namespaces
-
addPrefixes
private void addPrefixes(@Nonnull @Live Set<String> prefixes, @Nonnull 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 toDEFAULT_NS_TOKEN.- Parameters:
prefixes- the set of prefixes to which to addnamespaces- the source set of Namespaces
-
checkQName
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
-