diff options
author | Mark Wielaard <mark@gcc.gnu.org> | 2003-03-01 15:05:46 +0000 |
---|---|---|
committer | Mark Wielaard <mark@gcc.gnu.org> | 2003-03-01 15:05:46 +0000 |
commit | d91996637fe4a43743af1b2ebcdda4ce8e473a03 (patch) | |
tree | e5decafcdd4c08aee2930324e407189cd7b6a830 /libjava/java/io | |
parent | 5793b27668ae1b63e6518f84eab151ad66890eec (diff) | |
download | gcc-d91996637fe4a43743af1b2ebcdda4ce8e473a03.zip gcc-d91996637fe4a43743af1b2ebcdda4ce8e473a03.tar.gz gcc-d91996637fe4a43743af1b2ebcdda4ce8e473a03.tar.bz2 |
ObjectInputStream.java: Reindent.
* java/io/ObjectInputStream.java: Reindent.
* java/io/ObjectOutputStream.java: Likewise.
From-SVN: r63614
Diffstat (limited to 'libjava/java/io')
-rw-r--r-- | libjava/java/io/ObjectInputStream.java | 845 | ||||
-rw-r--r-- | libjava/java/io/ObjectOutputStream.java | 581 |
2 files changed, 703 insertions, 723 deletions
diff --git a/libjava/java/io/ObjectInputStream.java b/libjava/java/io/ObjectInputStream.java index f2b2df8e..38c790a 100644 --- a/libjava/java/io/ObjectInputStream.java +++ b/libjava/java/io/ObjectInputStream.java @@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU @@ -146,11 +146,11 @@ public class ObjectInputStream extends InputStream is_consumed = true; break; } - + case TC_BLOCKDATA: case TC_BLOCKDATALONG: { - if (marker == TC_BLOCKDATALONG) + if (marker == TC_BLOCKDATALONG) dumpElementln ("BLOCKDATALONG"); else dumpElementln ("BLOCKDATA"); @@ -164,7 +164,7 @@ public class ObjectInputStream extends InputStream ret_val = null; break; } - + case TC_REFERENCE: { dumpElement ("REFERENCE "); @@ -174,7 +174,7 @@ public class ObjectInputStream extends InputStream this.objectLookupTable.get (oid)).object; break; } - + case TC_CLASS: { dumpElementln ("CLASS"); @@ -229,7 +229,6 @@ public class ObjectInputStream extends InputStream short field_count = this.realInputStream.readShort (); dumpElementln (Short.toString(field_count)); ObjectStreamField[] fields = new ObjectStreamField[field_count]; - ObjectStreamClass osc = new ObjectStreamClass (name, uid, flags, fields); assignNewHandle (osc); @@ -272,7 +271,7 @@ public class ObjectInputStream extends InputStream ret_val = osc; break; } - + case TC_STRING: case TC_LONGSTRING: { @@ -357,9 +356,6 @@ public class ObjectInputStream extends InputStream || Modifier.isAbstract (first_nonserial.getModifiers ())) first_nonserial = first_nonserial.getSuperclass (); - // DEBUGln ("Using " + first_nonserial - // + " as starting point for constructing " + clazz); - Object obj = null; obj = newObject (clazz, first_nonserial); @@ -372,8 +368,6 @@ public class ObjectInputStream extends InputStream ObjectStreamClass[] hierarchy = ObjectStreamClass.getObjectStreamClasses (clazz); - // DEBUGln ("Got class hierarchy of depth " + hierarchy.length); - boolean has_read; for (int i=0; i < hierarchy.length; i++) { @@ -428,13 +422,13 @@ public class ObjectInputStream extends InputStream ret_val = processResolution (obj, handle); break; } - + case TC_RESET: dumpElementln ("RESET"); clearHandles (); ret_val = readObject (); break; - + case TC_EXCEPTION: { dumpElement ("EXCEPTION="); @@ -443,10 +437,9 @@ public class ObjectInputStream extends InputStream clearHandles (); throw new WriteAbortedException ("Exception thrown during writing of stream", e); } - + default: throw new IOException ("Unknown marker on stream: " + marker); - } } finally @@ -464,7 +457,6 @@ public class ObjectInputStream extends InputStream return ret_val; } - /** Reads the current objects non-transient, non-static fields from @@ -665,11 +657,11 @@ public class ObjectInputStream extends InputStream public int read () throws IOException { if (this.readDataFromBlock) - { - if (this.blockDataPosition >= this.blockDataBytes) - readNextBlock (); - return (this.blockData[this.blockDataPosition++] & 0xff); - } + { + if (this.blockDataPosition >= this.blockDataBytes) + readNextBlock (); + return (this.blockData[this.blockDataPosition++] & 0xff); + } else return this.realInputStream.read (); } @@ -677,26 +669,26 @@ public class ObjectInputStream extends InputStream public int read (byte[] data, int offset, int length) throws IOException { if (this.readDataFromBlock) - { - if (this.blockDataPosition + length > this.blockDataBytes) - { - int remain = this.blockDataBytes - this.blockDataPosition; - if (remain != 0) - { - System.arraycopy (this.blockData, this.blockDataPosition, - data, offset, remain); - offset += remain; - length -= remain; - } - readNextBlock (); - } + { + if (this.blockDataPosition + length > this.blockDataBytes) + { + int remain = this.blockDataBytes - this.blockDataPosition; + if (remain != 0) + { + System.arraycopy (this.blockData, this.blockDataPosition, + data, offset, remain); + offset += remain; + length -= remain; + } + readNextBlock (); + } - System.arraycopy (this.blockData, this.blockDataPosition, - data, offset, length); - blockDataPosition += length; + System.arraycopy (this.blockData, this.blockDataPosition, + data, offset, length); + this.blockDataPosition += length; - return length; - } + return length; + } else return this.realInputStream.read (data, offset, length); } @@ -704,12 +696,12 @@ public class ObjectInputStream extends InputStream public int available () throws IOException { if (this.readDataFromBlock) - { - if (this.blockDataPosition >= this.blockDataBytes) - readNextBlock (); + { + if (this.blockDataPosition >= this.blockDataBytes) + readNextBlock (); - return this.blockDataBytes - this.blockDataPosition; - } + return this.blockDataBytes - this.blockDataPosition; + } else return this.realInputStream.available (); } @@ -864,174 +856,174 @@ public class ObjectInputStream extends InputStream setBlockDataMode (oldmode); return new GetField () - { - public ObjectStreamClass getObjectStreamClass () { - return clazz; - } + public ObjectStreamClass getObjectStreamClass () + { + return clazz; + } - public boolean defaulted (String name) - throws IOException, IllegalArgumentException - { - return clazz.getField (name) == null; - } + public boolean defaulted (String name) + throws IOException, IllegalArgumentException + { + return clazz.getField (name) == null; + } - public boolean get (String name, boolean defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = getField (name, Boolean.TYPE); + public boolean get (String name, boolean defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = getField (name, Boolean.TYPE); - if (field == null) - return defvalue; + if (field == null) + return defvalue; - return prim_field_data[field.getOffset ()] == 0 ? false : true; - } + return prim_field_data[field.getOffset ()] == 0 ? false : true; + } - public char get (String name, char defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = getField (name, Character.TYPE); + public char get (String name, char defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = getField (name, Character.TYPE); - if (field == null) - return defvalue; + if (field == null) + return defvalue; - int off = field.getOffset (); + int off = field.getOffset (); - return (char)(((prim_field_data[off++] & 0xFF) << 8) - | (prim_field_data[off] & 0xFF)); - } + return (char)(((prim_field_data[off++] & 0xFF) << 8) + | (prim_field_data[off] & 0xFF)); + } - public byte get (String name, byte defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = getField (name, Byte.TYPE); + public byte get (String name, byte defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = getField (name, Byte.TYPE); - if (field == null) - return defvalue; + if (field == null) + return defvalue; - return prim_field_data[field.getOffset ()]; - } + return prim_field_data[field.getOffset ()]; + } - public short get (String name, short defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = getField (name, Short.TYPE); + public short get (String name, short defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = getField (name, Short.TYPE); - if (field == null) - return defvalue; + if (field == null) + return defvalue; - int off = field.getOffset (); + int off = field.getOffset (); - return (short)(((prim_field_data[off++] & 0xFF) << 8) - | (prim_field_data[off] & 0xFF)); - } + return (short)(((prim_field_data[off++] & 0xFF) << 8) + | (prim_field_data[off] & 0xFF)); + } - public int get (String name, int defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = getField (name, Integer.TYPE); + public int get (String name, int defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = getField (name, Integer.TYPE); - if (field == null) - return defvalue; + if (field == null) + return defvalue; - int off = field.getOffset (); + int off = field.getOffset (); - return ((prim_field_data[off++] & 0xFF) << 24) - | ((prim_field_data[off++] & 0xFF) << 16) - | ((prim_field_data[off++] & 0xFF) << 8) - | (prim_field_data[off] & 0xFF); - } + return ((prim_field_data[off++] & 0xFF) << 24) + | ((prim_field_data[off++] & 0xFF) << 16) + | ((prim_field_data[off++] & 0xFF) << 8) + | (prim_field_data[off] & 0xFF); + } - public long get (String name, long defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = getField (name, Long.TYPE); + public long get (String name, long defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = getField (name, Long.TYPE); + + if (field == null) + return defvalue; - if (field == null) - return defvalue; + int off = field.getOffset (); - int off = field.getOffset (); + return (long)(((prim_field_data[off++] & 0xFF) << 56) + | ((prim_field_data[off++] & 0xFF) << 48) + | ((prim_field_data[off++] & 0xFF) << 40) + | ((prim_field_data[off++] & 0xFF) << 32) + | ((prim_field_data[off++] & 0xFF) << 24) + | ((prim_field_data[off++] & 0xFF) << 16) + | ((prim_field_data[off++] & 0xFF) << 8) + | (prim_field_data[off] & 0xFF)); + } + + public float get (String name, float defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = getField (name, Float.TYPE); + + if (field == null) + return defvalue; + + int off = field.getOffset (); + + return Float.intBitsToFloat (((prim_field_data[off++] & 0xFF) << 24) + | ((prim_field_data[off++] & 0xFF) << 16) + | ((prim_field_data[off++] & 0xFF) << 8) + | (prim_field_data[off] & 0xFF)); + } + + public double get (String name, double defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = getField (name, Double.TYPE); + + if (field == null) + return defvalue; - return (long)(((prim_field_data[off++] & 0xFF) << 56) + int off = field.getOffset (); + + return Double.longBitsToDouble + ( (long) (((prim_field_data[off++] & 0xFF) << 56) | ((prim_field_data[off++] & 0xFF) << 48) | ((prim_field_data[off++] & 0xFF) << 40) | ((prim_field_data[off++] & 0xFF) << 32) | ((prim_field_data[off++] & 0xFF) << 24) | ((prim_field_data[off++] & 0xFF) << 16) | ((prim_field_data[off++] & 0xFF) << 8) - | (prim_field_data[off] & 0xFF)); - } - - public float get (String name, float defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = getField (name, Float.TYPE); - - if (field == null) - return defvalue; - - int off = field.getOffset (); - - return Float.intBitsToFloat (((prim_field_data[off++] & 0xFF) << 24) - | ((prim_field_data[off++] & 0xFF) << 16) - | ((prim_field_data[off++] & 0xFF) << 8) - | (prim_field_data[off] & 0xFF)); - } - - public double get (String name, double defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = getField (name, Double.TYPE); - - if (field == null) - return defvalue; - - int off = field.getOffset (); - - return Double.longBitsToDouble ( - (long)(((prim_field_data[off++] & 0xFF) << 56) - | ((prim_field_data[off++] & 0xFF) << 48) - | ((prim_field_data[off++] & 0xFF) << 40) - | ((prim_field_data[off++] & 0xFF) << 32) - | ((prim_field_data[off++] & 0xFF) << 24) - | ((prim_field_data[off++] & 0xFF) << 16) - | ((prim_field_data[off++] & 0xFF) << 8) - | (prim_field_data[off] & 0xFF))); - } + | (prim_field_data[off] & 0xFF))); + } - public Object get (String name, Object defvalue) - throws IOException, IllegalArgumentException - { - ObjectStreamField field = - getField (name, defvalue == null ? null : defvalue.getClass ()); + public Object get (String name, Object defvalue) + throws IOException, IllegalArgumentException + { + ObjectStreamField field = + getField (name, defvalue == null ? null : defvalue.getClass ()); - if (field == null) - return defvalue; + if (field == null) + return defvalue; - return objs[field.getOffset ()]; - } + return objs[field.getOffset ()]; + } - private ObjectStreamField getField (String name, Class type) - throws IllegalArgumentException - { - ObjectStreamField field = clazz.getField (name); + private ObjectStreamField getField (String name, Class type) + throws IllegalArgumentException + { + ObjectStreamField field = clazz.getField (name); - if (field == null) - return null; + if (field == null) + return null; - Class field_type = field.getType (); + Class field_type = field.getType (); - if (type == field_type || - (type == null && ! field_type.isPrimitive ())) - return field; + if (type == field_type || + (type == null && ! field_type.isPrimitive ())) + return field; - throw new IllegalArgumentException ("Field requested is of type " - + field_type.getName () - + ", but requested type was " - + (type == null ? - "Object" : type.getName ())); - } - }; + throw new IllegalArgumentException ("Field requested is of type " + + field_type.getName () + + ", but requested type was " + + (type == null ? + "Object" : type.getName ())); + } + }; } @@ -1077,15 +1069,7 @@ public class ObjectInputStream extends InputStream private int assignNewHandle (Object obj) { this.objectLookupTable.put (new Integer (this.nextOID), - new ObjectIdentityWrapper (obj)); - -// try -// { -// DEBUG ("Assigning handle " + this.nextOID); -// DEBUGln (" to " + obj); -// } -// catch (Throwable t) {} - + new ObjectIdentityWrapper (obj)); return this.nextOID++; } @@ -1097,22 +1081,22 @@ public class ObjectInputStream extends InputStream { Method m = null; try - { - Class classArgs[] = {}; - m = obj.getClass ().getDeclaredMethod ("readResolve", classArgs); - // m can't be null by definition since an exception would - // have been thrown so a check for null is not needed. - obj = m.invoke (obj, new Object[] {}); - } + { + Class classArgs[] = {}; + m = obj.getClass ().getDeclaredMethod ("readResolve", classArgs); + // m can't be null by definition since an exception would + // have been thrown so a check for null is not needed. + obj = m.invoke (obj, new Object[] {}); + } catch (NoSuchMethodException ignore) - { - } + { + } catch (IllegalAccessException ignore) - { - } + { + } catch (InvocationTargetException ignore) - { - } + { + } } if (this.resolveEnabled) @@ -1134,7 +1118,6 @@ public class ObjectInputStream extends InputStream private void readNextBlock () throws IOException { -// DEBUGln ("In readNextBlock "); readNextBlock (this.realInputStream.readByte ()); } @@ -1142,21 +1125,21 @@ public class ObjectInputStream extends InputStream private void readNextBlock (byte marker) throws IOException { if (marker == TC_BLOCKDATA) - { - dumpElement ("BLOCK DATA SIZE="); - this.blockDataBytes = this.realInputStream.readUnsignedByte (); - dumpElementln (Integer.toString(this.blockDataBytes)); - } + { + dumpElement ("BLOCK DATA SIZE="); + this.blockDataBytes = this.realInputStream.readUnsignedByte (); + dumpElementln (Integer.toString(this.blockDataBytes)); + } else if (marker == TC_BLOCKDATALONG) - { - dumpElement ("BLOCK DATA LONG SIZE="); - this.blockDataBytes = this.realInputStream.readInt (); - dumpElementln (Integer.toString(this.blockDataBytes)); - } + { + dumpElement ("BLOCK DATA LONG SIZE="); + this.blockDataBytes = this.realInputStream.readInt (); + dumpElementln (Integer.toString(this.blockDataBytes)); + } else - { - throw new EOFException ("Attempt to read primitive data, but no data block is active."); - } + { + throw new EOFException ("Attempt to read primitive data, but no data block is active."); + } if (this.blockData.length < this.blockDataBytes) this.blockData = new byte[this.blockDataBytes]; @@ -1170,70 +1153,70 @@ public class ObjectInputStream extends InputStream throws ClassNotFoundException, IOException { if (clazz.isPrimitive ()) - { - if (clazz == Boolean.TYPE) - { - boolean[] cast_array = (boolean[])array; - for (int i=0; i < cast_array.length; i++) - cast_array[i] = this.realInputStream.readBoolean (); - return; - } - if (clazz == Byte.TYPE) { - byte[] cast_array = (byte[])array; - for (int i=0; i < cast_array.length; i++) - cast_array[i] = this.realInputStream.readByte (); - return; - } - if (clazz == Character.TYPE) - { - char[] cast_array = (char[])array; - for (int i=0; i < cast_array.length; i++) - cast_array[i] = this.realInputStream.readChar (); - return; - } - if (clazz == Double.TYPE) - { - double[] cast_array = (double[])array; - for (int i=0; i < cast_array.length; i++) - cast_array[i] = this.realInputStream.readDouble (); - return; - } - if (clazz == Float.TYPE) - { - float[] cast_array = (float[])array; - for (int i=0; i < cast_array.length; i++) - cast_array[i] = this.realInputStream.readFloat (); - return; - } - if (clazz == Integer.TYPE) - { - int[] cast_array = (int[])array; - for (int i=0; i < cast_array.length; i++) - cast_array[i] = this.realInputStream.readInt (); - return; - } - if (clazz == Long.TYPE) - { - long[] cast_array = (long[])array; - for (int i=0; i < cast_array.length; i++) - cast_array[i] = this.realInputStream.readLong (); - return; + if (clazz == Boolean.TYPE) + { + boolean[] cast_array = (boolean[])array; + for (int i=0; i < cast_array.length; i++) + cast_array[i] = this.realInputStream.readBoolean (); + return; + } + if (clazz == Byte.TYPE) + { + byte[] cast_array = (byte[])array; + for (int i=0; i < cast_array.length; i++) + cast_array[i] = this.realInputStream.readByte (); + return; + } + if (clazz == Character.TYPE) + { + char[] cast_array = (char[])array; + for (int i=0; i < cast_array.length; i++) + cast_array[i] = this.realInputStream.readChar (); + return; + } + if (clazz == Double.TYPE) + { + double[] cast_array = (double[])array; + for (int i=0; i < cast_array.length; i++) + cast_array[i] = this.realInputStream.readDouble (); + return; + } + if (clazz == Float.TYPE) + { + float[] cast_array = (float[])array; + for (int i=0; i < cast_array.length; i++) + cast_array[i] = this.realInputStream.readFloat (); + return; + } + if (clazz == Integer.TYPE) + { + int[] cast_array = (int[])array; + for (int i=0; i < cast_array.length; i++) + cast_array[i] = this.realInputStream.readInt (); + return; + } + if (clazz == Long.TYPE) + { + long[] cast_array = (long[])array; + for (int i=0; i < cast_array.length; i++) + cast_array[i] = this.realInputStream.readLong (); + return; + } + if (clazz == Short.TYPE) + { + short[] cast_array = (short[])array; + for (int i=0; i < cast_array.length; i++) + cast_array[i] = this.realInputStream.readShort (); + return; + } } - if (clazz == Short.TYPE) + else { - short[] cast_array = (short[])array; + Object[] cast_array = (Object[])array; for (int i=0; i < cast_array.length; i++) - cast_array[i] = this.realInputStream.readShort (); - return; - } - } - else - { - Object[] cast_array = (Object[])array; - for (int i=0; i < cast_array.length; i++) cast_array[i] = readObject (); - } + } } @@ -1242,16 +1225,14 @@ public class ObjectInputStream extends InputStream ObjectStreamClass stream_osc) throws ClassNotFoundException, IOException { -// DEBUGln ("In readFields"); if (call_read_method) - { -// DEBUGln (" call_read_method is true"); - fieldsAlreadyRead = false; - boolean oldmode = setBlockDataMode (true); - callReadMethod (obj, stream_osc.forClass ()); - setBlockDataMode (oldmode); - return; - } + { + fieldsAlreadyRead = false; + boolean oldmode = setBlockDataMode (true); + callReadMethod (obj, stream_osc.forClass ()); + setBlockDataMode (oldmode); + return; + } ObjectStreamField[] real_fields = ObjectStreamClass.lookup (stream_osc.forClass ()).fields; @@ -1266,144 +1247,142 @@ public class ObjectInputStream extends InputStream while (stream_idx < stream_fields.length && real_idx < real_fields.length) - { - default_initialize = false; - set_value = true; - - if (stream_idx == stream_fields.length) - default_initialize = true; - else - { - stream_field = stream_fields[stream_idx]; - type = stream_field.getType (); - } - - if (real_idx == real_fields.length) - set_value = false; - else { - real_field = real_fields[real_idx]; - type = real_field.getType (); - field_name = real_field.getName (); - } + default_initialize = false; + set_value = true; - if (set_value && !default_initialize) - { - int comp_val = - real_field.compareTo (stream_field); - - if (comp_val < 0) - { + if (stream_idx == stream_fields.length) default_initialize = true; - real_idx++; - } - else if (comp_val > 0) - { + else + { + stream_field = stream_fields[stream_idx]; + type = stream_field.getType (); + } + + if (real_idx == real_fields.length) set_value = false; - stream_idx++; - } else - { - real_idx++; - stream_idx++; - } - } + { + real_field = real_fields[real_idx]; + type = real_field.getType (); + field_name = real_field.getName (); + } - try - { - if (type == Boolean.TYPE) - { - boolean value = - default_initialize ? false : this.realInputStream.readBoolean (); - if (!default_initialize && set_value) - dumpElementln (" " + field_name + ": " + value); - if (set_value) - setBooleanField (obj, field_name, value); - } - else if (type == Byte.TYPE) - { - byte value = - default_initialize ? 0 : this.realInputStream.readByte (); - if (!default_initialize && set_value) - dumpElementln (" " + field_name + ": " + value); - if (set_value) - setByteField (obj, field_name, value); - } - else if (type == Character.TYPE) - { - char value = - default_initialize ? (char)0 : this.realInputStream.readChar (); - if (!default_initialize && set_value) - dumpElementln (" " + field_name + ": " + value); - if (set_value) - setCharField (obj, field_name, value); - } - else if (type == Double.TYPE) - { - double value = - default_initialize ? 0 : this.realInputStream.readDouble (); - if (!default_initialize && set_value) - dumpElementln (" " + field_name + ": " + value); - if (set_value) - setDoubleField (obj, field_name, value); - } - else if (type == Float.TYPE) - { - float value = - default_initialize ? 0 : this.realInputStream.readFloat (); - if (!default_initialize && set_value) - dumpElementln (" " + field_name + ": " + value); - if (set_value) - setFloatField (obj, field_name, value); - } - else if (type == Integer.TYPE) - { - int value = - default_initialize ? 0 : this.realInputStream.readInt (); - if (!default_initialize && set_value) - dumpElementln (" " + field_name + ": " + value); - if (set_value) - setIntField (obj, field_name, value); - } - else if (type == Long.TYPE) - { - long value = - default_initialize ? 0 : this.realInputStream.readLong (); - if (!default_initialize && set_value) - dumpElementln (" " + field_name + ": " + value); - if (set_value) - setLongField (obj, field_name, value); - } - else if (type == Short.TYPE) - { - short value = - default_initialize ? (short)0 : this.realInputStream.readShort (); - if (!default_initialize && set_value) - dumpElementln (" " + field_name + ": " + value); - if (set_value) - setShortField (obj, field_name, value); - } - else - { - Object value = - default_initialize ? null : readObject (); - if (set_value) - setObjectField (obj, field_name, - real_field.getTypeString (), value); - } - } - catch (NoSuchFieldError e) - { - dumpElementln("XXXX " + field_name + " does not exist."); - } - } - } + if (set_value && !default_initialize) + { + int comp_val = + real_field.compareTo (stream_field); + + if (comp_val < 0) + { + default_initialize = true; + real_idx++; + } + else if (comp_val > 0) + { + set_value = false; + stream_idx++; + } + else + { + real_idx++; + stream_idx++; + } + } + try + { + if (type == Boolean.TYPE) + { + boolean value = + default_initialize ? false : this.realInputStream.readBoolean (); + if (!default_initialize && set_value) + dumpElementln (" " + field_name + ": " + value); + if (set_value) + setBooleanField (obj, field_name, value); + } + else if (type == Byte.TYPE) + { + byte value = + default_initialize ? 0 : this.realInputStream.readByte (); + if (!default_initialize && set_value) + dumpElementln (" " + field_name + ": " + value); + if (set_value) + setByteField (obj, field_name, value); + } + else if (type == Character.TYPE) + { + char value = + default_initialize ? (char)0 : this.realInputStream.readChar (); + if (!default_initialize && set_value) + dumpElementln (" " + field_name + ": " + value); + if (set_value) + setCharField (obj, field_name, value); + } + else if (type == Double.TYPE) + { + double value = + default_initialize ? 0 : this.realInputStream.readDouble (); + if (!default_initialize && set_value) + dumpElementln (" " + field_name + ": " + value); + if (set_value) + setDoubleField (obj, field_name, value); + } + else if (type == Float.TYPE) + { + float value = + default_initialize ? 0 : this.realInputStream.readFloat (); + if (!default_initialize && set_value) + dumpElementln (" " + field_name + ": " + value); + if (set_value) + setFloatField (obj, field_name, value); + } + else if (type == Integer.TYPE) + { + int value = + default_initialize ? 0 : this.realInputStream.readInt (); + if (!default_initialize && set_value) + dumpElementln (" " + field_name + ": " + value); + if (set_value) + setIntField (obj, field_name, value); + } + else if (type == Long.TYPE) + { + long value = + default_initialize ? 0 : this.realInputStream.readLong (); + if (!default_initialize && set_value) + dumpElementln (" " + field_name + ": " + value); + if (set_value) + setLongField (obj, field_name, value); + } + else if (type == Short.TYPE) + { + short value = + default_initialize ? (short)0 : this.realInputStream.readShort (); + if (!default_initialize && set_value) + dumpElementln (" " + field_name + ": " + value); + if (set_value) + setShortField (obj, field_name, value); + } + else + { + Object value = + default_initialize ? null : readObject (); + if (set_value) + setObjectField (obj, field_name, + real_field.getTypeString (), value); + } + } + catch (NoSuchFieldError e) + { + dumpElementln("XXXX " + field_name + " does not exist."); + } + } + } // Toggles writing primitive data to block-data buffer. private boolean setBlockDataMode (boolean on) { -// DEBUGln ("Setting block data mode to " + on); boolean oldmode = this.readDataFromBlock; this.readDataFromBlock = on; @@ -1420,15 +1399,15 @@ public class ObjectInputStream extends InputStream private Object newObject (Class real_class, Class constructor_class) { try - { - Object obj = allocateObject (real_class); - callConstructor (constructor_class, obj); - return obj; - } + { + Object obj = allocateObject (real_class); + callConstructor (constructor_class, obj); + return obj; + } catch (InstantiationException e) - { - return null; - } + { + return null; + } } @@ -1441,14 +1420,14 @@ public class ObjectInputStream extends InputStream Arrays.sort (validators); try - { - for (int i=0; i < validators.length; i++) - ((ObjectInputValidation)validators[i]).validateObject (); - } + { + for (int i=0; i < validators.length; i++) + ((ObjectInputValidation)validators[i]).validateObject (); + } finally - { - this.validators.removeAllElements (); - } + { + this.validators.removeAllElements (); + } } @@ -1465,13 +1444,13 @@ public class ObjectInputStream extends InputStream { return klass.getDeclaredField(name); } - + private static Method getMethod (Class klass, String name, Class args[]) throws java.lang.NoSuchMethodException { return klass.getDeclaredMethod(name, args); } - + private void callReadMethod (Object obj, Class klass) throws IOException { try @@ -1523,7 +1502,7 @@ public class ObjectInputStream extends InputStream } private void setByteField (Object obj, String field_name, - byte val) + byte val) { try { @@ -1583,7 +1562,7 @@ public class ObjectInputStream extends InputStream } private void setIntField (Object obj, String field_name, - int val) + int val) { try { @@ -1599,7 +1578,7 @@ public class ObjectInputStream extends InputStream private void setLongField (Object obj, String field_name, - long val) + long val) { try { @@ -1666,7 +1645,7 @@ public class ObjectInputStream extends InputStream private boolean fieldsAlreadyRead; private Vector validators; - private static boolean dump; + private static boolean dump; private void dumpElement (String msg) { @@ -1681,12 +1660,12 @@ public class ObjectInputStream extends InputStream } static - { - if (Configuration.INIT_LOAD_LIBRARY) - { - System.loadLibrary ("javaio"); - } - } + { + if (Configuration.INIT_LOAD_LIBRARY) + { + System.loadLibrary ("javaio"); + } + } } diff --git a/libjava/java/io/ObjectOutputStream.java b/libjava/java/io/ObjectOutputStream.java index d522996..69f789a 100644 --- a/libjava/java/io/ObjectOutputStream.java +++ b/libjava/java/io/ObjectOutputStream.java @@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU @@ -77,22 +77,22 @@ import gnu.classpath.Configuration; in a graph lost. Example usage: - <pre> - Hashtable map = new Hashtable (); - map.put ("one", new Integer (1)); - map.put ("two", new Integer (2)); + <pre> + Hashtable map = new Hashtable (); + map.put ("one", new Integer (1)); + map.put ("two", new Integer (2)); - ObjectOutputStream oos = - new ObjectOutputStream (new FileOutputStream ("numbers")); - oos.writeObject (map); - oos.close (); + ObjectOutputStream oos = + new ObjectOutputStream (new FileOutputStream ("numbers")); + oos.writeObject (map); + oos.close (); - ObjectInputStream ois = - new ObjectInputStream (new FileInputStream ("numbers")); - Hashtable newmap = (Hashtable)ois.readObject (); + ObjectInputStream ois = + new ObjectInputStream (new FileInputStream ("numbers")); + Hashtable newmap = (Hashtable)ois.readObject (); - System.out.println (newmap); - </pre> + System.out.println (newmap); + </pre> The default serialization can be overriden in two ways. @@ -188,7 +188,7 @@ public class ObjectOutputStream extends OutputStream realOutput.writeByte (TC_NULL); break; } - + Integer handle = findHandle (obj); if (handle != null) { @@ -196,16 +196,16 @@ public class ObjectOutputStream extends OutputStream realOutput.writeInt (handle.intValue ()); break; } - + if (obj instanceof Class) { Class cl = (Class)obj; - ObjectStreamClass osc = ObjectStreamClass.lookupForClassObject(cl); + ObjectStreamClass osc = ObjectStreamClass.lookupForClassObject (cl); assignNewHandle (obj); realOutput.writeByte (TC_CLASS); if (!osc.isProxyClass) { - writeObject(osc); + writeObject (osc); } else { @@ -224,7 +224,7 @@ public class ObjectOutputStream extends OutputStream } break; } - + if (obj instanceof ObjectStreamClass) { ObjectStreamClass osc = (ObjectStreamClass)obj; @@ -232,46 +232,46 @@ public class ObjectOutputStream extends OutputStream 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; } - + if ((replacementEnabled || obj instanceof Serializable) && ! replaceDone) { replacedObject = obj; - + if (obj instanceof Serializable) { Method m = null; @@ -294,14 +294,14 @@ public class ObjectOutputStream extends OutputStream { } } - + if (replacementEnabled) obj = replaceObject (obj); - + replaceDone = true; continue; } - + if (obj instanceof String) { realOutput.writeByte (TC_STRING); @@ -309,12 +309,12 @@ public class ObjectOutputStream extends OutputStream realOutput.writeUTF ((String)obj); break; } - + Class clazz = obj.getClass (); ObjectStreamClass osc = ObjectStreamClass.lookupForClassObject (clazz); if (osc == null) throw new NotSerializableException (clazz.getName ()); - + if (clazz.isArray ()) { realOutput.writeByte (TC_ARRAY); @@ -323,56 +323,55 @@ public class ObjectOutputStream extends OutputStream writeArraySizeAndElements (obj, clazz.getComponentType ()); break; } - + realOutput.writeByte (TC_OBJECT); writeObject (osc); - + if (replaceDone) assignNewHandle (replacedObject); else assignNewHandle (obj); - + if (obj instanceof Externalizable) { if (protocolVersion == PROTOCOL_VERSION_2) setBlockDataMode (true); - + ((Externalizable)obj).writeExternal (this); - + if (protocolVersion == PROTOCOL_VERSION_2) { setBlockDataMode (false); realOutput.writeByte (TC_ENDBLOCKDATA); } - + break; } - + if (obj instanceof Serializable) { currentObject = obj; ObjectStreamClass[] hierarchy = ObjectStreamClass.getObjectStreamClasses (clazz); - + boolean has_write; for (int i=0; i < hierarchy.length; i++) { currentObjectStreamClass = hierarchy[i]; - + fieldsAlreadyWritten = false; has_write = currentObjectStreamClass.hasWriteMethod (); - + writeFields (obj, currentObjectStreamClass.fields, has_write); - } - + currentObject = null; currentObjectStreamClass = null; currentPutField = null; break; } - + throw new NotSerializableException (clazz.getName ()); } // end pseudo-loop } @@ -395,18 +394,16 @@ public class ObjectOutputStream extends OutputStream { throw new StreamCorruptedException ("Exception " + ioe + " thrown while exception was being written to stream."); } - + reset (true); } finally { isSerializing = was_serializing; - setBlockDataMode (old_mode); } } - /** Writes the current objects non-transient, non-static fields from the current class to the underlying output stream. @@ -464,12 +461,12 @@ public class ObjectOutputStream extends OutputStream private void reset (boolean internal) throws IOException { if (!internal) - { - if (isSerializing) - throw new IOException ("Reset called while serialization in progress"); + { + if (isSerializing) + throw new IOException ("Reset called while serialization in progress"); - realOutput.writeByte (TC_RESET); - } + realOutput.writeByte (TC_RESET); + } clearHandles (); } @@ -649,12 +646,12 @@ public class ObjectOutputStream extends OutputStream public void write (int data) throws IOException { if (writeDataAsBlocks) - { - if (blockDataCount == BUFFER_SIZE) - drain (); + { + if (blockDataCount == BUFFER_SIZE) + drain (); - blockData[ blockDataCount++ ] = (byte)data; - } + blockData[ blockDataCount++ ] = (byte)data; + } else realOutput.write (data); } @@ -675,22 +672,22 @@ public class ObjectOutputStream extends OutputStream public void write (byte[] b, int off, int len) throws IOException { if (writeDataAsBlocks) - { - if (len < 0) - throw new IndexOutOfBoundsException (); - - if (blockDataCount + len < BUFFER_SIZE) - { - System.arraycopy (b, off, blockData, blockDataCount, len); - blockDataCount += len; - } - else { - drain (); - writeBlockDataHeader (len); - realOutput.write (b, off, len); + if (len < 0) + throw new IndexOutOfBoundsException (); + + if (blockDataCount + len < BUFFER_SIZE) + { + System.arraycopy (b, off, blockData, blockDataCount, len); + blockDataCount += len; + } + else + { + drain (); + writeBlockDataHeader (len); + realOutput.write (b, off, len); + } } - } else realOutput.write (b, off, len); } @@ -871,143 +868,143 @@ public class ObjectOutputStream extends OutputStream currentPutField = new PutField () { private byte[] prim_field_data - = new byte[currentObjectStreamClass.primFieldSize]; + = new byte[currentObjectStreamClass.primFieldSize]; private Object[] objs - = new Object[currentObjectStreamClass.objectFieldCount]; + = new Object[currentObjectStreamClass.objectFieldCount]; public void put (String name, boolean value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - checkType (field, 'Z'); - prim_field_data[field.getOffset ()] = (byte)(value ? 1 : 0); - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + checkType (field, 'Z'); + prim_field_data[field.getOffset ()] = (byte)(value ? 1 : 0); + } public void put (String name, byte value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - checkType (field, 'B'); - prim_field_data[field.getOffset ()] = value; - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + checkType (field, 'B'); + prim_field_data[field.getOffset ()] = value; + } public void put (String name, char value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - checkType (field, 'C'); - int off = field.getOffset (); - prim_field_data[off++] = (byte)(value >>> 8); - prim_field_data[off] = (byte)value; - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + checkType (field, 'C'); + int off = field.getOffset (); + prim_field_data[off++] = (byte)(value >>> 8); + prim_field_data[off] = (byte)value; + } public void put (String name, double value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - checkType (field, 'D'); - int off = field.getOffset (); - long l_value = Double.doubleToLongBits (value); - prim_field_data[off++] = (byte)(l_value >>> 52); - prim_field_data[off++] = (byte)(l_value >>> 48); - prim_field_data[off++] = (byte)(l_value >>> 40); - prim_field_data[off++] = (byte)(l_value >>> 32); - prim_field_data[off++] = (byte)(l_value >>> 24); - prim_field_data[off++] = (byte)(l_value >>> 16); - prim_field_data[off++] = (byte)(l_value >>> 8); - prim_field_data[off] = (byte)l_value; - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + checkType (field, 'D'); + int off = field.getOffset (); + long l_value = Double.doubleToLongBits (value); + prim_field_data[off++] = (byte)(l_value >>> 52); + prim_field_data[off++] = (byte)(l_value >>> 48); + prim_field_data[off++] = (byte)(l_value >>> 40); + prim_field_data[off++] = (byte)(l_value >>> 32); + prim_field_data[off++] = (byte)(l_value >>> 24); + prim_field_data[off++] = (byte)(l_value >>> 16); + prim_field_data[off++] = (byte)(l_value >>> 8); + prim_field_data[off] = (byte)l_value; + } public void put (String name, float value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - checkType (field, 'F'); - int off = field.getOffset (); - int i_value = Float.floatToIntBits (value); - prim_field_data[off++] = (byte)(i_value >>> 24); - prim_field_data[off++] = (byte)(i_value >>> 16); - prim_field_data[off++] = (byte)(i_value >>> 8); - prim_field_data[off] = (byte)i_value; - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + checkType (field, 'F'); + int off = field.getOffset (); + int i_value = Float.floatToIntBits (value); + prim_field_data[off++] = (byte)(i_value >>> 24); + prim_field_data[off++] = (byte)(i_value >>> 16); + prim_field_data[off++] = (byte)(i_value >>> 8); + prim_field_data[off] = (byte)i_value; + } public void put (String name, int value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - checkType (field, 'I'); - int off = field.getOffset (); - prim_field_data[off++] = (byte)(value >>> 24); - prim_field_data[off++] = (byte)(value >>> 16); - prim_field_data[off++] = (byte)(value >>> 8); - prim_field_data[off] = (byte)value; - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + checkType (field, 'I'); + int off = field.getOffset (); + prim_field_data[off++] = (byte)(value >>> 24); + prim_field_data[off++] = (byte)(value >>> 16); + prim_field_data[off++] = (byte)(value >>> 8); + prim_field_data[off] = (byte)value; + } public void put (String name, long value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - checkType (field, 'J'); - int off = field.getOffset (); - prim_field_data[off++] = (byte)(value >>> 52); - prim_field_data[off++] = (byte)(value >>> 48); - prim_field_data[off++] = (byte)(value >>> 40); - prim_field_data[off++] = (byte)(value >>> 32); - prim_field_data[off++] = (byte)(value >>> 24); - prim_field_data[off++] = (byte)(value >>> 16); - prim_field_data[off++] = (byte)(value >>> 8); - prim_field_data[off] = (byte)value; - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + checkType (field, 'J'); + int off = field.getOffset (); + prim_field_data[off++] = (byte)(value >>> 52); + prim_field_data[off++] = (byte)(value >>> 48); + prim_field_data[off++] = (byte)(value >>> 40); + prim_field_data[off++] = (byte)(value >>> 32); + prim_field_data[off++] = (byte)(value >>> 24); + prim_field_data[off++] = (byte)(value >>> 16); + prim_field_data[off++] = (byte)(value >>> 8); + prim_field_data[off] = (byte)value; + } public void put (String name, short value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - checkType (field, 'S'); - int off = field.getOffset (); - prim_field_data[off++] = (byte)(value >>> 8); - prim_field_data[off] = (byte)value; - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + checkType (field, 'S'); + int off = field.getOffset (); + prim_field_data[off++] = (byte)(value >>> 8); + prim_field_data[off] = (byte)value; + } public void put (String name, Object value) throws IOException, IllegalArgumentException - { - ObjectStreamField field - = currentObjectStreamClass.getField (name); - if (field == null) - throw new IllegalArgumentException (); - if (value != null && - ! field.getType ().isAssignableFrom (value.getClass ())) - throw new IllegalArgumentException (); - objs[field.getOffset ()] = value; - } + { + ObjectStreamField field + = currentObjectStreamClass.getField (name); + if (field == null) + throw new IllegalArgumentException (); + if (value != null && + ! field.getType ().isAssignableFrom (value.getClass ())) + throw new IllegalArgumentException (); + objs[field.getOffset ()] = value; + } public void write (ObjectOutput out) throws IOException - { - // Apparently Block data is not used with PutField as per - // empirical evidence against JDK 1.2. Also see Mauve test - // java.io.ObjectInputOutput.Test.GetPutField. - boolean oldmode = setBlockDataMode (false); - out.write (prim_field_data); - for (int i = 0; i < objs.length; ++ i) - out.writeObject (objs[i]); - setBlockDataMode (oldmode); - } + { + // Apparently Block data is not used with PutField as per + // empirical evidence against JDK 1.2. Also see Mauve test + // java.io.ObjectInputOutput.Test.GetPutField. + boolean oldmode = setBlockDataMode (false); + out.write (prim_field_data); + for (int i = 0; i < objs.length; ++ i) + out.writeObject (objs[i]); + setBlockDataMode (oldmode); + } private void checkType (ObjectStreamField field, char type) throws IllegalArgumentException - { - if (TypeSignature.getEncodingOfClass (field.getType ()).charAt (0) != type) - throw new IllegalArgumentException (); - } + { + if (TypeSignature.getEncodingOfClass (field.getType ()).charAt (0) != type) + throw new IllegalArgumentException (); + } }; // end PutFieldImpl @@ -1029,15 +1026,15 @@ public class ObjectOutputStream extends OutputStream private void writeBlockDataHeader (int size) throws IOException { if (size < 256) - { - realOutput.writeByte (TC_BLOCKDATA); - realOutput.write (size); - } + { + realOutput.writeByte (TC_BLOCKDATA); + realOutput.write (size); + } else - { - realOutput.writeByte (TC_BLOCKDATALONG); - realOutput.writeInt (size); - } + { + realOutput.writeByte (TC_BLOCKDATALONG); + realOutput.writeInt (size); + } } @@ -1073,78 +1070,78 @@ public class ObjectOutputStream extends OutputStream int length = Array.getLength (array); if (clazz.isPrimitive ()) - { - if (clazz == Boolean.TYPE) - { - boolean[] cast_array = (boolean[])array; - realOutput.writeInt (length); - for (int i=0; i < length; i++) - realOutput.writeBoolean (cast_array[i]); - return; - } - if (clazz == Byte.TYPE) - { - byte[] cast_array = (byte[])array; - realOutput.writeInt (length); - realOutput.write(cast_array, 0, length); - return; - } - if (clazz == Character.TYPE) - { - char[] cast_array = (char[])array; - realOutput.writeInt (length); - for (int i=0; i < length; i++) - realOutput.writeChar (cast_array[i]); - return; - } - if (clazz == Double.TYPE) - { - double[] cast_array = (double[])array; - realOutput.writeInt (length); - for (int i=0; i < length; i++) - realOutput.writeDouble (cast_array[i]); - return; - } - if (clazz == Float.TYPE) - { - float[] cast_array = (float[])array; - realOutput.writeInt (length); - for (int i=0; i < length; i++) - realOutput.writeFloat (cast_array[i]); - return; - } - if (clazz == Integer.TYPE) - { - int[] cast_array = (int[])array; - realOutput.writeInt (length); - for (int i=0; i < length; i++) - realOutput.writeInt (cast_array[i]); - return; - } - if (clazz == Long.TYPE) { - long[] cast_array = (long[])array; - realOutput.writeInt (length); - for (int i=0; i < length; i++) - realOutput.writeLong (cast_array[i]); - return; + if (clazz == Boolean.TYPE) + { + boolean[] cast_array = (boolean[])array; + realOutput.writeInt (length); + for (int i=0; i < length; i++) + realOutput.writeBoolean (cast_array[i]); + return; + } + if (clazz == Byte.TYPE) + { + byte[] cast_array = (byte[])array; + realOutput.writeInt (length); + realOutput.write(cast_array, 0, length); + return; + } + if (clazz == Character.TYPE) + { + char[] cast_array = (char[])array; + realOutput.writeInt (length); + for (int i=0; i < length; i++) + realOutput.writeChar (cast_array[i]); + return; + } + if (clazz == Double.TYPE) + { + double[] cast_array = (double[])array; + realOutput.writeInt (length); + for (int i=0; i < length; i++) + realOutput.writeDouble (cast_array[i]); + return; + } + if (clazz == Float.TYPE) + { + float[] cast_array = (float[])array; + realOutput.writeInt (length); + for (int i=0; i < length; i++) + realOutput.writeFloat (cast_array[i]); + return; + } + if (clazz == Integer.TYPE) + { + int[] cast_array = (int[])array; + realOutput.writeInt (length); + for (int i=0; i < length; i++) + realOutput.writeInt (cast_array[i]); + return; + } + if (clazz == Long.TYPE) + { + long[] cast_array = (long[])array; + realOutput.writeInt (length); + for (int i=0; i < length; i++) + realOutput.writeLong (cast_array[i]); + return; + } + if (clazz == Short.TYPE) + { + short[] cast_array = (short[])array; + realOutput.writeInt (length); + for (int i=0; i < length; i++) + realOutput.writeShort (cast_array[i]); + return; + } } - if (clazz == Short.TYPE) + else { - short[] cast_array = (short[])array; + Object[] cast_array = (Object[])array; realOutput.writeInt (length); for (int i=0; i < length; i++) - realOutput.writeShort (cast_array[i]); - return; + writeObject (cast_array[i]); } - } - else - { - Object[] cast_array = (Object[])array; - realOutput.writeInt (length); - for (int i=0; i < length; i++) - writeObject (cast_array[i]); - } } @@ -1156,43 +1153,43 @@ public class ObjectOutputStream extends OutputStream boolean call_write_method) throws IOException { if (call_write_method) - { - setBlockDataMode (true); - callWriteMethod (obj); - setBlockDataMode (false); - realOutput.writeByte (TC_ENDBLOCKDATA); - return; - } + { + setBlockDataMode (true); + callWriteMethod (obj); + setBlockDataMode (false); + realOutput.writeByte (TC_ENDBLOCKDATA); + return; + } boolean oldmode = setBlockDataMode (false); String field_name; Class type; for (int i=0; i < fields.length; i++) - { - field_name = fields[i].getName (); - type = fields[i].getType (); - - if (type == Boolean.TYPE) - realOutput.writeBoolean (getBooleanField (obj, field_name)); - else if (type == Byte.TYPE) - realOutput.writeByte (getByteField (obj, field_name)); - else if (type == Character.TYPE) - realOutput.writeChar (getCharField (obj, field_name)); - else if (type == Double.TYPE) - realOutput.writeDouble (getDoubleField (obj, field_name)); - else if (type == Float.TYPE) - realOutput.writeFloat (getFloatField (obj, field_name)); - else if (type == Integer.TYPE) - realOutput.writeInt (getIntField (obj, field_name)); - else if (type == Long.TYPE) - realOutput.writeLong (getLongField (obj, field_name)); - else if (type == Short.TYPE) - realOutput.writeShort (getShortField (obj, field_name)); - else - writeObject (getObjectField (obj, field_name, - fields[i].getTypeString ())); - } - setBlockDataMode(oldmode); + { + field_name = fields[i].getName (); + type = fields[i].getType (); + + if (type == Boolean.TYPE) + realOutput.writeBoolean (getBooleanField (obj, field_name)); + else if (type == Byte.TYPE) + realOutput.writeByte (getByteField (obj, field_name)); + else if (type == Character.TYPE) + realOutput.writeChar (getCharField (obj, field_name)); + else if (type == Double.TYPE) + realOutput.writeDouble (getDoubleField (obj, field_name)); + else if (type == Float.TYPE) + realOutput.writeFloat (getFloatField (obj, field_name)); + else if (type == Integer.TYPE) + realOutput.writeInt (getIntField (obj, field_name)); + else if (type == Long.TYPE) + realOutput.writeLong (getLongField (obj, field_name)); + else if (type == Short.TYPE) + realOutput.writeShort (getShortField (obj, field_name)); + else + writeObject (getObjectField (obj, field_name, + fields[i].getTypeString ())); + } + setBlockDataMode (oldmode); } @@ -1246,7 +1243,8 @@ public class ObjectOutputStream extends OutputStream } } - private boolean getBooleanField (Object obj, String field_name) throws IOException + private boolean getBooleanField (Object obj, String field_name) + throws IOException { try { @@ -1291,7 +1289,8 @@ public class ObjectOutputStream extends OutputStream } } - private double getDoubleField (Object obj, String field_name) throws IOException + private double getDoubleField (Object obj, String field_name) + throws IOException { try { @@ -1306,7 +1305,8 @@ public class ObjectOutputStream extends OutputStream } } - private float getFloatField (Object obj, String field_name) throws IOException + private float getFloatField (Object obj, String field_name) + throws IOException { try { @@ -1351,7 +1351,8 @@ public class ObjectOutputStream extends OutputStream } } - private short getShortField (Object obj, String field_name) throws IOException + private short getShortField (Object obj, String field_name) + throws IOException { try { @@ -1388,13 +1389,13 @@ public class ObjectOutputStream extends OutputStream { return klass.getDeclaredField(name); } - + private static Method getMethod (Class klass, String name, Class[] args) throws java.lang.NoSuchMethodException { return klass.getDeclaredMethod(name, args); } - + // this value comes from 1.2 spec, but is used in 1.1 as well private final static int BUFFER_SIZE = 1024; |