org.infinispan.schematic.internal
Class SchematicExternalizer<T>
java.lang.Object
org.infinispan.schematic.internal.SchematicExternalizer<T>
- Type Parameters:
T
- the type of class
- All Implemented Interfaces:
- Serializable, org.infinispan.marshall.Externalizer<T>
- Direct Known Subclasses:
- AddValueIfAbsentOperation.Externalizer, AddValueOperation.Externalizer, Binary.Externalizer, ClearOperation.Externalizer, Code.Externalizer, DocumentExternalizer, MaxKey.Externalizer, MinKey.Externalizer, Null.Externalizer, ObjectId.Externalizer, Paths.Externalizer, PutIfAbsentOperation.Externalizer, PutOperation.Externalizer, RemoveAllValuesOperation.Externalizer, RemoveAtIndexOperation.Externalizer, RemoveOperation.Externalizer, RemoveValueOperation.Externalizer, RetainAllValuesOperation.Externalizer, SchematicEntryDelta.Externalizer, SchematicEntryLiteral.Externalizer, SetValueOperation.Externalizer, Symbol.Externalizer, Timestamp.Externalizer
public abstract class SchematicExternalizer<T>
- extends Object
- implements org.infinispan.marshall.Externalizer<T>
An abstract base class for all Schematic Externalizer
implementations.
There are two primary advantages of implementing AdvancedExternalizer
versus implementing
Externalizer
:
- The class to be externalized must be modified with a
@SerializeWith
annotation. Since SchematicEntryLiteral
is our class, this is possible.
- The generated payloads (shipped between Infinispan processes) are slightly smaller, since it includes only the
AdvancedExternalizer
's identifier
instead of the class information and/or the serialized
Externalizer
. But for this to work, the advanced externalizers need to be registered with the
cache container at startup.
Unfortunately, Infinispan in AS7.1 does not allow defining AdvancedExternalizer
classes for the cache container, and
thus they cannot be used (see MODE-1524 for details). Therefore, we
have to rely only upon implementing Externalizer
.
This abstract class was created so that the Schematic externalizers can easily extend it, but so that we can encapsulate in
this abstract class the use of Externalizer
or AdvancedExternalizer
. Once Infinispan in AS7 supports
user-defined advanced externalizers, then we can simply change this class to implement AdvancedExternalizer
rather than
Externalizer
.
- See Also:
- Serialized Form
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.infinispan.marshall.Externalizer |
readObject, writeObject |
SchematicExternalizer
public SchematicExternalizer()
getId
public abstract Integer getId()
getTypeClasses
public abstract Set<Class<? extends T>> getTypeClasses()
Copyright © 2008-2012 JBoss, a division of Red Hat. All Rights Reserved.