/* * @(#)ObjectStreamConstants.java 1.36 06/10/10 * * Copyright 1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program 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 version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. * */ package java.io; /** * Constants written into the Object Serialization Stream. * * @author unascribed * @version 1.29, 02/02/00 * @since JDK 1.1 */ public interface ObjectStreamConstants { /** * Magic number that is written to the stream header. */ final static short STREAM_MAGIC = (short)0xaced; /** * Version number that is written to the stream header. */ final static short STREAM_VERSION = 5; /* Each item in the stream is preceded by a tag */ /** * First tag value. */ final static byte TC_BASE = 0x70; /** * Null object reference. */ final static byte TC_NULL = (byte)0x70; /** * Reference to an object already written into the stream. */ final static byte TC_REFERENCE = (byte)0x71; /** * new Class Descriptor. */ final static byte TC_CLASSDESC = (byte)0x72; /** * new Object. */ final static byte TC_OBJECT = (byte)0x73; /** * new String. */ final static byte TC_STRING = (byte)0x74; /** * new Array. */ final static byte TC_ARRAY = (byte)0x75; /** * Reference to Class. */ final static byte TC_CLASS = (byte)0x76; /** * Block of optional data. Byte following tag indicates number * of bytes in this block data. */ final static byte TC_BLOCKDATA = (byte)0x77; /** * End of optional block data blocks for an object. */ final static byte TC_ENDBLOCKDATA = (byte)0x78; /** * Reset stream context. All handles written into stream are reset. */ final static byte TC_RESET = (byte)0x79; /** * long Block data. The long following the tag indicates the * number of bytes in this block data. */ final static byte TC_BLOCKDATALONG= (byte)0x7A; /** * Exception during write. */ final static byte TC_EXCEPTION = (byte)0x7B; /** * Long string. */ final static byte TC_LONGSTRING = (byte)0x7C; /** * new Proxy Class Descriptor. */ final static byte TC_PROXYCLASSDESC = (byte)0x7D; /** * Last tag value. */ final static byte TC_MAX = (byte)0x7D; /** * First wire handle to be assigned. */ final static int baseWireHandle = 0x7e0000; /******************************************************/ /* Bit masks for ObjectStreamClass flag.*/ /** * Bit mask for ObjectStreamClass flag. Indicates a Serializable class * defines its own writeObject method. */ final static byte SC_WRITE_METHOD = 0x01; /** * Bit mask for ObejctStreamClass flag. Indicates Externalizable data * written in Block Data mode. * Added for PROTOCOL_VERSION_2. * * @see #PROTOCOL_VERSION_2 * @since 1.2 */ final static byte SC_BLOCK_DATA = 0x08; /** * Bit mask for ObjectStreamClass flag. Indicates class is Serializable. */ final static byte SC_SERIALIZABLE = 0x02; /** * Bit mask for ObjectStreamClass flag. Indicates class is Externalizable. */ final static byte SC_EXTERNALIZABLE = 0x04; /* *******************************************************************/ /* Security permissions */ /** * Enable substitution of one object for another during * serialization/deserialization. * * @see java.io.ObjectOutputStream#enableReplaceObject(boolean) * @see java.io.ObjectInputStream#enableResolveObject(boolean) * @since 1.2 */ final static SerializablePermission SUBSTITUTION_PERMISSION = new SerializablePermission("enableSubstitution"); /** * Enable overriding of readObject and writeObject. * * @see java.io.ObjectOutputStream#writeObjectOverride(Object) * @see java.io.ObjectInputStream#readObjectOverride() * @since 1.2 */ final static SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION = new SerializablePermission("enableSubclassImplementation"); /** * A Stream Protocol Version. <p> * * All externalizable data is written in JDK 1.1 external data * format after calling this method. This version is needed to write * streams containing Externalizable data that can be read by * pre-JDK 1.1.6 JVMs. * * @see java.io.ObjectOutputStream#useProtocolVersion(int) * @since 1.2 */ public final static int PROTOCOL_VERSION_1 = 1; /** * A Stream Protocol Version. <p> * * This protocol is written by JVM 1.2. * * Externalizable data is written in block data mode and is * terminated with TC_ENDBLOCKDATA. Externalizable classdescriptor * flags has SC_BLOCK_DATA enabled. JVM 1.1.6 and greater can * read this format change. * * Enables writing a nonSerializable class descriptor into the * stream. The serialVersionUID of a nonSerializable class is * set to 0L. * * @see java.io.ObjectOutputStream#useProtocolVersion(int) * @see #SC_BLOCK_DATA * @since 1.2 */ public final static int PROTOCOL_VERSION_2 = 2; }