Class 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  
    • 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 to getPrefix(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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • _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
    • 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 to getPrefix(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 interface javax.xml.namespace.NamespaceContext
      • getPrefix

        public final java.lang.String getPrefix​(java.lang.String uri)
        Specified by:
        getPrefix in interface javax.xml.namespace.NamespaceContext
      • getPrefixes

        public final java.util.Iterator<java.lang.String> getPrefixes​(java.lang.String uri)
        Specified by:
        getPrefixes in interface javax.xml.namespace.NamespaceContext
      • throwOutputError

        protected final void throwOutputError​(java.lang.String msg)
                                       throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException