Class AnnotationStrategy

  • All Implemented Interfaces:
    Strategy

    public class AnnotationStrategy
    extends java.lang.Object
    implements 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.

    Author:
    Niall Gallagher
    See Also:
    TreeStrategy
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Value read​(Type type, NodeMap<InputNode> node, java.util.Map map)
      This is used to read the Value which will be used to represent the deserialized object.
      boolean write​(Type type, java.lang.Object value, NodeMap<OutputNode> node, java.util.Map map)
      This is used to serialize a representation of the object value provided.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AnnotationStrategy

        public AnnotationStrategy()
        Constructor for the AnnotationStrategy object. This creates a strategy that intercepts serialization on any annotated method or field. If no annotation exists then this delegates to an internal TreeStrategy object.
      • AnnotationStrategy

        public AnnotationStrategy​(Strategy strategy)
        Constructor for the AnnotationStrategy object. This creates a strategy that intercepts serialization on any annotated method or field. If no annotation exists then this will delegate to the Strategy provided.
        Parameters:
        strategy - the internal strategy to delegate to
    • Method Detail

      • read

        public Value read​(Type type,
                          NodeMap<InputNode> node,
                          java.util.Map map)
                   throws java.lang.Exception
        This is used to read the Value which 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:
        read in interface Strategy
        Parameters:
        type - this is the type that represents a method or field
        node - this is the node representing the XML element
        map - this is the session map that contain variables
        Returns:
        the value representing the deserialized value
        Throws:
        java.lang.Exception - thrown if the class cannot be resolved
      • write

        public boolean write​(Type type,
                             java.lang.Object value,
                             NodeMap<OutputNode> node,
                             java.util.Map map)
                      throws java.lang.Exception
        This is used to serialize a representation of the object value provided. If there is a Convert annotation 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:
        write in interface Strategy
        Parameters:
        type - this is the type that represents the field or method
        value - this is the object instance to be serialized
        node - this is the XML element to be serialized to
        map - this is the session map used by the serializer
        Returns:
        this returns true if it was serialized, false otherwise
        Throws:
        java.lang.Exception - thrown if the details cannot be set