com.fasterxml.aalto.dom

## Class OutputElementBase

- java.lang.Object
- - com.fasterxml.aalto.dom.OutputElementBase

- All Implemented Interfaces:
    NamespaceContext
  Direct Known Subclasses:
    DOMOutputElement

      public abstract class OutputElementBase
      extends Object
      implements 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 and Description
    --- | ---
    `protected 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 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 and Description
    --- | ---
    `protected` | `OutputElementBase()` Constructor for the virtual root element
    `protected` | `OutputElementBase(OutputElementBase parent, BijectiveNsMap ns)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addPrefix(String prefix, String uri)`
    `String` | `generateMapping(String prefixBase, String uri, int[] seqArr)`
    `String` | `getDefaultNsUri()`
    `String` | `getExplicitPrefix(String uri)` Method similar to `getPrefix(java.lang.String)`, but one that will not accept the default namespace, only an explicit one.
    `abstract String` | `getNameDesc()`
    `String` | `getNamespaceURI(String prefix)`
    `String` | `getPrefix(String uri)`
    `Iterator<String>` | `getPrefixes(String uri)`
    `int` | `isPrefixValid(String prefix, 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(String uri)`
    `protected abstract void` | `setRootNsContext(NamespaceContext ctxt)`
    `protected void` | `throwOutputError(String msg)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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 NamespaceContext _rootNsContext

      Namespace context end application may have supplied, and that (if given) should be used to augment explicitly defined bindings.

    - #### _defaultNsURI

          protected 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(NamespaceContext ctxt)

    - #### isRoot

          public abstract boolean isRoot()

    - #### getNameDesc

          public abstract 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 String getDefaultNsUri()

    - #### getExplicitPrefix

          public final String getExplicitPrefix(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(String prefix,
                          String nsURI,
                          boolean isElement)
                                  throws 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:
        `XMLStreamException` - True if default (no) prefix is allowed to match a non-default URI (elements); false if not (attributes)

    - #### setDefaultNsUri

          public abstract void setDefaultNsUri(String uri)

    - #### generateMapping

          public final String generateMapping(String prefixBase,
                               String uri,
                               int[] seqArr)

    - #### addPrefix

          public final void addPrefix(String prefix,
                       String uri)

    - #### getNamespaceURI

          public final String getNamespaceURI(String prefix)

      Specified by:
        `getNamespaceURI` in interface `NamespaceContext`

    - #### getPrefix

          public final String getPrefix(String uri)

      Specified by:
        `getPrefix` in interface `NamespaceContext`

    - #### getPrefixes

          public final Iterator<String> getPrefixes(String uri)

      Specified by:
        `getPrefixes` in interface `NamespaceContext`

    - #### throwOutputError

          protected final void throwOutputError(String msg)
                                         throws XMLStreamException

      Throws:
        `XMLStreamException`

Copyright © 2012-2015 FasterXML. All Rights Reserved.