public class SerializerPojo extends SerializerBase implements java.io.Serializable
| Modifier and Type | Class and Description |
|---|---|
protected static class |
SerializerPojo.ClassInfo
Stores info about single class stored in MapDB.
|
protected static class |
SerializerPojo.FieldInfo
Stores info about single field stored in MapDB.
|
protected class |
SerializerPojo.ObjectInputStream2 |
protected class |
SerializerPojo.ObjectOutputStream2 |
SerializerBase.FastArrayList<K>, SerializerBase.Header, SerializerBase.HeaderMapDB, SerializerBase.singletonsSerializer.CompressionWrapper<E>| Modifier and Type | Field and Description |
|---|---|
protected static java.lang.reflect.Method |
androidConstructor |
private static java.lang.reflect.Method |
androidConstructorGinger |
protected java.util.Map<java.lang.Class<?>,java.lang.Integer> |
class2classId |
protected static java.util.Map<java.lang.Class<?>,java.lang.reflect.Constructor<?>> |
class2constuctor |
protected java.util.Map<java.lang.Integer,java.lang.Class<?>> |
classId2class |
private static java.lang.Object |
constructorId |
protected DB |
db |
protected java.util.concurrent.locks.ReentrantReadWriteLock |
lock |
protected int |
oldSize |
protected java.util.concurrent.CopyOnWriteArrayList<SerializerPojo.ClassInfo> |
registered |
protected java.util.concurrent.CopyOnWriteArrayList<Fun.Function1> |
serializationTransformsDeserialize |
protected java.util.concurrent.CopyOnWriteArrayList<Fun.Function1> |
serializationTransformsSerialize |
protected static Serializer<java.util.concurrent.CopyOnWriteArrayList<SerializerPojo.ClassInfo>> |
serializer |
private static long |
serialVersionUID |
protected static java.lang.reflect.Method |
sunConstructor |
protected static java.lang.Object |
sunReflFac |
EMPTY_STRINGBASIC, BOOLEAN, BYTE_ARRAY, BYTE_ARRAY_NOSIZE, CHAR_ARRAY, DOUBLE_ARRAY, ILLEGAL_ACCESS, INT_ARRAY, INTEGER, JAVA, LONG, LONG_ARRAY, STRING, STRING_ASCII, STRING_INTERN, STRING_NOSIZE, UUID| Constructor and Description |
|---|
SerializerPojo(java.util.concurrent.CopyOnWriteArrayList<SerializerPojo.ClassInfo> registered) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
assertClassSerializable(java.lang.Class<?> clazz) |
protected static java.lang.Class<?> |
classForName(java.lang.String className) |
boolean |
containsClass(java.lang.Class<?> clazz) |
protected <T> T |
createInstanceSkippinkConstructor(java.lang.Class<T> clazz)
For pojo serialization we need to instantiate class without invoking its constructor.
|
java.lang.Object |
deserialize(java.io.DataInput is,
int capacity)
Deserialize the content of an object from a DataInput.
|
protected java.lang.Object |
deserializeUnknownHeader(java.io.DataInput in,
int head,
SerializerBase.FastArrayList<java.lang.Object> objectStack)
override this method to extend SerializerBase functionality
|
int |
getClassId(java.lang.Class<?> clazz) |
protected Engine |
getEngine() |
protected java.io.ObjectStreamField[] |
getFields(java.lang.Class<?> clazz) |
java.lang.Object |
getFieldValue(SerializerPojo.FieldInfo fieldInfo,
java.lang.Object object) |
private static java.lang.reflect.Method |
getInheritableMethod(java.lang.Class<?> cl,
java.lang.String name,
java.lang.Class<?>[] argTypes,
java.lang.Class<?> returnType)
Returns non-static, non-abstract method with given signature provided it
is defined by or accessible (via inheritance) by the given class, or
null if no match found.
|
boolean |
hasUnsavedChanges() |
void |
registerClass(java.lang.Class<?> clazz) |
void |
save(Engine e) |
protected void |
saveClassInfo()
action performed after classInfo was modified, feel free to override
|
void |
serialize(java.io.DataOutput out,
java.lang.Object obj)
Serialize the content of an object into a ObjectOutput
|
<A,R> void |
serializerTransformAdd(Fun.Function1<A,R> beforeSerialization,
Fun.Function1<R,A> afterDeserialization)
Add interceptor which may modify all deserialized/serialized objects
|
<A,R> void |
serializerTransformRemove(Fun.Function1<A,R> beforeSerialization,
Fun.Function1<R,A> afterDeserialization)
Removes interceptor which may modify all deserialized/serialized objects
|
protected void |
serializeUnknownObject(java.io.DataOutput out,
java.lang.Object obj,
SerializerBase.FastArrayList<java.lang.Object> objectStack)
override this method to extend SerializerBase functionality
|
protected void |
setDb(DB db) |
void |
setFieldValue(SerializerPojo.FieldInfo fieldInfo,
java.lang.Object object,
java.lang.Object value) |
protected boolean |
usesAdvancedSerialization(java.lang.Class<?> clazz) |
assertSerializable, booleanToByteArray, deserialize, deserializeClass, deserializeMapDB, deserializeString, fixedSize, readBooleanArray, serialize, serializeClassprotected static final Serializer<java.util.concurrent.CopyOnWriteArrayList<SerializerPojo.ClassInfo>> serializer
private static final long serialVersionUID
protected final java.util.concurrent.locks.ReentrantReadWriteLock lock
protected DB db
protected java.util.concurrent.CopyOnWriteArrayList<SerializerPojo.ClassInfo> registered
protected java.util.Map<java.lang.Class<?>,java.lang.Integer> class2classId
protected java.util.Map<java.lang.Integer,java.lang.Class<?>> classId2class
protected static java.lang.reflect.Method sunConstructor
protected static java.lang.Object sunReflFac
protected static java.lang.reflect.Method androidConstructor
private static java.lang.reflect.Method androidConstructorGinger
private static java.lang.Object constructorId
protected static java.util.Map<java.lang.Class<?>,java.lang.reflect.Constructor<?>> class2constuctor
protected int oldSize
protected java.util.concurrent.CopyOnWriteArrayList<Fun.Function1> serializationTransformsSerialize
protected java.util.concurrent.CopyOnWriteArrayList<Fun.Function1> serializationTransformsDeserialize
public SerializerPojo(java.util.concurrent.CopyOnWriteArrayList<SerializerPojo.ClassInfo> registered)
protected static java.lang.Class<?> classForName(java.lang.String className)
protected void setDb(DB db)
public void registerClass(java.lang.Class<?> clazz)
throws java.io.IOException
java.io.IOExceptionprotected boolean usesAdvancedSerialization(java.lang.Class<?> clazz)
private static java.lang.reflect.Method getInheritableMethod(java.lang.Class<?> cl,
java.lang.String name,
java.lang.Class<?>[] argTypes,
java.lang.Class<?> returnType)
protected void saveClassInfo()
protected java.io.ObjectStreamField[] getFields(java.lang.Class<?> clazz)
protected void assertClassSerializable(java.lang.Class<?> clazz)
throws java.io.NotSerializableException,
java.io.InvalidClassException
java.io.NotSerializableExceptionjava.io.InvalidClassExceptionpublic java.lang.Object getFieldValue(SerializerPojo.FieldInfo fieldInfo, java.lang.Object object)
public void setFieldValue(SerializerPojo.FieldInfo fieldInfo, java.lang.Object object, java.lang.Object value)
public boolean containsClass(java.lang.Class<?> clazz)
public int getClassId(java.lang.Class<?> clazz)
protected Engine getEngine()
getEngine in class SerializerBaseprotected void serializeUnknownObject(java.io.DataOutput out,
java.lang.Object obj,
SerializerBase.FastArrayList<java.lang.Object> objectStack)
throws java.io.IOException
SerializerBaseserializeUnknownObject in class SerializerBasejava.io.IOExceptionprotected java.lang.Object deserializeUnknownHeader(java.io.DataInput in,
int head,
SerializerBase.FastArrayList<java.lang.Object> objectStack)
throws java.io.IOException
SerializerBasedeserializeUnknownHeader in class SerializerBasejava.io.IOExceptionprotected <T> T createInstanceSkippinkConstructor(java.lang.Class<T> clazz)
throws java.lang.NoSuchMethodException,
java.lang.reflect.InvocationTargetException,
java.lang.IllegalAccessException,
java.lang.InstantiationException
java.lang.NoSuchMethodExceptionjava.lang.reflect.InvocationTargetExceptionjava.lang.IllegalAccessExceptionjava.lang.InstantiationExceptionpublic boolean hasUnsavedChanges()
public void save(Engine e)
public <A,R> void serializerTransformAdd(Fun.Function1<A,R> beforeSerialization, Fun.Function1<R,A> afterDeserialization)
beforeSerialization - transform called on all object before they are serializedafterDeserialization - transform called on all object after they are serializedpublic <A,R> void serializerTransformRemove(Fun.Function1<A,R> beforeSerialization, Fun.Function1<R,A> afterDeserialization)
beforeSerialization - transform called on all object before they are serializedafterDeserialization - transform called on all object after they are serializedpublic void serialize(java.io.DataOutput out,
java.lang.Object obj)
throws java.io.IOException
Serializerserialize in interface Serializer<java.lang.Object>serialize in class SerializerBaseout - ObjectOutput to save object intoobj - Object to serializejava.io.IOExceptionpublic java.lang.Object deserialize(java.io.DataInput is,
int capacity)
throws java.io.IOException
Serializerdeserialize in interface Serializer<java.lang.Object>deserialize in class SerializerBaseis - to read serialized data fromcapacity - how many bytes are available in DataInput for reading, may be -1 (in streams) or 0 (null).java.io.IOException