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(String)
.
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(String)
.
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.
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructor uses | |||||||||||
Constuctor uses given | |||||||||||
Constuctor uses given | |||||||||||
Constructor sets writer used for output. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Closes the underlying output stream
| |||||||||||
Switch on formatted output. | |||||||||||
Allows output to be flushed on the underlying output stream
| |||||||||||
Gets the string used to mark end of lines.
| |||||||||||
Gets the indent string
| |||||||||||
Gets the initial indent level
| |||||||||||
Set the log implementation used. | |||||||||||
Gets the encoding strategy for mixed content.
| |||||||||||
Should an end tag be added for each empty element?
When this property is false then empty elements will
be written as | |||||||||||
Sets the string used for end of lines
Produces a warning the specified value contains an invalid whitespace character
| |||||||||||
Sets when an an end tag be added for each empty element.
| |||||||||||
Sets the string used for pretty print indents
| |||||||||||
Sets the initial indent level used for pretty print indents
| |||||||||||
Set the log implementation used. | |||||||||||
Sets the encoding strategy for mixed content.
| |||||||||||
Write the given object to the stream (and then flush).
| |||||||||||
A helper method that allows you to write the XML Declaration.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Write element body text
| |||||||||||
Writes the end tag for an element
| |||||||||||
This method is deprecated.
0.5 moved into utility class
escapeAttributeValue(Object)
| |||||||||||
This method is deprecated.
0.5 moved into utility class
escapeBodyValue(Object)
| |||||||||||
This method is deprecated.
0.5 replaced by new SAX inspired API
| |||||||||||
This method is deprecated.
0.5 replaced by new SAX inspired API
| |||||||||||
This method is deprecated.
0.5 replaced by new SAX inspired API
| |||||||||||
This method is deprecated.
0.5 replaced by new SAX inspired API
| |||||||||||
This method is deprecated.
0.5 replaced by new SAX inspired API
| |||||||||||
This method is deprecated.
0.5 replaced by new SAX inspired API
| |||||||||||
Writes the start tag for an element.
| |||||||||||
This method is deprecated.
0.5 replaced by new SAX inspired API
| |||||||||||
This method is deprecated.
0.5 replaced by new SAX inspired API
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.apache.commons.betwixt.io.AbstractBeanWriter
| |||||||||||
From class
java.lang.Object
|
Constructor uses System.out
for output.
Constuctor uses given OutputStream
for output.
out | write out representations to this stream |
---|
Constuctor uses given OutputStream
for output
and allows encoding to be set.
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 |
UnsupportedEncodingException | if the given encoding is not supported |
---|
Constructor sets writer used for output.
writer | write out representations to this writer |
---|
Closes the underlying output stream
IOException | when writer cannot be closed |
---|
Switch on formatted output. This sets the end of line and the indent. The default is adding 2 spaces and a newline
Allows output to be flushed on the underlying output stream
IOException | when the flush cannot be completed |
---|
Gets the string used to mark end of lines.
Gets the initial indent level
Set the log implementation used.
org.apache.commons.logging.Log
level constant
Gets the encoding strategy for mixed content. This is used to process body content before it is written to the textual output.
MixedContentEncodingStrategy
, not nullShould 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;
.
Sets the string used for end of lines Produces a warning the specified value contains an invalid whitespace character
endOfLine | the String
|
---|
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;
.
addEndTagForEmptyElement | true if an end tag should be written for each empty element, false otherwise |
---|
Sets the string used for pretty print indents
indent | use this string for indents
|
---|
Sets the initial indent level used for pretty print indents
initialIndentLevel | use this int to start with |
---|
Set the log implementation used.
log | Log implementation to use
|
---|
Sets the encoding strategy for mixed content. This is used to process body content before it is written to the textual output.
strategy | the MixedContentEncodingStrategy
used to process body content, not null |
---|
Write the given object to the stream (and then flush).
bean | write this Object to the stream |
---|
IOException | if an IO problem causes failure |
---|---|
SAXException | if a SAX problem causes failure |
IntrospectionException | if bean cannot be introspected |
A helper method that allows you to write the XML Declaration. This should only be called once before you output any beans.
xmlDeclaration | is the XML declaration string typically of the form "<xml version='1.0' encoding='UTF-8' ?> |
---|
IOException | when declaration cannot be written |
---|
Write element body text
text | write out this body text |
---|
IOException | when the stream write fails |
---|
Writes the end tag for an element
uri | the element's namespace uri |
---|---|
localName | the element's local name |
qualifiedName | the element's qualified name |
IOException | if an IO problem occurs during writing |
---|---|
SAXException | if an SAX problem occurs during writing |
This method is deprecated.
0.5 moved into utility class escapeAttributeValue(Object)
Escape the toString
of the given object.
For use in an attribute value.
value | escape value.toString() |
---|
This method is deprecated.
0.5 moved into utility class escapeBodyValue(Object)
Escape the toString
of the given object.
For use as body text.
value | escape value.toString() |
---|
This method is deprecated.
0.5 replaced by new SAX inspired API
Writes an attribute to the stream.
qualifiedName | fully qualified attribute name |
---|---|
value | attribute value |
IOException | when the stream write fails |
---|
This method is deprecated.
0.5 replaced by new SAX inspired API
Write element body text
text | write out this body text |
---|
IOException | when the stream write fails |
---|
This method is deprecated.
0.5 replaced by new SAX inspired API
Write an empty element end to the stream
IOException | when stream write fails |
---|
This method is deprecated.
0.5 replaced by new SAX inspired API
Write an element end tag to the stream
qualifiedName | the name of the element |
---|
IOException | when stream write fails |
---|
This method is deprecated.
0.5 replaced by new SAX inspired API
Express an element tag start using given qualified name
qualifiedName | the fully qualified name of the element to write |
---|
IOException | when stream write fails |
---|
This method is deprecated.
0.5 replaced by new SAX inspired API
Write a tag close to the stream
IOException | when stream write fails |
---|
Writes the start tag for an element.
uri | the element's namespace uri |
---|---|
localName | the element's local name |
qualifiedName | the element's qualified name |
attr | the element's attributes |
IOException | if an IO problem occurs during writing |
---|---|
SAXException | if an SAX problem occurs during writing |
This method is deprecated.
0.5 replaced by new SAX inspired API
Writes out indent
's to the current indentLevel
IOException | when stream write fails |
---|
This method is deprecated.
0.5 replaced by new SAX inspired API
Writes out an empty line.
Uses current endOfLine
.
IOException | when stream write fails |
---|