diff options
author | Michael Koch <konqueror@gmx.de> | 2003-06-25 06:31:59 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2003-06-25 06:31:59 +0000 |
commit | 3cc9a95d27f700508a686b8414dcffff9b4d75e9 (patch) | |
tree | 0604196de2a75326b3e65189f1592275cda74cb8 /libjava/java/io/ObjectOutputStream.java | |
parent | 55a5d1f7142fcb3e5cfad518b987c20d441e78cd (diff) | |
download | gcc-3cc9a95d27f700508a686b8414dcffff9b4d75e9.zip gcc-3cc9a95d27f700508a686b8414dcffff9b4d75e9.tar.gz gcc-3cc9a95d27f700508a686b8414dcffff9b4d75e9.tar.bz2 |
2003-06-25 Michael Koch <konqueror@gmx.de>
* java/io/ObjectInputStream.java
(readClassDescriptor): New method.
(readObject): Moved functionality to readClassDescriptor().
* java/io/ObjectOutputStream.java
(writeClassDescriptor): New method.
(writeObject): Moved functionality to writeClassDescriptor().
From-SVN: r68465
Diffstat (limited to 'libjava/java/io/ObjectOutputStream.java')
-rw-r--r-- | libjava/java/io/ObjectOutputStream.java | 81 |
1 files changed, 41 insertions, 40 deletions
diff --git a/libjava/java/io/ObjectOutputStream.java b/libjava/java/io/ObjectOutputStream.java index cb461231..da01b57 100644 --- a/libjava/java/io/ObjectOutputStream.java +++ b/libjava/java/io/ObjectOutputStream.java @@ -224,46 +224,7 @@ public class ObjectOutputStream extends OutputStream } if (obj instanceof ObjectStreamClass) - { - ObjectStreamClass osc = (ObjectStreamClass)obj; - realOutput.writeByte (TC_CLASSDESC); - realOutput.writeUTF (osc.getName ()); - realOutput.writeLong (osc.getSerialVersionUID ()); - assignNewHandle (obj); - - int flags = osc.getFlags (); - - if (protocolVersion == PROTOCOL_VERSION_2 - && osc.isExternalizable ()) - flags |= SC_BLOCK_DATA; - - realOutput.writeByte (flags); - - ObjectStreamField[] fields = osc.fields; - realOutput.writeShort (fields.length); - - ObjectStreamField field; - for (int i=0; i < fields.length; i++) - { - field = fields[i]; - realOutput.writeByte (field.getTypeCode ()); - realOutput.writeUTF (field.getName ()); - - if (! field.isPrimitive ()) - writeObject (field.getTypeString ()); - } - - boolean oldmode = setBlockDataMode (true); - annotateClass (osc.forClass ()); - setBlockDataMode (oldmode); - realOutput.writeByte (TC_ENDBLOCKDATA); - - if (osc.isSerializable ()) - writeObject (osc.getSuper ()); - else - writeObject (null); - break; - } + writeClassDescriptor ((ObjectStreamClass) obj); if ((replacementEnabled || obj instanceof Serializable) && ! replaceDone) @@ -406,6 +367,46 @@ public class ObjectOutputStream extends OutputStream } } + protected void writeClassDescriptor (ObjectStreamClass osc) throws IOException + { + realOutput.writeByte (TC_CLASSDESC); + realOutput.writeUTF (osc.getName ()); + realOutput.writeLong (osc.getSerialVersionUID ()); + assignNewHandle (osc); + + int flags = osc.getFlags (); + + if (protocolVersion == PROTOCOL_VERSION_2 + && osc.isExternalizable ()) + flags |= SC_BLOCK_DATA; + + realOutput.writeByte (flags); + + ObjectStreamField[] fields = osc.fields; + realOutput.writeShort (fields.length); + + ObjectStreamField field; + for (int i=0; i < fields.length; i++) + { + field = fields[i]; + realOutput.writeByte (field.getTypeCode ()); + realOutput.writeUTF (field.getName ()); + + if (! field.isPrimitive ()) + writeObject (field.getTypeString ()); + } + + boolean oldmode = setBlockDataMode (true); + annotateClass (osc.forClass ()); + setBlockDataMode (oldmode); + realOutput.writeByte (TC_ENDBLOCKDATA); + + if (osc.isSerializable ()) + writeObject (osc.getSuper ()); + else + writeObject (null); + } + /** Writes the current objects non-transient, non-static fields from the current class to the underlying output stream. |