in geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java [475:894]
private static void initializeWellKnownSerializers() {
// ArrayBlockingQueue does not have zero-arg constructor
// LinkedBlockingQueue does have zero-arg constructor but no way to get capacity
classesToSerializers.put("java.lang.String", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
try {
writeString((String) o, out);
} catch (UTFDataFormatException ex) {
// See bug 30428
String s = "While writing a String of length " + ((String) o).length();
UTFDataFormatException ex2 = new UTFDataFormatException(s);
ex2.initCause(ex);
throw ex2;
}
return true;
}
});
classesToSerializers.put("java.net.InetAddress", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
InetAddress address = (InetAddress) o;
out.writeByte(DSCODE.INET_ADDRESS.toByte());
writeInetAddress(address, out);
return true;
}
});
classesToSerializers.put("java.net.Inet4Address", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
InetAddress address = (InetAddress) o;
out.writeByte(DSCODE.INET_ADDRESS.toByte());
writeInetAddress(address, out);
return true;
}
});
classesToSerializers.put("java.net.Inet6Address", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
InetAddress address = (InetAddress) o;
out.writeByte(DSCODE.INET_ADDRESS.toByte());
writeInetAddress(address, out);
return true;
}
});
classesToSerializers.put("java.lang.Class", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Class c = (Class) o;
if (c.isPrimitive()) {
StaticSerialization.writePrimitiveClass(c, out);
} else {
out.writeByte(DSCODE.CLASS.toByte());
writeClass(c, out);
}
return true;
}
});
classesToSerializers.put("java.lang.Boolean", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Boolean value = (Boolean) o;
out.writeByte(DSCODE.BOOLEAN.toByte());
writeBoolean(value, out);
return true;
}
});
classesToSerializers.put("java.lang.Character", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Character value = (Character) o;
out.writeByte(DSCODE.CHARACTER.toByte());
writeCharacter(value, out);
return true;
}
});
classesToSerializers.put("java.lang.Byte", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Byte value = (Byte) o;
out.writeByte(DSCODE.BYTE.toByte());
writeByte(value, out);
return true;
}
});
classesToSerializers.put("java.lang.Short", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Short value = (Short) o;
out.writeByte(DSCODE.SHORT.toByte());
writeShort(value, out);
return true;
}
});
classesToSerializers.put("java.lang.Integer", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Integer value = (Integer) o;
out.writeByte(DSCODE.INTEGER.toByte());
writeInteger(value, out);
return true;
}
});
classesToSerializers.put("java.lang.Long", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Long value = (Long) o;
out.writeByte(DSCODE.LONG.toByte());
writeLong(value, out);
return true;
}
});
classesToSerializers.put("java.lang.Float", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Float value = (Float) o;
out.writeByte(DSCODE.FLOAT.toByte());
writeFloat(value, out);
return true;
}
});
classesToSerializers.put("java.lang.Double", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Double value = (Double) o;
out.writeByte(DSCODE.DOUBLE.toByte());
writeDouble(value, out);
return true;
}
});
classesToSerializers.put("[Z", // boolean[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.BOOLEAN_ARRAY.toByte());
writeBooleanArray((boolean[]) o, out);
return true;
}
});
classesToSerializers.put("[B", // byte[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
byte[] array = (byte[]) o;
out.writeByte(DSCODE.BYTE_ARRAY.toByte());
writeByteArray(array, out);
return true;
}
});
classesToSerializers.put("[C", // char[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.CHAR_ARRAY.toByte());
writeCharArray((char[]) o, out);
return true;
}
});
classesToSerializers.put("[D", // double[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
double[] array = (double[]) o;
out.writeByte(DSCODE.DOUBLE_ARRAY.toByte());
writeDoubleArray(array, out);
return true;
}
});
classesToSerializers.put("[F", // float[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
float[] array = (float[]) o;
out.writeByte(DSCODE.FLOAT_ARRAY.toByte());
writeFloatArray(array, out);
return true;
}
});
classesToSerializers.put("[I", // int[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
int[] array = (int[]) o;
out.writeByte(DSCODE.INT_ARRAY.toByte());
writeIntArray(array, out);
return true;
}
});
classesToSerializers.put("[J", // long[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
long[] array = (long[]) o;
out.writeByte(DSCODE.LONG_ARRAY.toByte());
writeLongArray(array, out);
return true;
}
});
classesToSerializers.put("[S", // short[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
short[] array = (short[]) o;
out.writeByte(DSCODE.SHORT_ARRAY.toByte());
writeShortArray(array, out);
return true;
}
});
classesToSerializers.put("[Ljava.lang.String;", // String[]
new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
String[] array = (String[]) o;
out.writeByte(DSCODE.STRING_ARRAY.toByte());
writeStringArray(array, out);
return true;
}
});
WellKnownDS TIME_UNIT_SERIALIZER = new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
TimeUnit timeUnit = (TimeUnit) o;
switch (timeUnit) {
case NANOSECONDS: {
out.writeByte(DSCODE.TIME_UNIT.toByte());
out.writeByte(StaticSerialization.TIME_UNIT_NANOSECONDS);
break;
}
case MICROSECONDS: {
out.writeByte(DSCODE.TIME_UNIT.toByte());
out.writeByte(StaticSerialization.TIME_UNIT_MICROSECONDS);
break;
}
case MILLISECONDS: {
out.writeByte(DSCODE.TIME_UNIT.toByte());
out.writeByte(StaticSerialization.TIME_UNIT_MILLISECONDS);
break;
}
case SECONDS: {
out.writeByte(DSCODE.TIME_UNIT.toByte());
out.writeByte(StaticSerialization.TIME_UNIT_SECONDS);
break;
}
// handles all other timeunits
default: {
writeGemFireEnum(timeUnit, out);
}
}
return true;
}
};
// in java 9 and above, TimeUnit implementation changes. the class name of these units are the
// same now.
if (TimeUnit.NANOSECONDS.getClass().getName().equals(TimeUnit.SECONDS.getClass().getName())) {
classesToSerializers.put(TimeUnit.class.getName(), TIME_UNIT_SERIALIZER);
}
// in java 8 and below
else {
classesToSerializers.put(TimeUnit.NANOSECONDS.getClass().getName(), TIME_UNIT_SERIALIZER);
classesToSerializers.put(TimeUnit.MICROSECONDS.getClass().getName(), TIME_UNIT_SERIALIZER);
classesToSerializers.put(TimeUnit.MILLISECONDS.getClass().getName(), TIME_UNIT_SERIALIZER);
classesToSerializers.put(TimeUnit.SECONDS.getClass().getName(), TIME_UNIT_SERIALIZER);
}
classesToSerializers.put("java.util.Date", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Date date = (Date) o;
out.writeByte(DSCODE.DATE.toByte());
writeDate(date, out);
return true;
}
});
classesToSerializers.put("java.io.File", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
File file = (File) o;
out.writeByte(DSCODE.FILE.toByte());
writeFile(file, out);
return true;
}
});
classesToSerializers.put("java.util.ArrayList", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
ArrayList list = (ArrayList) o;
out.writeByte(DSCODE.ARRAY_LIST.toByte());
writeArrayList(list, out);
return true;
}
});
classesToSerializers.put("java.util.LinkedList", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
LinkedList list = (LinkedList) o;
out.writeByte(DSCODE.LINKED_LIST.toByte());
writeLinkedList(list, out);
return true;
}
});
classesToSerializers.put("java.util.Vector", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.VECTOR.toByte());
writeVector((Vector) o, out);
return true;
}
});
classesToSerializers.put("java.util.Stack", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.STACK.toByte());
writeStack((Stack) o, out);
return true;
}
});
classesToSerializers.put("java.util.HashSet", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
HashSet list = (HashSet) o;
out.writeByte(DSCODE.HASH_SET.toByte());
writeHashSet(list, out);
return true;
}
});
classesToSerializers.put("java.util.LinkedHashSet", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.LINKED_HASH_SET.toByte());
writeLinkedHashSet((LinkedHashSet) o, out);
return true;
}
});
classesToSerializers.put("java.util.HashMap", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
HashMap list = (HashMap) o;
out.writeByte(DSCODE.HASH_MAP.toByte());
writeHashMap(list, out);
return true;
}
});
classesToSerializers.put("java.util.IdentityHashMap", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.IDENTITY_HASH_MAP.toByte());
writeIdentityHashMap((IdentityHashMap) o, out);
return true;
}
});
classesToSerializers.put("java.util.Hashtable", new WellKnownPdxDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.HASH_TABLE.toByte());
writeHashtable((Hashtable) o, out);
return true;
}
});
classesToSerializers.put("java.util.Properties", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
Properties props = (Properties) o;
out.writeByte(DSCODE.PROPERTIES.toByte());
writeProperties(props, out);
return true;
}
});
classesToSerializers.put("java.util.TreeMap", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.TREE_MAP.toByte());
writeTreeMap((TreeMap) o, out);
return true;
}
});
classesToSerializers.put("java.util.TreeSet", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.TREE_SET.toByte());
writeTreeSet((TreeSet) o, out);
return true;
}
});
if (is662SerializationEnabled()) {
classesToSerializers.put("java.math.BigInteger", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.BIG_INTEGER.toByte());
writeBigInteger((BigInteger) o, out);
return true;
}
});
classesToSerializers.put("java.math.BigDecimal", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.BIG_DECIMAL.toByte());
writeBigDecimal((BigDecimal) o, out);
return true;
}
});
classesToSerializers.put("java.util.UUID", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.UUID.toByte());
writeUUID((UUID) o, out);
return true;
}
});
classesToSerializers.put("java.sql.Timestamp", new WellKnownDS() {
@Override
public boolean toData(Object o, DataOutput out) throws IOException {
out.writeByte(DSCODE.TIMESTAMP.toByte());
writeTimestamp((Timestamp) o, out);
return true;
}
});
}
}