Signed-off-by: StevenRS11 <stevenrs11@aol.com>
This commit is contained in:
43
StevenDimDoors/mod_pocketDim/ObjectSaveInputStream.java
Normal file
43
StevenDimDoors/mod_pocketDim/ObjectSaveInputStream.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package StevenDimDoors.mod_pocketDim;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InvalidClassException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectStreamClass;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
|
||||
public class ObjectSaveInputStream extends ObjectInputStream {
|
||||
|
||||
// private static Logger logger = LoggerFactory.getLogger(ObjectSaveInputStream.class);
|
||||
|
||||
public ObjectSaveInputStream(InputStream in) throws IOException {
|
||||
super(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
|
||||
ObjectStreamClass resultClassDescriptor = super.readClassDescriptor(); // initially streams descriptor
|
||||
Class localClass; // the class in the local JVM that this descriptor represents.
|
||||
try {
|
||||
localClass = Class.forName(resultClassDescriptor.getName());
|
||||
} catch (ClassNotFoundException e) {
|
||||
// logger.error("No local class for " + resultClassDescriptor.getName(), e);
|
||||
return resultClassDescriptor;
|
||||
}
|
||||
ObjectStreamClass localClassDescriptor = ObjectStreamClass.lookup(localClass);
|
||||
if (localClassDescriptor != null) { // only if class implements serializable
|
||||
final long localSUID = localClassDescriptor.getSerialVersionUID();
|
||||
final long streamSUID = resultClassDescriptor.getSerialVersionUID();
|
||||
if (streamSUID != localSUID) { // check for serialVersionUID mismatch.
|
||||
final StringBuffer s = new StringBuffer("Overriding serialized class version mismatch: ");
|
||||
s.append("local serialVersionUID = ").append(localSUID);
|
||||
s.append(" stream serialVersionUID = ").append(streamSUID);
|
||||
Exception e = new InvalidClassException(s.toString());
|
||||
// logger.error("Potentially Fatal Deserialization Operation.", e);
|
||||
resultClassDescriptor = localClassDescriptor; // Use local class descriptor for deserialization
|
||||
}
|
||||
}
|
||||
return resultClassDescriptor;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user