javanet.staxutils
Class BaseXMLEventWriter

java.lang.Object
  extended by 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 SimpleNamespaceContexts.
 
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 SimpleNamespaceContexts.


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.