net.sf.xolite.impl
Class BaseXMLSerializer

java.lang.Object
  extended by net.sf.xolite.impl.BaseXMLSerializer
All Implemented Interfaces:
XMLSerializer
Direct Known Subclasses:
FlowXMLSerializer

public abstract class BaseXMLSerializer
extends Object
implements XMLSerializer

Base for XMLSerializer implementations. This class hold all the complex state of XML serialization (like mapped prefixes, elements currently started, ...). It verify the coherence of the state (like checking that the ended element is the element currently started) and generate simpler serialization events (the abstract methods). Those new events will be implemented by concrete sub-classes.


Field Summary
protected static int STATE_ELEMENT_CLOSED
           
protected static int STATE_ELEMENT_START_CLOSED
           
protected static int STATE_ELEMENT_START_OPENED
           
protected static int STATE_FINISHED
           
protected static int STATE_INIT
           
protected static int STATE_TEXT
           
protected static int STATE_TEXT_MULTI_LINE
           
 
Constructor Summary
protected BaseXMLSerializer()
           
 
Method Summary
 void attribute(String name, String value)
          Add an attribute to the element that was just started.
 void attribute(String uri, String name, String value)
          Add an attribute to the element that was just started.
protected abstract  void attributeImpl(String uri, String prefix, String name, String value, int index)
           
 void characters(String text)
          Add character content of an element.
protected abstract  void charactersImpl(String text, boolean multilineContent)
           
 void charactersMultiLine(String text)
          Same as characters but the text (supposed to be multi-line) is formatted to be an indented text block.
protected abstract  void closeElementStartImpl(boolean complexContent)
           
protected  void definePrefixMapping(String prefix, String uri)
           
protected abstract  void endComplexElementImpl(String uri, String prefix, String tag)
           
 void endDocument()
          End the current XML document.
protected abstract  void endDocumentImpl()
           
 void endElement(String uri, String tag)
          End an XML element.
protected abstract  void endInlineElementImpl(String uri, String prefix, String tag)
           
protected abstract  void endTextElementImpl(String uri, String prefix, String tag, boolean multilineContent)
           
 Object getCustomObject(Object key)
          Get back any custom object that was put in with the putCustomObject(key, value) method.
protected  int getLastElementLength()
          Get the tag length (prefix+name) of the last opened level.
protected  String getLastElementName()
          Get the element name of the last opened level (to be used for debug output only).
protected  int getLevel()
           
 void putCustomObject(Object key, Object value)
          Put a custom object in an internal Map.
 void simpleElement(String namespaceUri, String localName, String text)
          This is a helper method useful to add a simpleType element in one call.
 void startDocument()
          Start an XML document.
protected abstract  void startDocumentImpl()
           
 void startElement(String uri, String tag)
          Start an XML element.
protected abstract  void startElementImpl(String uri, String prefix, String tag)
           
 void startPrefixMapping(String prefix, String namespaceUri)
          Define a prefix mapping.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

STATE_INIT

protected static final int STATE_INIT
See Also:
Constant Field Values

STATE_ELEMENT_START_OPENED

protected static final int STATE_ELEMENT_START_OPENED
See Also:
Constant Field Values

STATE_ELEMENT_START_CLOSED

protected static final int STATE_ELEMENT_START_CLOSED
See Also:
Constant Field Values

STATE_TEXT

protected static final int STATE_TEXT
See Also:
Constant Field Values

STATE_TEXT_MULTI_LINE

protected static final int STATE_TEXT_MULTI_LINE
See Also:
Constant Field Values

STATE_ELEMENT_CLOSED

protected static final int STATE_ELEMENT_CLOSED
See Also:
Constant Field Values

STATE_FINISHED

protected static final int STATE_FINISHED
See Also:
Constant Field Values
Constructor Detail

BaseXMLSerializer

protected BaseXMLSerializer()
Method Detail

getLevel

protected int getLevel()

startDocument

public void startDocument()
                   throws XMLSerializeException
Description copied from interface: XMLSerializer
Start an XML document.

Specified by:
startDocument in interface XMLSerializer
Throws:
XMLSerializeException

endDocument

public void endDocument()
                 throws XMLSerializeException
Description copied from interface: XMLSerializer
End the current XML document.

Specified by:
endDocument in interface XMLSerializer
Throws:
XMLSerializeException

getLastElementName

protected String getLastElementName()
Get the element name of the last opened level (to be used for debug output only).


getLastElementLength

protected int getLastElementLength()
Get the tag length (prefix+name) of the last opened level.


startPrefixMapping

public void startPrefixMapping(String prefix,
                               String namespaceUri)
                        throws XMLSerializeException
Description copied from interface: XMLSerializer
Define a prefix mapping. This method associate the given prefix to the given namespace. So when a node of the given namespace will be serialized, the given prefix will be used to denote the namespace (and the prefix declaration will be inserted when necessary).

This method should be called for each namespace URI before the first time they are used.

If the given namespace is already associated to another prefix (or the same prefix), this method call is ignored (i.e. first association wins).

If the given prefix is already associated to an other namespace, a new prefix is generated and mapped at the place of the given one.

Specified by:
startPrefixMapping in interface XMLSerializer
Parameters:
prefix - a prefix (can be "" for default prefix mapping)
namespaceUri - a namespace URI
Throws:
XMLSerializeException - if prefix or namespaceUri is null or if required action cannot be done (implementation dependent).

startElement

public void startElement(String uri,
                         String tag)
                  throws XMLSerializeException
Description copied from interface: XMLSerializer
Start an XML element.

