aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/io/ObjectInputStream.java36
-rw-r--r--libjava/java/io/ObjectOutputStream.java27
-rw-r--r--libjava/java/io/Replaceable.java54
-rw-r--r--libjava/java/io/Resolvable.java52
-rw-r--r--libjava/java/security/Key.java3
-rw-r--r--libjava/java/security/Provider.java4
-rw-r--r--libjava/java/security/interfaces/DSAPrivateKey.java3
-rw-r--r--libjava/java/security/interfaces/DSAPublicKey.java3
-rw-r--r--libjava/java/sql/DataTruncation.java4
-rw-r--r--libjava/java/sql/SQLException.java4
-rw-r--r--libjava/java/sql/SQLWarning.java4
-rw-r--r--libjava/java/util/Date.java33
12 files changed, 95 insertions, 132 deletions
diff --git a/libjava/java/io/ObjectInputStream.java b/libjava/java/io/ObjectInputStream.java
index 53353dc..c1d6d6c 100644
--- a/libjava/java/io/ObjectInputStream.java
+++ b/libjava/java/io/ObjectInputStream.java
@@ -1,5 +1,5 @@
/* ObjectInputStream.java -- Class used to read serialized objects
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -37,6 +37,7 @@ import gnu.java.io.ObjectIdentityWrapper;
import gnu.java.lang.reflect.TypeSignature;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
@@ -189,7 +190,7 @@ public class ObjectInputStream extends InputStream
{
// DEBUG ("STRING ");
String s = this.realInputStream.readUTF ();
- ret_val = processResoultion (s, assignNewHandle (s));
+ ret_val = processResolution (s, assignNewHandle (s));
break;
}
@@ -202,7 +203,7 @@ public class ObjectInputStream extends InputStream
Object array = Array.newInstance (componenetType, length);
int handle = assignNewHandle (array);
readArrayElements (array, componenetType);
- ret_val = processResoultion (array, handle);
+ ret_val = processResolution (array, handle);
break;
}
@@ -250,7 +251,7 @@ public class ObjectInputStream extends InputStream
if (read_from_blocks)
setBlockDataMode (false);
- ret_val = processResoultion (obj, handle);
+ ret_val = processResolution (obj, handle);
break;
} // end if (Externalizable.class.isAssignableFrom (clazz))
@@ -315,7 +316,7 @@ public class ObjectInputStream extends InputStream
this.currentObject = null;
this.currentObjectStreamClass = null;
- ret_val = processResoultion (obj, handle);
+ ret_val = processResolution (obj, handle);
break;
}
@@ -937,11 +938,30 @@ public class ObjectInputStream extends InputStream
}
- private Object processResoultion (Object obj, int handle)
+ private Object processResolution (Object obj, int handle)
throws IOException
{
- if (obj instanceof Resolvable)
- obj = ((Resolvable)obj).readResolve ();
+ if (obj instanceof Serializable)
+ {
+ 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[] {});
+ }
+ catch (NoSuchMethodException ignore)
+ {
+ }
+ catch (IllegalAccessException ignore)
+ {
+ }
+ catch (InvocationTargetException ignore)
+ {
+ }
+ }
if (this.resolveEnabled)
obj = resolveObject (obj);
diff --git a/libjava/java/io/ObjectOutputStream.java b/libjava/java/io/ObjectOutputStream.java
index 664b882..cd6202e 100644
--- a/libjava/java/io/ObjectOutputStream.java
+++ b/libjava/java/io/ObjectOutputStream.java
@@ -30,6 +30,7 @@ package java.io;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
import java.util.Hashtable;
import gnu.java.io.ObjectIdentityWrapper;
@@ -241,13 +242,33 @@ public class ObjectOutputStream extends OutputStream
Object replacedObject = null;
- if ((replacementEnabled || obj instanceof Replaceable)
+ if ((replacementEnabled || obj instanceof Serializable)
&& ! replaceDone)
{
replacedObject = obj;
- if (obj instanceof Replaceable)
- obj = ((Replaceable)obj).writeReplace ();
+ if (obj instanceof Serializable)
+ {
+ Method m = null;
+ try
+ {
+ Class classArgs[] = {};
+ m = obj.getClass ().getDeclaredMethod ("writeReplace",
+ 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 (replacementEnabled)
obj = replaceObject (obj);
diff --git a/libjava/java/io/Replaceable.java b/libjava/java/io/Replaceable.java
deleted file mode 100644
index 1035ab5..0000000
--- a/libjava/java/io/Replaceable.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Replaceable.java -- Replace an object with another object
- Copyright (C) 1998 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-As a special exception, if you link this library with other files to
-produce an executable, this library does not by itself cause the
-resulting executable to be covered by the GNU General Public License.
-This exception does not however invalidate any other reasons why the
-executable file might be covered by the GNU General Public License. */
-
-
-package java.io;
-
-/**
- * This interface is used to indicate that an object may want to have
- * another object serialized instead of itself. It contains one method
- * that is to be called when an object is to be serialized. That method
- * is reponsible for returning the real object that should be serialized
- * instead of object being queried.
- *
- * @version 0.0
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
-public interface Replaceable extends Serializable
-{
-
-/**
- * This method returns the object that should be serialized instead of
- * this object
- *
- * @return The real object that should be serialized
- */
-public abstract Object
-writeReplace();
-
-} // interface Replaceable
-
diff --git a/libjava/java/io/Resolvable.java b/libjava/java/io/Resolvable.java
deleted file mode 100644
index b7250de6..0000000
--- a/libjava/java/io/Resolvable.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Resolvable.java -- Returns an object to replace the one being de-serialized
- Copyright (C) 1998 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-As a special exception, if you link this library with other files to
-produce an executable, this library does not by itself cause the
-resulting executable to be covered by the GNU General Public License.
-This exception does not however invalidate any other reasons why the
-executable file might be covered by the GNU General Public License. */
-
-
-package java.io;
-
-/**
- * This interface is implemented when an object wishes to return another
- * object to replace it during de-serialization. It has one method that
- * returns the object that should be used to replace the original object.
- *
- * @version 0.0
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
-public interface Resolvable extends Serializable
-{
-
-/**
- * This method returns the object that should be used to replace the
- * original object during de-serialization.
- *
- * @return The replacement object
- */
-public abstract Object
-readResolve();
-
-} // interface Resolvable
-
diff --git a/libjava/java/security/Key.java b/libjava/java/security/Key.java
index b3f2bef..ae73bf6 100644
--- a/libjava/java/security/Key.java
+++ b/libjava/java/security/Key.java
@@ -20,8 +20,7 @@ import java.io.Serializable;
public interface Key extends Serializable
{
- // FIXME: need to set this at some point when serialization is implemented.
- // public static final long serialVersionUID = 0L;
+ public static final long serialVersionUID = 6603384152749567654L;
public String getAlgorithm();
public String getFormat();
diff --git a/libjava/java/security/Provider.java b/libjava/java/security/Provider.java
index d0a969f..fbaa3c0 100644
--- a/libjava/java/security/Provider.java
+++ b/libjava/java/security/Provider.java
@@ -1,5 +1,5 @@
/* Provider.java -- Security provider information
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -68,6 +68,8 @@ private String name;
*/
private double version;
+private static final long serialVersionUID = -4298000515446427739L;
+
/*************************************************************************/
/*
diff --git a/libjava/java/security/interfaces/DSAPrivateKey.java b/libjava/java/security/interfaces/DSAPrivateKey.java
index c0efe21b4..5d70136 100644
--- a/libjava/java/security/interfaces/DSAPrivateKey.java
+++ b/libjava/java/security/interfaces/DSAPrivateKey.java
@@ -21,8 +21,7 @@ import java.math.BigInteger;
public interface DSAPrivateKey extends DSAKey, PrivateKey
{
- // FIXME: need to set this at some point when serialization is implemented.
- // public static final long serialVersionUID = 0L;
+ public static final long serialVersionUID = 7776497482533790279L;
public BigInteger getX();
}
diff --git a/libjava/java/security/interfaces/DSAPublicKey.java b/libjava/java/security/interfaces/DSAPublicKey.java
index 43eedaf..a8bb885 100644
--- a/libjava/java/security/interfaces/DSAPublicKey.java
+++ b/libjava/java/security/interfaces/DSAPublicKey.java
@@ -21,8 +21,7 @@ import java.math.BigInteger;
public interface DSAPublicKey extends DSAKey, PublicKey
{
- // FIXME: need to set this at some point when serialization is implemented.
- // public static final long serialVersionUID = 0L;
+ public static final long serialVersionUID = 1234526332779022332L;
public BigInteger getY();
}
diff --git a/libjava/java/sql/DataTruncation.java b/libjava/java/sql/DataTruncation.java
index bb9ada6..eabd46c 100644
--- a/libjava/java/sql/DataTruncation.java
+++ b/libjava/java/sql/DataTruncation.java
@@ -1,5 +1,5 @@
/* DataTruncation.java -- Warning when data has been truncated.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -72,6 +72,8 @@ private boolean read;
*/
private int transferSize;
+private static final long serialVersionUID = 6464298989504059473L;
+
/*************************************************************************/
/*
diff --git a/libjava/java/sql/SQLException.java b/libjava/java/sql/SQLException.java
index 0fa6483..650d3c6 100644
--- a/libjava/java/sql/SQLException.java
+++ b/libjava/java/sql/SQLException.java
@@ -1,5 +1,5 @@
/* SQLException.java -- General SQL exception
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -59,6 +59,8 @@ private String SQLState;
*/
private int vendorCode;
+private static final long serialVersionUID = 2135244094396331484L;
+
/*************************************************************************/
/*
diff --git a/libjava/java/sql/SQLWarning.java b/libjava/java/sql/SQLWarning.java
index d13bad1..0318262 100644
--- a/libjava/java/sql/SQLWarning.java
+++ b/libjava/java/sql/SQLWarning.java
@@ -1,5 +1,5 @@
/* SQLWarning.java -- Database access warnings.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -132,5 +132,7 @@ setNextWarning(SQLWarning e)
super.setNextException(e);
}
+private static final long serialVersionUID = 3917336774604784856L;
+
} // class SQLWarning
diff --git a/libjava/java/util/Date.java b/libjava/java/util/Date.java
index 6a8a765..4b76b8a 100644
--- a/libjava/java/util/Date.java
+++ b/libjava/java/util/Date.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
This file is part of libgcj.
@@ -18,13 +18,13 @@ import java.text.*;
* "The Java Language Specification", ISBN 0-201-63451-1,
* and O'Reilly's "Java in a Nutshell".
* Status: Need to re-write toString().
- * Missing: ToGMTString and toLocaleString.
- * Serialization spec: Specifies readObject/writeObject.
+ * Missing: ToGMTString.
*/
-
public class Date implements java.io.Serializable, Cloneable
{
- private long millis;
+ private static final long serialVersionUID = 7523967970034938905L;
+
+ transient private long millis;
public Date() { millis = System.currentTimeMillis(); }
@@ -480,4 +480,27 @@ public class Date implements java.io.Serializable, Cloneable
cal.set(year+1900, month, date, hours, minutes, seconds);
return cal.getTimeInMillis();
}
+
+ /**
+ * Reads an Object from the stream.
+ */
+ private void readObject (java.io.ObjectInputStream input)
+ throws java.io.IOException, ClassNotFoundException
+ {
+ input.defaultReadObject ();
+ millis = input.readLong ();
+ }
+
+ /**
+ * Writes an Object to the stream.
+ * @serialdata A long value representing the offset from the epoch
+ * in milliseconds. This is the same value that is returned by the
+ * method getTime().
+ */
+ private void writeObject (java.io.ObjectOutputStream output)
+ throws java.io.IOException
+ {
+ output.defaultWriteObject ();
+ output.writeLong (millis);
+ }
}