Package org.simpleframework.xml.strategy
Class CycleStrategy
java.lang.Object
org.simpleframework.xml.strategy.CycleStrategy
- All Implemented Interfaces:
Strategy
The
CycleStrategy
represents a strategy that is used
to augment the deserialization and serialization process such that
cycles in an object graph can be supported. This adds additional
attributes to the serialized XML elements so that during the
deserialization process an objects cycles can be created. Without
the use of a strategy such as this, cycles could cause an infinite
loop during the serialization process while traversing the graph.
<root id="1"> <object id="2"> <object id="3" name="name">Example</item> <object reference="2"/> </object> </root>In the above serialized XML there is a circular reference, where the XML element with id "2" contains a reference to itself. In most data binding frameworks this will cause an infinite loop, or in some cases will just fail to represent the references well. With this strategy you can ensure that cycles in complex object graphs will be maintained and can be serialized safely.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Contract
This is used to provide the names of the attributes to use.private final ReadState
This is used to maintain session state for reading the graph.private final WriteState
This is used to maintain session state for writing the graph. -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for theCycleStrategy
object.CycleStrategy
(String mark, String refer) Constructor for theCycleStrategy
object.CycleStrategy
(String mark, String refer, String label) Constructor for theCycleStrategy
object.CycleStrategy
(String mark, String refer, String label, String length) Constructor for theCycleStrategy
object. -
Method Summary
-
Field Details
-
write
This is used to maintain session state for writing the graph. -
read
This is used to maintain session state for reading the graph. -
contract
This is used to provide the names of the attributes to use.
-
-
Constructor Details
-
CycleStrategy
public CycleStrategy()Constructor for theCycleStrategy
object. This is used to create a strategy with default values. By default the values used are "id" and "reference". These values will be added to XML elements during the serialization process. And will be used to deserialize the object cycles fully. -
CycleStrategy
Constructor for theCycleStrategy
object. This is used to create a strategy with the specified attributes, which will be added to serialized XML elements. These attributes are used to serialize the objects in such a way the cycles in the object graph can be deserialized and used fully.- Parameters:
mark
- this is used to mark the identity of an objectrefer
- this is used to refer to an existing object
-
CycleStrategy
Constructor for theCycleStrategy
object. This is used to create a strategy with the specified attributes, which will be added to serialized XML elements. These attributes are used to serialize the objects in such a way the cycles in the object graph can be deserialized and used fully.- Parameters:
mark
- this is used to mark the identity of an objectrefer
- this is used to refer to an existing objectlabel
- this is used to specify the class for the field
-
CycleStrategy
Constructor for theCycleStrategy
object. This is used to create a strategy with the specified attributes, which will be added to serialized XML elements. These attributes are used to serialize the objects in such a way the cycles in the object graph can be deserialized and used fully.- Parameters:
mark
- this is used to mark the identity of an objectrefer
- this is used to refer to an existing objectlabel
- this is used to specify the class for the fieldlength
- this is the length attribute used for arrays
-
-
Method Details
-
read
This method is used to read an object from the specified node. In order to get the root type the field and node map are specified. The field represents the annotated method or field within the deserialized object. The node map is used to get the attributes used to describe the objects identity, or in the case of an existing object it contains an object reference.- Specified by:
read
in interfaceStrategy
- Parameters:
type
- the method or field in the deserialized objectnode
- this is the XML element attributes to readmap
- this is the session map used for deserialization- Returns:
- this returns an instance to insert into the object
- Throws:
Exception
- thrown if the class cannot be resolved
-
write
This is used to write the reference in to the XML element that is to be written. This will either insert an object identity if the object has not previously been written, or, if the object has already been written in a previous element, this will write the reference to that object. This allows all cycles within the graph to be serialized so that they can be fully deserialized.- Specified by:
write
in interfaceStrategy
- Parameters:
type
- the type of the field or method in the objectvalue
- this is the actual object that is to be writtennode
- this is the XML element attribute map to usemap
- this is the session map used for the serialization- Returns:
- returns true if the object has been fully serialized
-