## javanet.staxutils
Class BaseXMLEventWriter

    java.lang.Object
      javanet.staxutils.BaseXMLEventWriter

All Implemented Interfaces:
  XMLEventConsumer, XMLEventWriter

Direct Known Subclasses:
  StreamEventWriter, XMLStreamEventWriter

    public abstract class BaseXMLEventWriter

extends Object
implements XMLEventWriter

Base class for `XMLEventWriter` implementations. This implemenation buffers Attribute and Namespace events as specified in the specification, maintains a stack of NamespaceContext instances based on the events it receives, and repairs any missing namespaces. Subclasses should implement the `sendEvent(XMLEvent)` method to receive the processed events and perform additional processing.

Version:
  $Revision: 1.9 $
Author:
  Christian Niles

Field Summary
`protected Map` `attrBuff` LinkedHashMap of attribute events sent surrounding the last StartElement.
`protected boolean` `closed` Whether this writer has been closed or not.
`protected XMLEventFactory` `factory` XMLEventFactory used to construct XMLEvent instances.
`protected StartElement` `lastStart` Reference to the last StartElement sent.
`protected Map` `nsBuff` LinkedHashMap of namespace events sent surrounding the last StartElement.
`protected List` `nsStack` list of `SimpleNamespaceContext`s.

Constructor Summary
`protected` `BaseXMLEventWriter()`
`protected` `BaseXMLEventWriter(XMLEventFactory eventFactory, NamespaceContext nsCtx)`

Method Summary
`void` `add(XMLEvent event)`
`void` `add(XMLEventReader reader)`
`protected void` `cacheAttribute(Attribute attr)` Adds the specified `Attribute` to the attribute cache.
`protected void` `cacheNamespace(Namespace ns)` Adds the provided `Namespace` event to the namespace cache.
`void` `close()`
`void` `flush()`
`NamespaceContext` `getNamespaceContext()`
`String` `getPrefix(String nsURI)`
`protected SimpleNamespaceContext` `peekNamespaceStack()` Returns the active `SimpleNamespaceContext` from the top of the stack.
`protected SimpleNamespaceContext` `popNamespaceStack()` Removes the active `SimpleNamespaceContext` from the top of the stack.
`protected SimpleNamespaceContext` `pushNamespaceStack()` Creates a new `SimpleNamespaceContext` and adds it to the top of the stack.
`protected abstract void` `sendEvent(XMLEvent event)` Called by the methods of this class to write the event to the stream.
`void` `setDefaultNamespace(String nsURI)`
`void` `setNamespaceContext(NamespaceContext root)`
`void` `setPrefix(String prefix, String nsURI)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### factory

    protected XMLEventFactory factory

  XMLEventFactory used to construct XMLEvent instances.

### nsStack

    protected List nsStack

  list of `SimpleNamespaceContext`s.

### lastStart

    protected StartElement lastStart

  Reference to the last StartElement sent. This will be null if no StartElement has been sent, or after a non Attribute/Namespace event is received.

### attrBuff

    protected Map attrBuff

  LinkedHashMap of attribute events sent surrounding the last StartElement. By using LinkedHashMap, the attributes will stay in the order they were defined.

### nsBuff

    protected Map nsBuff

  LinkedHashMap of namespace events sent surrounding the last StartElement. By using LinkedHashMap, the namespaces will stay in the order they were defined.

### closed

    protected boolean closed

  Whether this writer has been closed or not.

Constructor Detail

### BaseXMLEventWriter

    protected BaseXMLEventWriter()

### BaseXMLEventWriter

    protected BaseXMLEventWriter(XMLEventFactory eventFactory,
                                 NamespaceContext nsCtx)

Method Detail

### flush

    public void flush()
               throws XMLStreamException

  Specified by:
    `flush` in interface `XMLEventWriter`
  Throws:
    `XMLStreamException`

### close

    public void close()
               throws XMLStreamException

  Specified by:
    `close` in interface `XMLEventWriter`
  Throws:
    `XMLStreamException`

### add

    public void add(XMLEvent event)
             throws XMLStreamException

  Specified by:
    `add` in interface `XMLEventConsumer`
  Specified by:
    `add` in interface `XMLEventWriter`
  Throws:
    `XMLStreamException`

### add

    public void add(XMLEventReader reader)
             throws XMLStreamException

  Specified by:
    `add` in interface `XMLEventWriter`
  Throws:
    `XMLStreamException`

### getPrefix

    public String getPrefix(String nsURI)
                     throws XMLStreamException

  Specified by:
    `getPrefix` in interface `XMLEventWriter`
  Throws:
    `XMLStreamException`

### setPrefix

    public void setPrefix(String prefix,
                          String nsURI)
                   throws XMLStreamException

  Specified by:
    `setPrefix` in interface `XMLEventWriter`
  Throws:
    `XMLStreamException`

### setDefaultNamespace

    public void setDefaultNamespace(String nsURI)
                             throws XMLStreamException

  Specified by:
    `setDefaultNamespace` in interface `XMLEventWriter`
  Throws:
    `XMLStreamException`

### setNamespaceContext

    public void setNamespaceContext(NamespaceContext root)
                             throws XMLStreamException

  Specified by:
    `setNamespaceContext` in interface `XMLEventWriter`
  Throws:
    `XMLStreamException`

### getNamespaceContext

    public NamespaceContext getNamespaceContext()

  Specified by:
    `getNamespaceContext` in interface `XMLEventWriter`

### popNamespaceStack

    protected SimpleNamespaceContext popNamespaceStack()

  Removes the active `SimpleNamespaceContext` from the top of the stack.

  Returns:
    The `SimpleNamespaceContext` removed from the namespace stack.

### peekNamespaceStack

    protected SimpleNamespaceContext peekNamespaceStack()

  Returns the active `SimpleNamespaceContext` from the top of the stack.

  Returns:
    The active `SimpleNamespaceContext` from the top of the stack.

### pushNamespaceStack

    protected SimpleNamespaceContext pushNamespaceStack()

  Creates a new `SimpleNamespaceContext` and adds it to the top of the stack.

  Returns:
    The new `SimpleNamespaceContext`.

### cacheAttribute

    protected void cacheAttribute(Attribute attr)

  Adds the specified `Attribute` to the attribute cache.

  Parameters:
    `attr` - The attribute to cache.

### cacheNamespace

    protected void cacheNamespace(Namespace ns)

  Adds the provided `Namespace` event to the namespace cache. The current namespace context will not be affected.

  Parameters:
    `ns` - The namespace to add to the cache.

### sendEvent

    protected abstract void sendEvent(XMLEvent event)
                               throws XMLStreamException

  Called by the methods of this class to write the event to the stream.

  Parameters:
    `event` - The event to write.
  Throws:
    `XMLStreamException` - If an error occurs processing the event.