Save This Page
Home » commons-betwixt-0.8-src » org.apache.commons » betwixt » io » [javadoc | source]
org.apache.commons.betwixt.io
public class: BeanWriter [javadoc | source]
java.lang.Object
   org.apache.commons.betwixt.io.AbstractBeanWriter
      org.apache.commons.betwixt.io.BeanWriter

BeanWriter outputs beans as XML to an io stream.

The output for each bean is an xml fragment (rather than a well-formed xml-document). This allows bean representations to be appended to a document by writing each in turn to the stream. So to create a well formed xml document, you'll need to write the prolog to the stream first. If you append more than one bean to the stream, then you'll need to add a wrapping root element as well.

The line ending to be used is set by #setEndOfLine .

The output can be formatted (with whitespace) for easy reading by calling #enablePrettyPrint . The output will be indented. The indent string used is set by #setIndent .

Bean graphs can sometimes contain cycles. Care must be taken when serializing cyclic bean graphs since this can lead to infinite recursion. The approach taken by BeanWriter is to automatically assign an ID attribute value to beans. When a cycle is encountered, an element is written that has the IDREF attribute set to the id assigned earlier.

The names of the ID and IDREF attributes used can be customized by the XMLBeanInfo. The id's used can also be customized by the user via IDGenerator subclasses. The implementation used can be set by the IdGenerator property. BeanWriter defaults to using SequentialIDGenerator which supplies id values in numeric sequence.

If generated ID attribute values are not acceptable in the output, then this can be disabled by setting the WriteIDs property to false. If a cyclic reference is encountered in this case then a CyclicReferenceException will be thrown. When the WriteIDs property is set to false, it is recommended that this exception is caught by the caller.

Constructor:
 public BeanWriter() 
 public BeanWriter(OutputStream out) 

    Constuctor uses given OutputStream for output.

    Parameters:
    out - write out representations to this stream
 public BeanWriter(Writer writer) 

    Constructor sets writer used for output.

    Parameters:
    writer - write out representations to this writer
 public BeanWriter(OutputStream out,
    String enc) throws UnsupportedEncodingException 

    Constuctor uses given OutputStream for output and allows encoding to be set.

    Parameters:
    out - write out representations to this stream
    enc - the name of the encoding to be used. This should be compatible with the encoding types described in java.io
    Throws:
    UnsupportedEncodingException - if the given encoding is not supported
Method from org.apache.commons.betwixt.io.BeanWriter Summary:
bodyText,   close,   enablePrettyPrint,   endElement,   escapeAttributeValue,   escapeBodyValue,   expressAttribute,   expressBodyText,   expressElementEnd,   expressElementEnd,   expressElementStart,   expressTagClose,   flush,   getEndOfLine,   getIndent,   getInitialIndentLevel,   getLog,   getMixedContentEncodingStrategy,   isEndTagForEmptyElement,   setEndOfLine,   setEndTagForEmptyElement,   setIndent,   setInitialIndentLevel,   setLog,   setMixedContentEncodingStrategy,   startElement,   write,   writeIndent,   writePrintln,   writeXmlDeclaration
Methods from org.apache.commons.betwixt.io.AbstractBeanWriter:
bodyText,   bodyText,   end,   endElement,   endElement,   expressAttribute,   expressAttribute,   expressBodyText,   expressElementEnd,   expressElementEnd,   expressElementEnd,   expressElementStart,   expressElementStart,   expressTagClose,   getAbstractBeanWriterLog,   getBindingConfiguration,   getIdGenerator,   getIndentLevel,   getWriteEmptyElements,   getWriteIDs,   getXMLIntrospector,   popBean,   pushBean,   setAbstractBeanWriterLog,   setBindingConfiguration,   setIdGenerator,   setWriteEmptyElements,   setWriteIDs,   setXMLIntrospector,   start,   startElement,   startElement,   write,   write,   write,   write,   write,   writeAttribute,   writeAttributes,   writeContent,   writeIDREFElement,   writeIndent,   writePrintln,   writeRestOfElement
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.commons.betwixt.io.BeanWriter Detail:
 protected  void bodyText(WriteContext context,
    String text) throws IOException 
    Write element body text
 public  void close() throws IOException 
    Closes the underlying output stream
 public  void enablePrettyPrint() 

    Switch on formatted output. This sets the end of line and the indent. The default is adding 2 spaces and a newline

 protected  void endElement(WriteContext context,
    String uri,
    String localName,
    String qualifiedName) throws IOException, SAXException 
    Writes the end tag for an element
 protected String escapeAttributeValue(Object value) 
