final IObjectIOInputStream objectIOInputStream,
final boolean setOriginalValue) throws ObjectIOException,
ObjectIODataRecordNotFoundException,
ObjectIOClassNotFoundException, ObjectIOInvalidClassException,
ObjectIODataCorruptedException, ObjectIONotSerializableException {
final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo;
objectAndPersistInfo.clearSonReadObject();
Method method = classInfo.getReadObjectMethod();
if (method == null) {
try {
objectIOInputStream.defaultReadObject();
} catch (IOException exception) {
throwIOExceptionCause(exception);
} catch (ClassNotFoundException exception) {
throw new ObjectIOClassNotFoundException(exception);
}
} else {
final Object object = objectAndPersistInfo.getObject();
objectAndPersistInfo.setLoading(true);
try {
helperReflect.invokeMethod(object, method,
new Object[] { objectIOInputStream });
} catch (ReflectException exception) {
final Throwable cause = exception.getCause();
if (InvocationTargetException.class.equals(cause.getClass())) {
throwsInvokationTargetException(cause);
method = classInfo.getReadObjectNoDataMethod();
if (method == null) {
throw new ObjectIOException(exception);
} else {
try {
helperReflect.invokeMethod(objectAndPersistInfo,