in modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java [221:373]
private Object readObject0() throws ClassNotFoundException, IOException {
curObj = null;
curFields = null;
byte ref = in.readByte();
switch (ref) {
case NULL:
return null;
case HANDLE:
return handles.lookup(readInt());
case JDK:
try {
return ctx.jdkMarshaller().unmarshal(this, clsLdr);
}
catch (IgniteCheckedException e) {
IOException ioEx = e.getCause(IOException.class);
if (ioEx != null)
throw ioEx;
else
throw new IOException("Failed to deserialize object with JDK marshaller.", e);
}
case BYTE:
return readByte();
case SHORT:
return readShort();
case INT:
return readInt();
case LONG:
return readLong();
case FLOAT:
return readFloat();
case DOUBLE:
return readDouble();
case CHAR:
return readChar();
case BOOLEAN:
return readBoolean();
case BYTE_ARR:
return readByteArray();
case SHORT_ARR:
return readShortArray();
case INT_ARR:
return readIntArray();
case LONG_ARR:
return readLongArray();
case FLOAT_ARR:
return readFloatArray();
case DOUBLE_ARR:
return readDoubleArray();
case CHAR_ARR:
return readCharArray();
case BOOLEAN_ARR:
return readBooleanArray();
case OBJ_ARR:
return readArray(readClass());
case STR:
return readString();
case UUID:
return readUuid();
case PROPS:
return readProperties();
case ARRAY_LIST:
return readArrayList();
case HASH_MAP:
return readHashMap(false);
case HASH_SET:
return readHashSet(HASH_SET_MAP_OFF);
case LINKED_LIST:
return readLinkedList();
case LINKED_HASH_MAP:
return readLinkedHashMap(false);
case LINKED_HASH_SET:
return readLinkedHashSet(HASH_SET_MAP_OFF);
case DATE:
return readDate();
case CLS:
return readClass();
case PROXY:
Class<?>[] intfs = new Class<?>[readInt()];
for (int i = 0; i < intfs.length; i++)
intfs[i] = readClass();
InvocationHandler ih = (InvocationHandler)readObject();
return Proxy.newProxyInstance(clsLdr != null ? clsLdr : U.gridClassLoader(), intfs, ih);
case ENUM:
case EXTERNALIZABLE:
case SERIALIZABLE:
int typeId = readInt();
OptimizedClassDescriptor desc = typeId == 0 ?
classDescriptor(clsMap, U.forName(readUTF(), clsLdr, ctx.classNameFilter()), useCache, ctx, mapper) :
classDescriptor(clsMap, typeId, clsLdr, useCache, ctx, mapper);
curCls = desc.describedClass();
try {
return desc.read(this);
}
catch (IOException e) {
throw new IOException("Failed to deserialize object [typeName=" +
desc.describedClass().getName() + ']', e);
}
default:
SB msg = new SB("Unexpected error occurred during unmarshalling");
if (curCls != null)
msg.a(" of an instance of the class: ").a(curCls.getName());
msg.a(". Check that all nodes are running the same version of Ignite and that all nodes have " +
"GridOptimizedMarshaller configured with identical optimized classes lists, if any " +
"(see setClassNames and setClassNamesPath methods). If your serialized classes implement " +
"java.io.Externalizable interface, verify that serialization logic is correct.");
throw new IOException(msg.toString());
}
}