T
- the user type this PofAnnotationSerializer will (de)serializepublic class PofAnnotationSerializer<T> extends Object implements 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:
<T>
to specify concrete implementations / customizationsThe 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
Portable
Constructor and Description |
---|
PofAnnotationSerializer(int nTypeId, Class<T> clz)
Constructs a PofAnnotationSerializer.
|
PofAnnotationSerializer(int nTypeId, Class<T> clz, boolean fAutoIndex)
Constructs a PofAnnotationSerializer.
|
Modifier and Type | Method and Description |
---|---|
Object |
deserialize(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> |
getTypeMetadata()
Return the
TypeMetadata instance that holds structural information regarding the class this serializer (de)serializes. |
void |
serialize(PofWriter out, Object o)
Serialize a user type instance to a POF stream by writing its state using the specified PofWriter object.
|
public PofAnnotationSerializer(int nTypeId, Class<T> clz)
nTypeId
- the POF type idclz
- type this serializer is aware ofpublic void serialize(PofWriter out, Object o) throws IOException
An implementation of PofSerializer is required to follow the following steps in sequence for writing out an object of a user type:
PofWriter.setVersionId(int)
.PofWriter.writeRemainder(com.tangosol.util.Binary)
.serialize
in interface PofSerializer
out
- the PofWriter with which to write the object's stateo
- the object to serializeIOException
- if an I/O error occurspublic Object deserialize(PofReader in) throws IOException
An implementation of PofSerializer is required to follow the following steps in sequence for reading in an object of a user type:
PofReader.getVersionId()
.PofReader.registerIdentity(java.lang.Object)
with the new instance prior to reading any properties which are user type instances themselves.PofReader.readRemainder()
.deserialize
in interface PofSerializer
in
- the PofReader with which to read the object's stateIOException
- if an I/O error occursprotected com.tangosol.io.pof.reflect.internal.TypeMetadata<T> getTypeMetadata()
TypeMetadata
instance that holds structural information regarding the class this serializer (de)serializes.