ObjectStreamConstants.java 6.67 KB
Newer Older
Tom Tromey committed
1 2
/* ObjectStreamConstants.java -- Interface containing constant values
   used in reading and writing serialized objects
3
   Copyright (C) 1998, 1999, 2003, 2006 Free Software Foundation, Inc.
Tom Tromey committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

This file is part of GNU Classpath.

GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
GNU Classpath 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 for more details.

You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING.  If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.

Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.

As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module.  An independent module is a module which is not derived from
or based on this library.  If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so.  If you do not wish to do so, delete this
exception statement from your version. */


package java.io;

/**
 * This interface contains constants that are used in object
 * serialization.  This interface is used by <code>ObjectOutputStream</code>,
 * <code>ObjectInputStream</code>, and <code>ObjectStreamClass</code>.
 * The values for these constants are specified by the Java library
 * specification.
48 49
 * 
 * @since 1.1
Tom Tromey committed
50 51 52
 */
public interface ObjectStreamConstants
{
53 54 55 56 57 58 59
  /** 
   * The serialization stream protocol version 1. This version was
   * the default serialization protocol before JDK 1.2.
   * 
   * @see ObjectOutputStream#useProtocolVersion(int)
   * @since 1.2
   */
Tom Tromey committed
60
  int PROTOCOL_VERSION_1 = 1;
61 62 63 64 65 66 67 68
  
  /** 
   * The serialization stream protocol version 2. This version is
   * used as the default serialization protocol since JDK 1.2.
   * 
   * @see ObjectOutputStream#useProtocolVersion(int)
   * @since 1.2
   */
Tom Tromey committed
69 70
  int PROTOCOL_VERSION_2 = 2;

71 72 73
  /**
   * The magic number that is written as part of the stream header.
   */
Tom Tromey committed
74
  short STREAM_MAGIC = (short)0xaced;
75 76 77 78 79 80
  
  /**
   * The stream version number that is written as part of the stream header.
   * Note that this is different from the protocol version that specifies
   * the data format for the stream.
   */
Tom Tromey committed
81 82
  short STREAM_VERSION = 5;

83 84 85
  /**
   * Token value to designate a <code>null</code> reference in the stream.
   */
Tom Tromey committed
86
  byte TC_NULL = (byte)112;            //0x70
87 88 89 90
  
  /**
   * Token value to designate a reference to an already serialized object.
   */
Tom Tromey committed
91
  byte TC_REFERENCE = (byte)113;       //0x71
92 93 94 95
  
  /**
   * Token value to designate a class descriptor is next in the stream.
   */
Tom Tromey committed
96
  byte TC_CLASSDESC = (byte)114;       //0x72
97 98 99 100
  
  /**
   * Token value to designate a new object is next in the stream. 
   */
Tom Tromey committed
101
  byte TC_OBJECT = (byte)115;          //0x73
102 103 104 105
  
  /**
   * Token value to designate a new string is next in the stream.
   */
Tom Tromey committed
106
  byte TC_STRING = (byte)116;          //0x74
107 108 109 110
  
  /**
   * Token value to designate a new array is next in the stream.
   */
Tom Tromey committed
111
  byte TC_ARRAY = (byte)117;           //0x75
112 113 114 115
  
  /**
   * Token reference to designate a reference to a class.
   */
Tom Tromey committed
116
  byte TC_CLASS = (byte)118;           //0x76
117 118 119 120 121
  
  /**
   * Token value to designate a block of primitive data is next in the stream.
   * The next byte in the stream holds the size of the block (in bytes).
   */
Tom Tromey committed
122
  byte TC_BLOCKDATA = (byte)119;       //0x77
123 124 125 126
  
  /**
   * Token value to designate the end of a block of primitve data.
   */
Tom Tromey committed
127
  byte TC_ENDBLOCKDATA = (byte)120;    //0x78
128 129 130 131
  
  /**
   * Token value to designate a reset of the stream state.
   */
Tom Tromey committed
132
  byte TC_RESET = (byte)121;           //0x79
133 134 135 136 137 138
  
  /**
   * Token value to designate a long block of primitive data is next in the
   * stream. The next long in the stream holds the size of the block
   * (in bytes). 
   */
Tom Tromey committed
139
  byte TC_BLOCKDATALONG = (byte)122;   //0x7A
140 141 142 143
  
  /**
   * Token value to designate an exception occured during serialization.
   */
Tom Tromey committed
144
  byte TC_EXCEPTION = (byte)123;       //0x7B
145 146 147 148
  
  /**
   * Token value to designate a long string is next in the stream.
   */
Tom Tromey committed
149
  byte TC_LONGSTRING = (byte)124;      //0x7C
150 151 152 153
  
  /**
   * Token value to designate a proxy class descriptor is next in the stream.
   */
Tom Tromey committed
154 155
  byte TC_PROXYCLASSDESC = (byte)125;  //0x7D

156 157 158 159 160 161 162 163 164 165
  /**
   * Token value to designate an enum constant is next in the stream.
   * 
   * @since 1.5
   */
  byte TC_ENUM = (byte)126;            //0x7E
  
  /**
   * The first token value.
   */
Tom Tromey committed
166
  byte TC_BASE = TC_NULL;
167 168 169 170 171
  
  /**
   * The last token value.
   */
  byte TC_MAX = TC_ENUM;
Tom Tromey committed
172

173 174 175
  /**
   * The first handle that will be assigned to an object, for later references.
   */
Tom Tromey committed
176 177
  int baseWireHandle = 0x7e0000;

178 179 180 181
  /**
   * Flag used in <code>ObjectStreamClass</code> to designate that the class
   * defines the <code>writeObject</code> method.
   */
Tom Tromey committed
182
  byte SC_WRITE_METHOD = 0x01;
183 184 185 186 187
  
  /**
   * Flag used in <code>ObjectStreamClass</code> to designate that the class
   * is serializeable.
   */
Tom Tromey committed
188
  byte SC_SERIALIZABLE = 0x02;
189 190 191 192 193
  
  /**
   * Flag used in <code>ObjectStreamClass</code> to designate that the class
   * is externalizable.
   */
Tom Tromey committed
194
  byte SC_EXTERNALIZABLE = 0x04;
195 196 197 198 199 200 201
  
  /**
   * Flag used in <code>ObjectStreamClass</code> to designate that
   * externalizable data is written in block data mode.
   * 
   * @since 1.2
   */
Tom Tromey committed
202 203
  byte SC_BLOCK_DATA = 0x08;

204 205 206 207 208 209 210 211 212 213 214 215
  /**
   * Flag used in <code>ObjectStreamClass</code> to designate that the class
   * is an enum constant.
   * 
   * @since 1.5
   */
  byte SC_ENUM = 0x10;
  
  /**
   * Constant for use with a <code>SecurityManager</code> to check if
   * substitution of objects is allowed.
   */
Tom Tromey committed
216 217 218
  SerializablePermission SUBSTITUTION_PERMISSION
    = new SerializablePermission("enableSubstitution");

219 220 221 222 223
  /**
   * Constant for use with a <code>SecurityManager</code> to check if
   * overriding of the <code>writeObject</code> and <code>readObject</code>
   * methods is allowed.
   */
Tom Tromey committed
224 225 226 227
  SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION
    = new SerializablePermission("enableSubclassImplementation");
}