summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Frijters <jeroen@sumatra.nl>2007-06-21 06:19:26 +0000
committerJeroen Frijters <jeroen@sumatra.nl>2007-06-21 06:19:26 +0000
commitbd96790654725d49b761f74f61ab26a2c11d3ee5 (patch)
treeef49136de9bc50784bbcc8f46c49c7e585cd3bfa
parent3ba9b259728656bfda2eed6cf438e13275b305ca (diff)
downloadclasspath-bd96790654725d49b761f74f61ab26a2c11d3ee5.tar.gz
2007-06-21 Jeroen Frijters <jeroen@frijters.net>
* java/io/ObjectStreamClass.java (getClassUID): Return 0L for enums and proxies.
-rw-r--r--ChangeLog5
-rw-r--r--java/io/ObjectStreamClass.java8
2 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 4bf4d950e..ef0f8eedf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2007-06-21 Jeroen Frijters <jeroen@frijters.net>
+ * java/io/ObjectStreamClass.java (getClassUID): Return 0L for
+ enums and proxies.
+
+2007-06-21 Jeroen Frijters <jeroen@frijters.net>
+
* java/net/URLClassLoader.java
(URLClassLoader(URL[],ClassLoader,URLStreamHandlerFactory):
Add factory to cache before calling addURLS.
diff --git a/java/io/ObjectStreamClass.java b/java/io/ObjectStreamClass.java
index 52a1ad428..70cb91090 100644
--- a/java/io/ObjectStreamClass.java
+++ b/java/io/ObjectStreamClass.java
@@ -781,6 +781,14 @@ outer:
result = cache.longValue();
else
{
+ // Note that we can't use Class.isEnum() here, because that returns
+ // false for java.lang.Enum and enum value sub classes.
+ if (Enum.class.isAssignableFrom(cl) || Proxy.isProxyClass(cl))
+ {
+ // Spec says that enums and dynamic proxies have
+ // a serialVersionUID of 0L.
+ return 0L;
+ }
try
{
result = getClassUIDFromField(cl);