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 }