|
J avolution v5.2 (J2SE 1.5+) | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectjavolution.xml.XMLFormat<T>
public abstract class XMLFormat<T>
This class represents the format base class for XML serialization and deserialization.
Application classes typically define a default XML format for their
instances using static XMLFormat class members.
Formats are inherited by sub-classes. For example:
public abstract class Graphic {
private boolean _isVisible;
private Paint _paint; // null if none.
private Stroke _stroke; // null if none.
private Transform _transform; // null if none.
// XML format with positional associations (members identified by their position),
// see XML package description for examples of name associations.
private static final XMLFormat<Graphic> XML = new XMLFormat<Graphic>(Graphic.class) {
public void write(Graphic g, OutputElement xml) {
xml.setAttribute("isVisible", g._isVisible);
xml.add(g._paint); // First.
xml.add(g._stroke); // Second.
xml.add(g._transform); // Third.
}
public void read(InputElement xml, Graphic g) {
g._isVisible = xml.getAttribute("isVisible", true);
g._paint = xml.getNext();
g._stroke = xml.getNext();
g._transform = xml.getNext();
return g;
}
};
}
Due to the sequential nature of XML serialization/deserialization, formatting/parsing of XML attributes should always be performed before formatting/parsing of the XML content.
The mapping between classes and XML formats is defined by XMLBinding instances.
Here is an example of serialization/deserialization:
Here is the output
// Creates a list holding diverse objects.
List list = new ArrayList();
list.add("John Doe");
list.add(null);
Map map = new FastMap();
map.put("ONE", new Integer(1));
map.put("TWO", new Integer(2));
list.add(map);
// Creates some aliases to use instead of class names.
XMLBinding binding = new XMLBinding();
binding.setAlias(FastMap.class, "Map");
binding.setAlias(String.class, "String");
binding.setAlias(Integer.class, "Integer");
// Formats the list to XML .
OutputStream out = new FileOutputStream("C:/list.xml");
XMLObjectWriter writer = new XMLObjectWriter().setOutput(out).setBinding(binding);
writer.write(list, "MyList", ArrayList.class);
writer.close();list.xml document produced:
The list can be read back with the following code:
<MyList>
<String value="John Doe"/>
<Null/>
<Map>
<Key class="String" value="ONE"/>
<Value class="Integer" value="1"/>
<Key class="String" value="TWO"/>
<Value class="Integer" value="2"/>
</Map>
</MyList>
// Reads back to a FastTable instance.
InputStream in = new FileInputStream("C:/list.xml");
XMLObjectReader reader = new XMLObjectReader().setInput(in).setBinding(binding);
FastTable table = reader.read("MyList", FastTable.class);
reader.close();
Note: Any type for which a text format is
known can be represented as
a XML attribute.
| Nested Class Summary | |
|---|---|
static class |
XMLFormat.InputElement
This class represents an input XML element (unmarshalling). |
static class |
XMLFormat.OutputElement
This class represents an output XML element (marshalling). |
| Constructor Summary | |
|---|---|
protected |
XMLFormat()
Deprecated. XMLFormat(null) should be used instead. |
protected |
XMLFormat(java.lang.Class<T> cls)
Creates a XML format mapped to the specified class. |
| Method Summary | |
|---|---|
java.lang.Class<T> |
getBoundClass()
Returns the class/interface statically bound to this format or null if none. |
boolean |
isReferenceable()
Indicates if the object serialized through this format can be referenced to (default true). |
T |
newInstance(java.lang.Class<T> cls,
XMLFormat.InputElement xml)
Allocates a new object of the specified class from the specified XML input element. |
abstract void |
read(XMLFormat.InputElement xml,
T obj)
Parses an XML input element into the specified object. |
abstract void |
write(T obj,
XMLFormat.OutputElement xml)
Formats an object into the specified XML output element. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected XMLFormat(java.lang.Class<T> cls)
null then the format is left unmapped (e.g.
dynamic format used by custom binding instances).
cls - the root class/interface to associate to this XML format
or null if this format is not mapped.
java.lang.IllegalArgumentException - if the specified class is already
bound to another format.protected XMLFormat()
XMLFormat(null) should be used instead.
| Method Detail |
|---|
public final java.lang.Class<T> getBoundClass()
null if none.
public boolean isReferenceable()
true). This method can be overriden to return
false if serialized objects are manipulated "by value".
true if serialized object may hold a reference;
false otherwise.XMLReferenceResolver
public T newInstance(java.lang.Class<T> cls,
XMLFormat.InputElement xml)
throws XMLStreamException
cls - the class of the object to return.xml - the XML input element.
XMLStreamException
public abstract void write(T obj,
XMLFormat.OutputElement xml)
throws XMLStreamException
obj - the object to format.xml - the XMLElement destination.
XMLStreamException
public abstract void read(XMLFormat.InputElement xml,
T obj)
throws XMLStreamException
xml - the XML element to parse.obj - the object created through newInstance(java.lang.Class, javolution.xml.XMLFormat.InputElement)
and to setup from the specified XML element.
XMLStreamException
|
J avolution v5.2 (J2SE 1.5+) | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||