in serialization/src/main/java/com/twitter/serial/util/SerializableUtils.java [79:111]
public static <T> T fromByteArray(@Nullable byte[] bytes, @Nullable final Map<Long, Class<?>> classMapping)
throws IOException, ClassNotFoundException {
if (bytes == null || bytes.length == 0) {
return null;
}
final ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes);
ObjectInputStream objectStream = null;
try {
if (classMapping == null) {
objectStream = new ObjectInputStream(byteStream);
} else {
objectStream = new ObjectInputStream(byteStream) {
@Override
@NotNull
protected Class<?> resolveClass(@NotNull ObjectStreamClass osClass)
throws IOException, ClassNotFoundException {
final Class<?> resolvedClass = classMapping.get(osClass.getSerialVersionUID());
if (resolvedClass != null) {
return resolvedClass;
}
return super.resolveClass(osClass);
}
};
}
final T item = (T) objectStream.readObject();
return item;
} catch (IOException | ClassNotFoundException | IllegalStateException e) {
throw e;
} finally {
InternalSerialUtils.closeSilently(objectStream);
InternalSerialUtils.closeSilently(byteStream);
}
}