001/* ObjectStreamConstants.java -- Interface containing constant values 002 used in reading and writing serialized objects 003 Copyright (C) 1998, 1999, 2003, 2006 Free Software Foundation, Inc. 004 005This file is part of GNU Classpath. 006 007GNU Classpath is free software; you can redistribute it and/or modify 008it under the terms of the GNU General Public License as published by 009the Free Software Foundation; either version 2, or (at your option) 010any later version. 011 012GNU Classpath is distributed in the hope that it will be useful, but 013WITHOUT ANY WARRANTY; without even the implied warranty of 014MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015General Public License for more details. 016 017You should have received a copy of the GNU General Public License 018along with GNU Classpath; see the file COPYING. If not, write to the 019Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02002110-1301 USA. 021 022Linking this library statically or dynamically with other modules is 023making a combined work based on this library. Thus, the terms and 024conditions of the GNU General Public License cover the whole 025combination. 026 027As a special exception, the copyright holders of this library give you 028permission to link this library with independent modules to produce an 029executable, regardless of the license terms of these independent 030modules, and to copy and distribute the resulting executable under 031terms of your choice, provided that you also meet, for each linked 032independent module, the terms and conditions of the license of that 033module. An independent module is a module which is not derived from 034or based on this library. If you modify this library, you may extend 035this exception to your version of the library, but you are not 036obligated to do so. If you do not wish to do so, delete this 037exception statement from your version. */ 038 039 040package java.io; 041 042/** 043 * This interface contains constants that are used in object 044 * serialization. This interface is used by <code>ObjectOutputStream</code>, 045 * <code>ObjectInputStream</code>, and <code>ObjectStreamClass</code>. 046 * The values for these constants are specified by the Java library 047 * specification. 048 * 049 * @since 1.1 050 */ 051public interface ObjectStreamConstants 052{ 053 /** 054 * The serialization stream protocol version 1. This version was 055 * the default serialization protocol before JDK 1.2. 056 * 057 * @see ObjectOutputStream#useProtocolVersion(int) 058 * @since 1.2 059 */ 060 int PROTOCOL_VERSION_1 = 1; 061 062 /** 063 * The serialization stream protocol version 2. This version is 064 * used as the default serialization protocol since JDK 1.2. 065 * 066 * @see ObjectOutputStream#useProtocolVersion(int) 067 * @since 1.2 068 */ 069 int PROTOCOL_VERSION_2 = 2; 070 071 /** 072 * The magic number that is written as part of the stream header. 073 */ 074 short STREAM_MAGIC = (short)0xaced; 075 076 /** 077 * The stream version number that is written as part of the stream header. 078 * Note that this is different from the protocol version that specifies 079 * the data format for the stream. 080 */ 081 short STREAM_VERSION = 5; 082 083 /** 084 * Token value to designate a <code>null</code> reference in the stream. 085 */ 086 byte TC_NULL = (byte)112; //0x70 087 088 /** 089 * Token value to designate a reference to an already serialized object. 090 */ 091 byte TC_REFERENCE = (byte)113; //0x71 092 093 /** 094 * Token value to designate a class descriptor is next in the stream. 095 */ 096 byte TC_CLASSDESC = (byte)114; //0x72 097 098 /** 099 * Token value to designate a new object is next in the stream. 100 */ 101 byte TC_OBJECT = (byte)115; //0x73 102 103 /** 104 * Token value to designate a new string is next in the stream. 105 */ 106 byte TC_STRING = (byte)116; //0x74 107 108 /** 109 * Token value to designate a new array is next in the stream. 110 */ 111 byte TC_ARRAY = (byte)117; //0x75 112 113 /** 114 * Token reference to designate a reference to a class. 115 */ 116 byte TC_CLASS = (byte)118; //0x76 117 118 /** 119 * Token value to designate a block of primitive data is next in the stream. 120 * The next byte in the stream holds the size of the block (in bytes). 121 */ 122 byte TC_BLOCKDATA = (byte)119; //0x77 123 124 /** 125 * Token value to designate the end of a block of primitve data. 126 */ 127 byte TC_ENDBLOCKDATA = (byte)120; //0x78 128 129 /** 130 * Token value to designate a reset of the stream state. 131 */ 132 byte TC_RESET = (byte)121; //0x79 133 134 /** 135 * Token value to designate a long block of primitive data is next in the 136 * stream. The next long in the stream holds the size of the block 137 * (in bytes). 138 */ 139 byte TC_BLOCKDATALONG = (byte)122; //0x7A 140 141 /** 142 * Token value to designate an exception occured during serialization. 143 */ 144 byte TC_EXCEPTION = (byte)123; //0x7B 145 146 /** 147 * Token value to designate a long string is next in the stream. 148 */ 149 byte TC_LONGSTRING = (byte)124; //0x7C 150 151 /** 152 * Token value to designate a proxy class descriptor is next in the stream. 153 */ 154 byte TC_PROXYCLASSDESC = (byte)125; //0x7D 155 156 /** 157 * Token value to designate an enum constant is next in the stream. 158 * 159 * @since 1.5 160 */ 161 byte TC_ENUM = (byte)126; //0x7E 162 163 /** 164 * The first token value. 165 */ 166 byte TC_BASE = TC_NULL; 167 168 /** 169 * The last token value. 170 */ 171 byte TC_MAX = TC_ENUM; 172 173 /** 174 * The first handle that will be assigned to an object, for later references. 175 */ 176 int baseWireHandle = 0x7e0000; 177 178 /** 179 * Flag used in <code>ObjectStreamClass</code> to designate that the class 180 * defines the <code>writeObject</code> method. 181 */ 182 byte SC_WRITE_METHOD = 0x01; 183 184 /** 185 * Flag used in <code>ObjectStreamClass</code> to designate that the class 186 * is serializeable. 187 */ 188 byte SC_SERIALIZABLE = 0x02; 189 190 /** 191 * Flag used in <code>ObjectStreamClass</code> to designate that the class 192 * is externalizable. 193 */ 194 byte SC_EXTERNALIZABLE = 0x04; 195 196 /** 197 * Flag used in <code>ObjectStreamClass</code> to designate that 198 * externalizable data is written in block data mode. 199 * 200 * @since 1.2 201 */ 202 byte SC_BLOCK_DATA = 0x08; 203 204 /** 205 * Flag used in <code>ObjectStreamClass</code> to designate that the class 206 * is an enum constant. 207 * 208 * @since 1.5 209 */ 210 byte SC_ENUM = 0x10; 211 212 /** 213 * Constant for use with a <code>SecurityManager</code> to check if 214 * substitution of objects is allowed. 215 */ 216 SerializablePermission SUBSTITUTION_PERMISSION 217 = new SerializablePermission("enableSubstitution"); 218 219 /** 220 * Constant for use with a <code>SecurityManager</code> to check if 221 * overriding of the <code>writeObject</code> and <code>readObject</code> 222 * methods is allowed. 223 */ 224 SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION 225 = new SerializablePermission("enableSubclassImplementation"); 226} 227