Specified by:
startElement in interface XMLSerializer
Parameters:
uri - The element namespace URI (can be null if namespace are not used)
tag - The element local name (a.k.a. NCName)
Throws:
XMLSerializeException - if required action cannot be done (implementation dependent).

attribute

public void attribute(String name,
                      String value)
               throws XMLSerializeException
Description copied from interface: XMLSerializer
Add an attribute to the element that was just started. All the call to this method must immediately follow a startElement call. attribute. This attribute use no namespace.

Specified by:
attribute in interface XMLSerializer
Parameters:
name - The attribute local name (a.k.a. NCName)
value - the attribute value (null is treated as empty string).
Throws:
XMLSerializeException - if you don't call this method just after startElement or if required action cannot be done (implementation dependent).

attribute

public void attribute(String uri,
                      String name,
                      String value)
               throws XMLSerializeException
Description copied from interface: XMLSerializer
Add an attribute to the element that was just started. All the call to this method must immediately follow a startElement call. attribute

Specified by:
attribute in interface XMLSerializer
Parameters:
uri - The attribute namespace URI. This URI is usually null because most of the time, attributes don't use a namespace.
name - The attribute local name (a.k.a. NCName)
value - the attribute value (null is treated as empty string).
Throws:
XMLSerializeException - if you don't call this method just after startElement or if required action cannot be done (implementation dependent).

characters

public void characters(String text)
                throws XMLSerializeException
Description copied from interface: XMLSerializer
Add character content of an element. This method must be called between startElement (possibly followed by attribute) and endElement. If this method is called several times for the same element, the texts are concatenated.

Specified by:
characters in interface XMLSerializer
Parameters:
text - text of the currently started element.
Throws:
XMLSerializeException - if you don't call this method just beteween startElement and endElement or if required action cannot be done (implementation dependent).

charactersMultiLine

public void charactersMultiLine(String text)
                         throws XMLSerializeException
Description copied from interface: XMLSerializer
Same as characters but the text (supposed to be multi-line) is formatted to be an indented text block.
The result will look like:
            <tag>
                some text
                spanning multiple
                lines.
            </tag>
 
While usual output would have given:
            <tag>some text
      spanning multiple
      lines.</tag>
 
The original text can be retrieved (when parsing) with the ElementText.getMultilineText(..) method. This method will automatically remove the added space.

Specified by:
charactersMultiLine in interface XMLSerializer
Parameters:
text - the text to serialize in XML
Throws:
XMLSerializeException
See Also:
ElementText.getMultilineText(String, XMLEventParser)

endElement

public void endElement(String uri,
                       String tag)
                throws XMLSerializeException
Description copied from interface: XMLSerializer
End an XML element.

Specified by:
endElement in interface XMLSerializer
Parameters:
uri - The element namespace URI (can be null if namespace are not used)
tag - The element local name (a.k.a. NCName)
Throws:
XMLSerializeException - if required action cannot be done (implementation dependent).

simpleElement

public void simpleElement(String namespaceUri,
                          String localName,
                          String text)
                   throws XMLSerializeException
Description copied from interface: XMLSerializer
This is a helper method useful to add a simpleType element in one call. It is strictly equivalent to the following sequence:
 startElement(namespaceUri, localName);
 characters(text);
 endElement(namespaceUri, localName);
 

Specified by:
simpleElement in interface XMLSerializer
Parameters:
namespaceUri - The element namespace URI (can be null if namespace are not used)
localName - The element local name (a.k.a. NCName)
text - text of the element.
Throws:
XMLSerializeException

startDocumentImpl

protected abstract void startDocumentImpl()
                                   throws Exception
Throws:
Exception

endDocumentImpl

protected abstract void endDocumentImpl()
                                 throws Exception
Throws:
Exception

startElementImpl

protected abstract void startElementImpl(String uri,
                                         String prefix,
                                         String tag)
                                  throws Exception
Throws:
Exception

attributeImpl

protected abstract void attributeImpl(String uri,
                                      String prefix,
                                      String name,
                                      String value,
                                      int index)
                               throws Exception
Throws:
Exception

closeElementStartImpl

protected abstract void closeElementStartImpl(boolean complexContent)
                                       throws Exception
Throws:
Exception

charactersImpl

protected abstract void charactersImpl(String text,
                                       boolean multilineContent)
                                throws Exception
Throws:
Exception

endInlineElementImpl

protected abstract void endInlineElementImpl(String uri,
                                             String prefix,
                                             String tag)
                                      throws Exception
Throws:
Exception

endTextElementImpl

protected abstract void endTextElementImpl(String uri,
                                           String prefix,
                                           String tag,
                                           boolean multilineContent)
                                    throws Exception
Throws:
Exception

endComplexElementImpl

protected abstract void endComplexElementImpl(String uri,
                                              String prefix,
                                              String tag)
                                       throws Exception
Throws:
Exception

definePrefixMapping

protected void definePrefixMapping(String prefix,
                                   String uri)
                            throws Exception
Throws:
Exception

getCustomObject

public Object getCustomObject(Object key)
Description copied from interface: XMLSerializer
Get back any custom object that was put in with the putCustomObject(key, value) method.

Specified by:
getCustomObject in interface XMLSerializer
Parameters:
key - key of the custom object.
Returns:
the custom object.

putCustomObject

public void putCustomObject(Object key,
                            Object value)
Description copied from interface: XMLSerializer
Put a custom object in an internal Map.
It can be retrieved later with getCustomObject(key) method.

Specified by:
putCustomObject in interface XMLSerializer
Parameters:
key - key of the custom object.
value - custom object.


Copyright © 2012. All Rights Reserved.