public class NbObjectInputStream
extends java.io.ObjectInputStream
readClassDescriptor()baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, SERIAL_FILTER_PERMISSION, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING| Constructor | Description |
|---|---|
NbObjectInputStream(java.io.InputStream is) |
Create a new object input.
|
| Modifier and Type | Method | Description |
|---|---|---|
protected java.io.ObjectStreamClass |
readClassDescriptor() |
Provides a special handling for renaming of serialized classes.
|
static java.lang.Object |
readSafely(java.io.ObjectInput oi) |
Reads an object from the given object input.
|
protected java.lang.Class |
resolveClass(java.io.ObjectStreamClass v) |
|
static void |
skipSafely(java.io.ObjectInput oi) |
Skips an object from the given object input without loading it.
|
mark, markSupported, read, readAllBytes, readNBytes, reset, skip, transferToclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitavailable, close, defaultReadObject, enableResolveObject, getObjectInputFilter, read, read, readBoolean, readByte, readChar, readDouble, readFields, readFloat, readFully, readFully, readInt, readLine, readLong, readObject, readObjectOverride, readShort, readStreamHeader, readUnshared, readUnsignedByte, readUnsignedShort, readUTF, registerValidation, resolveObject, resolveProxyClass, setObjectInputFilter, skipBytespublic NbObjectInputStream(java.io.InputStream is)
throws java.io.IOException
is - underlying input streamjava.io.IOException - for the usual reasonsprotected java.lang.Class resolveClass(java.io.ObjectStreamClass v)
throws java.io.IOException,
java.lang.ClassNotFoundException
resolveClass in class java.io.ObjectInputStreamjava.io.IOExceptionjava.lang.ClassNotFoundExceptionprotected java.io.ObjectStreamClass readClassDescriptor()
throws java.io.IOException,
java.lang.ClassNotFoundException
Often, as the time goes the serialized classes evolve. They can be moved to new packages, renamed or changed (by a mistake) to not reflect the version of class stored in previous sessions.
This method deals with some of this incompatibilites and provides the module owners a way how to fix some of them.
When a class is read, the Utilities.translate is consulted
to find out what whether the name of the class is listed there and
what new value is assigned to it. This allows complete rename of the
serialized class. For example:
org.netbeans.core.NbMainExplorer
can be renamed to
org.netbeans.core.ui.NbExp - of course supposing that
the new class is able to read the serialized fields of the old one.
Another useful feature of this method is the ability to supress wrong
serialVersionUID. This was causing us a lot of problems,
because people were forgetting to specify the serialVersionUID
field in their sources and then it was hard to recover from it. Right
now we have a solution: Just use Utilities.translate framework
to assing your class org.yourpackage.YourClass the same
name as it had e.g. org.yourpackage.YourClass. This will
be interpreted by this method as a hit to suppress serialVersionUID
and the NbObjectInputStream will ignore its value.
Please see Utilities.translate to learn how your module
can provide list of classes that changed name or want to suppress serialVersionUID.
readClassDescriptor in class java.io.ObjectInputStreamjava.io.IOExceptionjava.lang.ClassNotFoundExceptionpublic static java.lang.Object readSafely(java.io.ObjectInput oi)
throws java.io.IOException
NbObjectOutputStream.writeSafely(java.io.ObjectOutput, java.lang.Object) method.oi - object inputjava.io.IOException - if IO error occuredSafeException - if the operation failed but the stream is ok
for further readingpublic static void skipSafely(java.io.ObjectInput oi)
throws java.io.IOException
NbObjectOutputStream.writeSafely(java.io.ObjectOutput, java.lang.Object) method.oi - object inputjava.io.IOException - if an I/O error occurredBuilt on April 24 2018. | Portions Copyright 1997-2018 Oracle. All rights reserved.