Deprecated! 0.5 - moved into utility class XMLUtils#escapeAttributeValue

    Escape the toString of the given object. For use in an attribute value.

 protected String escapeBodyValue(Object value) 
Deprecated! 0.5 - moved into utility class XMLUtils#escapeBodyValue

    Escape the toString of the given object. For use as body text.

 protected  void expressAttribute(String qualifiedName,
    String value) throws IOException 
Deprecated! 0.5 - replaced by new SAX inspired API

    Writes an attribute to the stream.
 protected  void expressBodyText(String text) throws IOException 
Deprecated! 0.5 - replaced by new SAX inspired API

    Write element body text
 protected  void expressElementEnd() throws IOException 
Deprecated! 0.5 - replaced by new SAX inspired API

    Write an empty element end to the stream
 protected  void expressElementEnd(String qualifiedName) throws IOException 
Deprecated! 0.5 - replaced by new SAX inspired API

    Write an element end tag to the stream
 protected  void expressElementStart(String qualifiedName) throws IOException 
Deprecated! 0.5 - replaced by new SAX inspired API

    Express an element tag start using given qualified name
 protected  void expressTagClose() throws IOException 
Deprecated! 0.5 - replaced by new SAX inspired API

    Write a tag close to the stream
 public  void flush() throws IOException 
    Allows output to be flushed on the underlying output stream
 public String getEndOfLine() 
    Gets the string used to mark end of lines.
 public String getIndent() 
    Gets the indent string
 public int getInitialIndentLevel() 
    Gets the initial indent level
 public Log getLog() 

    Set the log implementation used.

 public MixedContentEncodingStrategy getMixedContentEncodingStrategy() 
    Gets the encoding strategy for mixed content. This is used to process body content before it is written to the textual output.
 public boolean isEndTagForEmptyElement() 

    Should an end tag be added for each empty element?

    When this property is false then empty elements will be written as <element-name/gt;. When this property is true then empty elements will be written as <element-namegt; </element-namegt;.

 public  void setEndOfLine(String endOfLine) 
    Sets the string used for end of lines Produces a warning the specified value contains an invalid whitespace character
 public  void setEndTagForEmptyElement(boolean addEndTagForEmptyElement) 
    Sets when an an end tag be added for each empty element. When this property is false then empty elements will be written as <element-name/gt;. When this property is true then empty elements will be written as <element-namegt; </element-namegt;.
 public  void setIndent(String indent) 
    Sets the string used for pretty print indents
 public  void setInitialIndentLevel(int initialIndentLevel) 
    Sets the initial indent level used for pretty print indents
 public  void setLog(Log log) 

    Set the log implementation used.

 public  void setMixedContentEncodingStrategy(MixedContentEncodingStrategy strategy) 
    Sets the encoding strategy for mixed content. This is used to process body content before it is written to the textual output.
 protected  void startElement(WriteContext context,
    String uri,
    String localName,
    String qualifiedName,
    Attributes attr) throws IOException, SAXException 
    Writes the start tag for an element.
 public  void write(Object bean) throws IntrospectionException, IOException, SAXException 
    Write the given object to the stream (and then flush).
 protected  void writeIndent() throws IOException 
Deprecated! 0.5 - replaced by new SAX inspired API

    Writes out indent's to the current indentLevel
 protected  void writePrintln() throws IOException 
Deprecated! 0.5 - replaced by new SAX inspired API

    Writes out an empty line. Uses current endOfLine.
 public  void writeXmlDeclaration(String xmlDeclaration) throws IOException 
    A helper method that allows you to write the XML Declaration. This should only be called once before you output any beans.