Class PofAnnotationSerializer<T>
- Type Parameters:
T
- the user type this PofAnnotationSerializer will (de)serialize
- All Implemented Interfaces:
PofSerializer
PofAnnotationSerializer
provides annotation based
de/serialization. This serializer must be instantiated with the intended
class which is eventually scanned for the presence of the following
annotations.
This serializer supports classes iff they are annotated with the type
level annotation; Portable
. This annotation is a marker annotation
with no children.
All fields annotated with PortableProperty
are explicitly
deemed POF serializable with the option of specifying overrides to
provide explicit behaviour such as:
- explicit POF indexes
- Custom
Codec
<T> to specify concrete implementations / customizations
The PortableProperty.value()
(POF index) can be omitted iff the
auto-indexing feature is enabled. This is enabled by instantiating this
class with the fAutoIndex
constructor argument. This feature
determines the index based on any explicit indexes specified and the name
of the portable properties. Currently objects with multiple versions is
not supported. The following illustrates the auto index algorithm:
Name | Explicit Index | Determined Index |
c | 1 | 1 |
a | 0 | |
b | 2 |
NOTE: This implementation does support objects that implement Evolvable
- Since:
- 3.7.1
- Author:
- hr
- See Also:
-
Constructor Summary
ConstructorDescriptionPofAnnotationSerializer
(int nTypeId, Class<T> clz) Constructs a PofAnnotationSerializer.PofAnnotationSerializer
(int nTypeId, Class<T> clz, boolean fAutoIndex) Constructs a PofAnnotationSerializer. -
Method Summary
Modifier and TypeMethodDescriptiondeserialize
(PofReader in) Deserialize a user type instance from a POF stream by reading its state using the specified PofReader object.protected com.tangosol.io.pof.reflect.internal.TypeMetadata
<T> Return theTypeMetadata
instance that holds structural information regarding the class this serializer (de)serializes.void
Serialize a user type instance to a POF stream by writing its state using the specified PofWriter object.
-
Constructor Details
-
PofAnnotationSerializer
Constructs a PofAnnotationSerializer.- Parameters:
nTypeId
- the POF type idclz
- type this serializer is aware of
-
PofAnnotationSerializer
Constructs a PofAnnotationSerializer.- Parameters:
nTypeId
- the POF type idclz
- type this serializer is aware offAutoIndex
- turns on the auto index feature
-
-
Method Details
-
serialize
Serialize a user type instance to a POF stream by writing its state using the specified PofWriter object.An implementation of PofSerializer is required to follow the following steps in sequence for writing out an object of a user type:
- If the object is evolvable, the implementation must set the version
by calling
PofWriter.setVersionId(int)
. - The implementation may write any combination of the properties of the user type by using the "write" methods of the PofWriter, but it must do so in the order of the property indexes.
- After all desired properties of the user type have been written,
the implementation must terminate the writing of the user type by
calling
PofWriter.writeRemainder(com.tangosol.util.Binary)
.
- Specified by:
serialize
in interfacePofSerializer<T>
- Parameters:
out
- the PofWriter with which to write the object's stateo
- the object to serialize- Throws:
IOException
- if an I/O error occurs
- If the object is evolvable, the implementation must set the version
by calling
-
deserialize
Deserialize a user type instance from a POF stream by reading its state using the specified PofReader object.An implementation of PofSerializer is required to follow the following steps in sequence for reading in an object of a user type:
- If the object is evolvable, the implementation must get the version
by calling
PofReader.getVersionId()
. - The implementation may read any combination of the properties of
the user type by using "read" methods of the PofReader, but it must
do so in the order of the property indexes. Additionally, the
implementation must call
PofReader.registerIdentity(java.lang.Object)
with the new instance prior to reading any properties which are user type instances themselves. - After all desired properties of the user type have been read, the
implementation must terminate the reading of the user type by
calling
PofReader.readRemainder()
.
- Specified by:
deserialize
in interfacePofSerializer<T>
- Parameters:
in
- the PofReader with which to read the object's state- Returns:
- the deserialized user type instance
- Throws:
IOException
- if an I/O error occurs
- If the object is evolvable, the implementation must get the version
by calling
-
getTypeMetadata
Return theTypeMetadata
instance that holds structural information regarding the class this serializer (de)serializes.- Returns:
- a TypeMetadata instance for the class this serializer (de)serializes
-