summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew John Hughes <gnu_andrew@member.fsf.org>2006-03-29 21:34:55 +0000
committerAndrew John Hughes <gnu_andrew@member.fsf.org>2006-03-29 21:34:55 +0000
commit139a0c5f3c4ba93afaf8eb29de10875c6a62e3c7 (patch)
tree634b202d523730d3a71a8000bde93e7ab5c1f9d4
parentd9d677465f05403d17ad7de6eeb1ed796e548941 (diff)
downloadclasspath-139a0c5f3c4ba93afaf8eb29de10875c6a62e3c7.tar.gz
2006-03-29 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/io/ObjectInputStream.java: (parseContent(byte)): Added enum support. * java/io/ObjectStreamConstants.java: (TC_ENUM): Added. (TC_MAX): Changed to new maximum, TC_ENUM.
-rw-r--r--ChangeLog8
-rw-r--r--java/io/ObjectInputStream.java18
-rw-r--r--java/io/ObjectStreamConstants.java3
3 files changed, 27 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 4eae45cf6..ae4b05ee0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-03-29 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * java/io/ObjectInputStream.java:
+ (parseContent(byte)): Added enum support.
+ * java/io/ObjectStreamConstants.java:
+ (TC_ENUM): Added.
+ (TC_MAX): Changed to new maximum, TC_ENUM.
+
2006-03-27 Tom Tromey <tromey@redhat.com>
PR classpath/25189:
diff --git a/java/io/ObjectInputStream.java b/java/io/ObjectInputStream.java
index 771222ad5..18ff95f05 100644
--- a/java/io/ObjectInputStream.java
+++ b/java/io/ObjectInputStream.java
@@ -432,7 +432,23 @@ public class ObjectInputStream extends InputStream
clearHandles();
throw new WriteAbortedException("Exception thrown during writing of stream", e);
}
-
+
+ case TC_ENUM:
+ {
+ /* TC_ENUM classDesc newHandle enumConstantName */
+ if (dump)
+ dumpElementln("ENUM=");
+ ObjectStreamClass osc = (ObjectStreamClass) readObject();
+ String constantName = (String) readObject();
+ if (dump)
+ dumpElementln("CONSTANT NAME = " + constantName);
+ Class clazz = osc.forClass();
+ Enum instance = Enum.valueOf(clazz, constantName);
+ assignNewHandle(instance);
+ ret_val = instance;
+ break;
+ }
+
default:
throw new IOException("Unknown marker on stream: " + marker);
}
diff --git a/java/io/ObjectStreamConstants.java b/java/io/ObjectStreamConstants.java
index 04cf79bed..5bf463d3d 100644
--- a/java/io/ObjectStreamConstants.java
+++ b/java/io/ObjectStreamConstants.java
@@ -87,9 +87,10 @@ public interface ObjectStreamConstants
byte TC_EXCEPTION = (byte)123; //0x7B
byte TC_LONGSTRING = (byte)124; //0x7C
byte TC_PROXYCLASSDESC = (byte)125; //0x7D
+ byte TC_ENUM = (byte)126; //0x7E
byte TC_BASE = TC_NULL;
- byte TC_MAX = TC_PROXYCLASSDESC;
+ byte TC_MAX = TC_ENUM;
int baseWireHandle = 0x7e0000;