Package org.simpleframework.xml.convert
Class AnnotationStrategy
java.lang.Object
org.simpleframework.xml.convert.AnnotationStrategy
- All Implemented Interfaces:
Strategy
The
AnnotationStrategy object is used to intercept
the serialization process and delegate to custom converters. This
strategy uses the Convert annotation to specify the
converter to use for serialization and deserialization. If there
is no annotation present on the field or method representing the
object instance to be serialized then this acts as a transparent
proxy to an internal strategy.
By default the TreeStrategy is used to perform the
normal serialization process should there be no annotation
specifying a converter to use. However, any implementation can
be used, including the CycleStrategy, which handles
cycles in the object graph. To specify the internal strategy to
use it can be provided in the constructor.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ConverterScannerThis is used to scan for an annotation and create a converter.private final StrategyThis is the strategy that is delegated to for serialization. -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for theAnnotationStrategyobject.AnnotationStrategy(Strategy strategy) Constructor for theAnnotationStrategyobject. -
Method Summary
Modifier and TypeMethodDescriptionprivate booleanisReference(Value value) This is used to determine if theValueprovided represents a reference.This is used to read theValuewhich will be used to represent the deserialized object.private ValueThis is used to read theValuewhich will be used to represent the deserialized object.private booleanwrite(Type type, Object value, NodeMap<OutputNode> node) This is used to serialize a representation of the object value provided.booleanThis is used to serialize a representation of the object value provided.
-
Field Details
-
scanner
This is used to scan for an annotation and create a converter. -
strategy
This is the strategy that is delegated to for serialization.
-
-
Constructor Details
-
AnnotationStrategy
public AnnotationStrategy()Constructor for theAnnotationStrategyobject. This creates a strategy that intercepts serialization on any annotated method or field. If no annotation exists then this delegates to an internalTreeStrategyobject. -
AnnotationStrategy
Constructor for theAnnotationStrategyobject. This creates a strategy that intercepts serialization on any annotated method or field. If no annotation exists then this will delegate to theStrategyprovided.- Parameters:
strategy- the internal strategy to delegate to
-
-
Method Details
-
read
This is used to read theValuewhich will be used to represent the deserialized object. If there is an annotation present then the value will contain an object instance. If it does not then it is up to the internal strategy to determine what the returned value contains.- Specified by:
readin interfaceStrategy- Parameters:
type- this is the type that represents a method or fieldnode- this is the node representing the XML elementmap- this is the session map that contain variables- Returns:
- the value representing the deserialized value
- Throws:
Exception- thrown if the class cannot be resolved
-
read
This is used to read theValuewhich will be used to represent the deserialized object. If there is an annotation present then the value will contain an object instance. If it does not then it is up to the internal strategy to determine what the returned value contains.- Parameters:
type- this is the type that represents a method or fieldnode- this is the node representing the XML elementvalue- this is the value from the internal strategy- Returns:
- the value representing the deserialized value
- Throws:
Exception
-
write
This is used to serialize a representation of the object value provided. If there is aConvertannotation present on the provided type then this will use the converter specified to serialize a representation of the object. If however there is no annotation then this will delegate to the internal strategy. This returns true if the serialization has completed.- Specified by:
writein interfaceStrategy- Parameters:
type- this is the type that represents the field or methodvalue- this is the object instance to be serializednode- this is the XML element to be serialized tomap- this is the session map used by the serializer- Returns:
- this returns true if it was serialized, false otherwise
- Throws:
Exception- thrown if the details cannot be set
-
write
This is used to serialize a representation of the object value provided. If there is aConvertannotation present on the provided type then this will use the converter specified to serialize a representation of the object. If however there is no annotation then this will delegate to the internal strategy. This returns true if the serialization has completed.- Parameters:
type- this is the type that represents the field or methodvalue- this is the object instance to be serializednode- this is the XML element to be serialized to- Returns:
- this returns true if it was serialized, false otherwise
- Throws:
Exception
-
isReference
This is used to determine if theValueprovided represents a reference. If it does represent a reference then this will return true, if it does not then this returns false.- Parameters:
value- this is the value instance to be evaluated- Returns:
- this returns true if the value represents a reference
-