001: /*
002: * @(#)ObjectStreamConstants.java 1.36 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027:
028: package java.io;
029:
030: /**
031: * Constants written into the Object Serialization Stream.
032: *
033: * @author unascribed
034: * @version 1.29, 02/02/00
035: * @since JDK 1.1
036: */
037: public interface ObjectStreamConstants {
038:
039: /**
040: * Magic number that is written to the stream header.
041: */
042: final static short STREAM_MAGIC = (short) 0xaced;
043:
044: /**
045: * Version number that is written to the stream header.
046: */
047: final static short STREAM_VERSION = 5;
048:
049: /* Each item in the stream is preceded by a tag
050: */
051:
052: /**
053: * First tag value.
054: */
055: final static byte TC_BASE = 0x70;
056:
057: /**
058: * Null object reference.
059: */
060: final static byte TC_NULL = (byte) 0x70;
061:
062: /**
063: * Reference to an object already written into the stream.
064: */
065: final static byte TC_REFERENCE = (byte) 0x71;
066:
067: /**
068: * new Class Descriptor.
069: */
070: final static byte TC_CLASSDESC = (byte) 0x72;
071:
072: /**
073: * new Object.
074: */
075: final static byte TC_OBJECT = (byte) 0x73;
076:
077: /**
078: * new String.
079: */
080: final static byte TC_STRING = (byte) 0x74;
081:
082: /**
083: * new Array.
084: */
085: final static byte TC_ARRAY = (byte) 0x75;
086:
087: /**
088: * Reference to Class.
089: */
090: final static byte TC_CLASS = (byte) 0x76;
091:
092: /**
093: * Block of optional data. Byte following tag indicates number
094: * of bytes in this block data.
095: */
096: final static byte TC_BLOCKDATA = (byte) 0x77;
097:
098: /**
099: * End of optional block data blocks for an object.
100: */
101: final static byte TC_ENDBLOCKDATA = (byte) 0x78;
102:
103: /**
104: * Reset stream context. All handles written into stream are reset.
105: */
106: final static byte TC_RESET = (byte) 0x79;
107:
108: /**
109: * long Block data. The long following the tag indicates the
110: * number of bytes in this block data.
111: */
112: final static byte TC_BLOCKDATALONG = (byte) 0x7A;
113:
114: /**
115: * Exception during write.
116: */
117: final static byte TC_EXCEPTION = (byte) 0x7B;
118:
119: /**
120: * Long string.
121: */
122: final static byte TC_LONGSTRING = (byte) 0x7C;
123:
124: /**
125: * new Proxy Class Descriptor.
126: */
127: final static byte TC_PROXYCLASSDESC = (byte) 0x7D;
128:
129: /**
130: * Last tag value.
131: */
132: final static byte TC_MAX = (byte) 0x7D;
133:
134: /**
135: * First wire handle to be assigned.
136: */
137: final static int baseWireHandle = 0x7e0000;
138:
139: /******************************************************/
140: /* Bit masks for ObjectStreamClass flag.*/
141:
142: /**
143: * Bit mask for ObjectStreamClass flag. Indicates a Serializable class
144: * defines its own writeObject method.
145: */
146: final static byte SC_WRITE_METHOD = 0x01;
147:
148: /**
149: * Bit mask for ObejctStreamClass flag. Indicates Externalizable data
150: * written in Block Data mode.
151: * Added for PROTOCOL_VERSION_2.
152: *
153: * @see #PROTOCOL_VERSION_2
154: * @since 1.2
155: */
156: final static byte SC_BLOCK_DATA = 0x08;
157:
158: /**
159: * Bit mask for ObjectStreamClass flag. Indicates class is Serializable.
160: */
161: final static byte SC_SERIALIZABLE = 0x02;
162:
163: /**
164: * Bit mask for ObjectStreamClass flag. Indicates class is Externalizable.
165: */
166: final static byte SC_EXTERNALIZABLE = 0x04;
167:
168: /* *******************************************************************/
169: /* Security permissions */
170:
171: /**
172: * Enable substitution of one object for another during
173: * serialization/deserialization.
174: *
175: * @see java.io.ObjectOutputStream#enableReplaceObject(boolean)
176: * @see java.io.ObjectInputStream#enableResolveObject(boolean)
177: * @since 1.2
178: */
179: final static SerializablePermission SUBSTITUTION_PERMISSION = new SerializablePermission(
180: "enableSubstitution");
181:
182: /**
183: * Enable overriding of readObject and writeObject.
184: *
185: * @see java.io.ObjectOutputStream#writeObjectOverride(Object)
186: * @see java.io.ObjectInputStream#readObjectOverride()
187: * @since 1.2
188: */
189: final static SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION = new SerializablePermission(
190: "enableSubclassImplementation");
191: /**
192: * A Stream Protocol Version. <p>
193: *
194: * All externalizable data is written in JDK 1.1 external data
195: * format after calling this method. This version is needed to write
196: * streams containing Externalizable data that can be read by
197: * pre-JDK 1.1.6 JVMs.
198: *
199: * @see java.io.ObjectOutputStream#useProtocolVersion(int)
200: * @since 1.2
201: */
202: public final static int PROTOCOL_VERSION_1 = 1;
203:
204: /**
205: * A Stream Protocol Version. <p>
206: *
207: * This protocol is written by JVM 1.2.
208: *
209: * Externalizable data is written in block data mode and is
210: * terminated with TC_ENDBLOCKDATA. Externalizable classdescriptor
211: * flags has SC_BLOCK_DATA enabled. JVM 1.1.6 and greater can
212: * read this format change.
213: *
214: * Enables writing a nonSerializable class descriptor into the
215: * stream. The serialVersionUID of a nonSerializable class is
216: * set to 0L.
217: *
218: * @see java.io.ObjectOutputStream#useProtocolVersion(int)
219: * @see #SC_BLOCK_DATA
220: * @since 1.2
221: */
222: public final static int PROTOCOL_VERSION_2 = 2;
223: }
|