Package com.fasterxml.aalto.dom
Class OutputElementBase
- java.lang.Object
-
- com.fasterxml.aalto.dom.OutputElementBase
-
- All Implemented Interfaces:
javax.xml.namespace.NamespaceContext
- Direct Known Subclasses:
DOMOutputElement
public abstract class OutputElementBase extends java.lang.Object implements javax.xml.namespace.NamespaceContext
Class that encapsulates information about a specific element in virtual output stack for namespace-aware writers. It provides support for URI-to-prefix mappings as well as namespace mapping generation.One noteworthy feature of the class is that it is designed to allow "short-term recycling", ie. instances can be reused within context of a simple document output. While reuse/recycling of such lightweight object is often useless or even counter productive, here it may be worth using, due to simplicity of the scheme (basically using a very simple free-elements linked list).
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
_defaultNsURI
protected BijectiveNsMap
_nsMapping
Mapping of namespace prefixes to URIs and back.protected boolean
_nsMapShared
True, if_nsMapping
is a shared copy from the parent; false if a local copy was created (which happens when namespaces get bound etc).protected javax.xml.namespace.NamespaceContext
_rootNsContext
Namespace context end application may have supplied, and that (if given) should be used to augment explicitly defined bindings.static int
PREFIX_MISBOUND
static int
PREFIX_OK
static int
PREFIX_UNBOUND
-
Constructor Summary
Constructors Modifier Constructor Description protected
OutputElementBase()
Constructor for the virtual root elementprotected
OutputElementBase(OutputElementBase parent, BijectiveNsMap ns)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addPrefix(java.lang.String prefix, java.lang.String uri)
java.lang.String
generateMapping(java.lang.String prefixBase, java.lang.String uri, int[] seqArr)
java.lang.String
getDefaultNsUri()
java.lang.String
getExplicitPrefix(java.lang.String uri)
Method similar togetPrefix(java.lang.String)
, but one that will not accept the default namespace, only an explicit one.abstract java.lang.String
getNameDesc()
java.lang.String
getNamespaceURI(java.lang.String prefix)
java.lang.String
getPrefix(java.lang.String uri)
java.util.Iterator<java.lang.String>
getPrefixes(java.lang.String uri)
int
isPrefixValid(java.lang.String prefix, java.lang.String nsURI, boolean isElement)
Method that verifies that passed-in prefix indeed maps to the specified namespace URI; and depending on how it goes returns a status for caller.abstract boolean
isRoot()
protected void
relink(OutputElementBase parent)
Method called to reuse a pooled instance.abstract void
setDefaultNsUri(java.lang.String uri)
protected abstract void
setRootNsContext(javax.xml.namespace.NamespaceContext ctxt)
protected void
throwOutputError(java.lang.String msg)
-
-
-
Field Detail
-
PREFIX_UNBOUND
public static final int PREFIX_UNBOUND
- See Also:
- Constant Field Values
-
PREFIX_OK
public static final int PREFIX_OK
- See Also:
- Constant Field Values
-
PREFIX_MISBOUND
public static final int PREFIX_MISBOUND
- See Also:
- Constant Field Values
-
_rootNsContext
protected javax.xml.namespace.NamespaceContext _rootNsContext
Namespace context end application may have supplied, and that (if given) should be used to augment explicitly defined bindings.
-
_defaultNsURI
protected java.lang.String _defaultNsURI
-
_nsMapping
protected BijectiveNsMap _nsMapping
Mapping of namespace prefixes to URIs and back.
-
_nsMapShared
protected boolean _nsMapShared
True, if_nsMapping
is a shared copy from the parent; false if a local copy was created (which happens when namespaces get bound etc).
-
-
Constructor Detail
-
OutputElementBase
protected OutputElementBase()
Constructor for the virtual root element
-
OutputElementBase
protected OutputElementBase(OutputElementBase parent, BijectiveNsMap ns)
-
-
Method Detail
-
relink
protected void relink(OutputElementBase parent)
Method called to reuse a pooled instance.
-
setRootNsContext
protected abstract void setRootNsContext(javax.xml.namespace.NamespaceContext ctxt)
-
isRoot
public abstract boolean isRoot()
-
getNameDesc
public abstract java.lang.String getNameDesc()
- Returns:
- String presentation of the fully-qualified name, in "prefix:localName" format (no URI). Useful for error and debugging messages.
-
getDefaultNsUri
public final java.lang.String getDefaultNsUri()
-
getExplicitPrefix
public final java.lang.String getExplicitPrefix(java.lang.String uri)
Method similar togetPrefix(java.lang.String)
, but one that will not accept the default namespace, only an explicit one. Usually used when trying to find a prefix for attributes.
-
isPrefixValid
public final int isPrefixValid(java.lang.String prefix, java.lang.String nsURI, boolean isElement) throws javax.xml.stream.XMLStreamException
Method that verifies that passed-in prefix indeed maps to the specified namespace URI; and depending on how it goes returns a status for caller.- Parameters:
isElement
- If true, rules for the default NS are those of elements (ie. empty prefix can map to non-default namespace); if false, rules are those of attributes (only non-default prefix can map to a non-default namespace).- Returns:
- PREFIX_OK, if passed-in prefix matches matched-in namespace URI in current scope; PREFIX_UNBOUND if it's not bound to anything, and PREFIX_MISBOUND if it's bound to another URI.
- Throws:
javax.xml.stream.XMLStreamException
- True if default (no) prefix is allowed to match a non-default URI (elements); false if not (attributes)
-
setDefaultNsUri
public abstract void setDefaultNsUri(java.lang.String uri)
-
generateMapping
public final java.lang.String generateMapping(java.lang.String prefixBase, java.lang.String uri, int[] seqArr)
-
addPrefix
public final void addPrefix(java.lang.String prefix, java.lang.String uri)
-
getNamespaceURI
public final java.lang.String getNamespaceURI(java.lang.String prefix)
- Specified by:
getNamespaceURI
in interfacejavax.xml.namespace.NamespaceContext
-
getPrefix
public final java.lang.String getPrefix(java.lang.String uri)
- Specified by:
getPrefix
in interfacejavax.xml.namespace.NamespaceContext
-
getPrefixes
public final java.util.Iterator<java.lang.String> getPrefixes(java.lang.String uri)
- Specified by:
getPrefixes
in interfacejavax.xml.namespace.NamespaceContext
-
throwOutputError
protected final void throwOutputError(java.lang.String msg) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
-