diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2006-03-29 21:34:55 +0000 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2006-03-29 21:34:55 +0000 |
commit | 139a0c5f3c4ba93afaf8eb29de10875c6a62e3c7 (patch) | |
tree | 634b202d523730d3a71a8000bde93e7ab5c1f9d4 | |
parent | d9d677465f05403d17ad7de6eeb1ed796e548941 (diff) | |
download | classpath-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-- | ChangeLog | 8 | ||||
-rw-r--r-- | java/io/ObjectInputStream.java | 18 | ||||
-rw-r--r-- | java/io/ObjectStreamConstants.java | 3 |
3 files changed, 27 insertions, 2 deletions
@@ -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; |