public abstract class Serializer<A> extends Object
| Modifier and Type | Class and Description |
|---|---|
static class |
Serializer.Array<T> |
protected static class |
Serializer.BooleanSer |
static class |
Serializer.CompressionDeflateWrapper<E>
wraps another serializer and (de)compresses its output/input using Deflate
|
static class |
Serializer.CompressionWrapper<E>
wraps another serializer and (de)compresses its output/input
|
protected static class |
Serializer.EightByteSerializer<E> |
protected static class |
Serializer.FourByteSerializer<E> |
protected static class |
Serializer.IntegerSerializer |
protected static class |
Serializer.LongSerializer |
| Modifier and Type | Field and Description |
|---|---|
static Serializer<Object> |
BASIC
Basic serializer for most classes in
java.lang and java.util packages. |
static Serializer<BigDecimal> |
BIG_DECIMAL |
static Serializer<BigInteger> |
BIG_INTEGER |
static Serializer<Boolean> |
BOOLEAN |
static Serializer<boolean[]> |
BOOLEAN_ARRAY |
static Serializer<Byte> |
BYTE |
static Serializer<byte[]> |
BYTE_ARRAY
Serializes
byte[] it adds header which contains size information |
static Serializer<byte[]> |
BYTE_ARRAY_NOSIZE
Serializes
byte[] directly into underlying store
It does not store size, so it can not be used in Maps and other collections. |
static Serializer<Character> |
CHAR |
static Serializer<char[]> |
CHAR_ARRAY
Serializes
char[] it adds header which contains size information |
static Serializer<Class<?>> |
CLASS |
static Serializer<Date> |
DATE |
static Serializer<Double> |
DOUBLE |
static Serializer<double[]> |
DOUBLE_ARRAY
Serializes
double[] it adds header which contains size information |
static Serializer<Float> |
FLOAT |
static Serializer<float[]> |
FLOAT_ARRAY |
static Serializer<Object> |
ILLEGAL_ACCESS
Always throws
IllegalAccessError when invoked. |
static Serializer<int[]> |
INT_ARRAY
Serializes
int[] it adds header which contains size information |
static Serializer<Integer> |
INTEGER
Serializes Integer into 4 bytes, used mainly for testing.
|
static Serializer<Integer> |
INTEGER_PACKED
Packs positive Integer, so smaller positive values occupy less than 4 bytes.
|
static Serializer<Integer> |
INTEGER_PACKED_ZIGZAG
packs Integer so small values occupy less than 4 bytes.
|
static Serializer<Object> |
JAVA
Serializer which uses standard Java Serialization with
ObjectInputStream and ObjectOutputStream |
static Serializer<Long> |
LONG
Serializes Long into 8 bytes, used mainly for testing.
|
static Serializer<long[]> |
LONG_ARRAY
Serializes
long[] it adds header which contains size information |
static Serializer<Long> |
LONG_PACKED
Packs positive LONG, so smaller positive values occupy less than 8 bytes.
|
static Serializer<Long> |
LONG_PACKED_ZIGZAG
packs Long so small values occupy less than 8 bytes.
|
static Serializer<Long> |
RECID
Packs recid + it adds 3bits checksum.
|
static Serializer<long[]> |
RECID_ARRAY |
static Serializer<Short> |
SHORT |
static Serializer<short[]> |
SHORT_ARRAY |
static Serializer<String> |
STRING
Serializes strings using UTF8 encoding.
|
static Serializer<String> |
STRING_ASCII
Serializes strings using ASCII encoding (8 bit character).
|
static Serializer<String> |
STRING_INTERN
Serializes strings using UTF8 encoding.
|
static Serializer<String> |
STRING_NOSIZE
Serializes strings using UTF8 encoding.
|
static Serializer<String> |
STRING_XXHASH
Serializes strings using UTF8 encoding.
|
static Serializer<UUID> |
UUID
Serializers
UUID class |
| Constructor and Description |
|---|
Serializer() |
| Modifier and Type | Method and Description |
|---|---|
abstract A |
deserialize(DataInput in,
int available)
Deserialize the content of an object from a DataInput.
|
boolean |
equals(A a1,
A a2) |
int |
fixedSize()
Data could be serialized into record with variable size or fixed size.
|
BTreeKeySerializer |
getBTreeKeySerializer(Comparator comparator) |
int |
hashCode(A a,
int seed) |
boolean |
isTrusted()
MapDB has relax record size boundary checking.
|
abstract void |
serialize(DataOutput out,
A value)
Serialize the content of an object into a ObjectOutput
|
Object |
valueArrayCopyOfRange(Object vals,
int from,
int to) |
Object |
valueArrayDeleteValue(Object vals,
int pos) |
Object |
valueArrayDeserialize(DataInput in,
int size) |
Object |
valueArrayEmpty() |
Object |
valueArrayFromArray(Object[] objects) |
A |
valueArrayGet(Object vals,
int pos) |
Object |
valueArrayPut(Object vals,
int pos,
A newValue) |
void |
valueArraySerialize(DataOutput out,
Object vals) |
int |
valueArraySize(Object vals) |
Object |
valueArrayUpdateVal(Object vals,
int pos,
A newValue) |
public static final Serializer<Character> CHAR
public static final Serializer<String> STRING_XXHASH
Serializes strings using UTF8 encoding. Stores string size so can be used as collection serializer. Does not handle null values
Unlike STRING this method hashes String with more reliable XXHash.
public static final Serializer<String> STRING
public static final Serializer<String> STRING_INTERN
String.intern(),
so it could save some memory.
Stores string size so can be used as collection serializer.
Does not handle null valuespublic static final Serializer<String> STRING_ASCII
public static final Serializer<String> STRING_NOSIZE
public static final Serializer<Long> LONG
public static final Serializer<Long> LONG_PACKED
public static final Serializer<Long> LONG_PACKED_ZIGZAG
public static final Serializer<Integer> INTEGER
public static final Serializer<Integer> INTEGER_PACKED
public static final Serializer<Integer> INTEGER_PACKED_ZIGZAG
public static final Serializer<Boolean> BOOLEAN
public static final Serializer<Long> RECID
public static final Serializer<long[]> RECID_ARRAY
public static final Serializer<Object> ILLEGAL_ACCESS
IllegalAccessError when invoked. Useful for testing and assertions.public static final Serializer<byte[]> BYTE_ARRAY
byte[] it adds header which contains size informationpublic static final Serializer<byte[]> BYTE_ARRAY_NOSIZE
byte[] directly into underlying store
It does not store size, so it can not be used in Maps and other collections.public static final Serializer<char[]> CHAR_ARRAY
char[] it adds header which contains size informationpublic static final Serializer<int[]> INT_ARRAY
int[] it adds header which contains size informationpublic static final Serializer<long[]> LONG_ARRAY
long[] it adds header which contains size informationpublic static final Serializer<double[]> DOUBLE_ARRAY
double[] it adds header which contains size informationpublic static final Serializer<Object> JAVA
ObjectInputStream and ObjectOutputStreampublic static final Serializer<UUID> UUID
UUID classpublic static final Serializer<Byte> BYTE
public static final Serializer<Float> FLOAT
public static final Serializer<Double> DOUBLE
public static final Serializer<Short> SHORT
public static final Serializer<boolean[]> BOOLEAN_ARRAY
public static final Serializer<short[]> SHORT_ARRAY
public static final Serializer<float[]> FLOAT_ARRAY
public static final Serializer<BigInteger> BIG_INTEGER
public static final Serializer<BigDecimal> BIG_DECIMAL
public static final Serializer<Class<?>> CLASS
public static final Serializer<Date> DATE
public static final Serializer<Object> BASIC
java.lang and java.util packages.
It does not handle custom POJO classes. It also does not handle classes which
require access to DB itself.public abstract void serialize(DataOutput out, A value) throws IOException
out - ObjectOutput to save object intovalue - Object to serializeIOException - in case of IO errorpublic abstract A deserialize(DataInput in, int available) throws IOException
in - to read serialized data fromavailable - how many bytes are available in DataInput for reading, may be -1 (in streams) or 0 (null).IOException - in case of IO errorpublic int fixedSize()
public boolean isTrusted()
MapDB has relax record size boundary checking. It expect deserializer to read exactly as many bytes as were writen during serialization. If deserializer reads more bytes it might start reading others record data in store.
Some serializers (Kryo) have problems with this. To prevent this we can not read
data directly from store, but must copy them into separate byte[].
So zero copy optimalizations is disabled by default, and must be explicitly enabled here.
This flag indicates if this serializer was 'verified' to read as many bytes as it writes. It should be also much better tested etc.
public int hashCode(A a, int seed)
public void valueArraySerialize(DataOutput out, Object vals) throws IOException
IOExceptionpublic Object valueArrayDeserialize(DataInput in, int size) throws IOException
IOExceptionpublic int valueArraySize(Object vals)
public Object valueArrayEmpty()
public BTreeKeySerializer getBTreeKeySerializer(Comparator comparator)
Copyright © 2015. All Rights Reserved.