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:
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
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.