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 005 This file is part of GNU Classpath. 006 007 GNU Classpath is free software; you can redistribute it and/or modify 008 it under the terms of the GNU General Public License as published by 009 the Free Software Foundation; either version 2, or (at your option) 010 any later version. 011 012 GNU Classpath is distributed in the hope that it will be useful, but 013 WITHOUT ANY WARRANTY; without even the implied warranty of 014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 General Public License for more details. 016 017 You should have received a copy of the GNU General Public License 018 along with GNU Classpath; see the file COPYING. If not, write to the 019 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 020 02110-1301 USA. 021 022 Linking this library statically or dynamically with other modules is 023 making a combined work based on this library. Thus, the terms and 024 conditions of the GNU General Public License cover the whole 025 combination. 026 027 As a special exception, the copyright holders of this library give you 028 permission to link this library with independent modules to produce an 029 executable, regardless of the license terms of these independent 030 modules, and to copy and distribute the resulting executable under 031 terms of your choice, provided that you also meet, for each linked 032 independent module, the terms and conditions of the license of that 033 module. An independent module is a module which is not derived from 034 or based on this library. If you modify this library, you may extend 035 this exception to your version of the library, but you are not 036 obligated to do so. If you do not wish to do so, delete this 037 exception statement from your version. */ 038 039 040 package 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 */ 051 public 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 }