Source for java.io.ObjectStreamConstants

   1: /* ObjectStreamConstants.java -- Interface containing constant values
   2:    used in reading and writing serialized objects
   3:    Copyright (C) 1998, 1999, 2003, 2006 Free Software Foundation, Inc.
   4: 
   5: This file is part of GNU Classpath.
   6: 
   7: GNU Classpath is free software; you can redistribute it and/or modify
   8: it under the terms of the GNU General Public License as published by
   9: the Free Software Foundation; either version 2, or (at your option)
  10: any later version.
  11:  
  12: GNU Classpath is distributed in the hope that it will be useful, but
  13: WITHOUT ANY WARRANTY; without even the implied warranty of
  14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15: General Public License for more details.
  16: 
  17: You should have received a copy of the GNU General Public License
  18: along with GNU Classpath; see the file COPYING.  If not, write to the
  19: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  20: 02110-1301 USA.
  21: 
  22: Linking this library statically or dynamically with other modules is
  23: making a combined work based on this library.  Thus, the terms and
  24: conditions of the GNU General Public License cover the whole
  25: combination.
  26: 
  27: As a special exception, the copyright holders of this library give you
  28: permission to link this library with independent modules to produce an
  29: executable, regardless of the license terms of these independent
  30: modules, and to copy and distribute the resulting executable under
  31: terms of your choice, provided that you also meet, for each linked
  32: independent module, the terms and conditions of the license of that
  33: module.  An independent module is a module which is not derived from
  34: or based on this library.  If you modify this library, you may extend
  35: this exception to your version of the library, but you are not
  36: obligated to do so.  If you do not wish to do so, delete this
  37: exception statement from your version. */
  38: 
  39: 
  40: package java.io;
  41: 
  42: /**
  43:  * This interface contains constants that are used in object
  44:  * serialization.  This interface is used by <code>ObjectOutputStream</code>,
  45:  * <code>ObjectInputStream</code>, and <code>ObjectStreamClass</code>.
  46:  * The values for these constants are specified by the Java library
  47:  * specification.
  48:  * 
  49:  * @since 1.1
  50:  */
  51: public interface ObjectStreamConstants
  52: {
  53:   /** 
  54:    * The serialization stream protocol version 1. This version was
  55:    * the default serialization protocol before JDK 1.2.
  56:    * 
  57:    * @see ObjectOutputStream#useProtocolVersion(int)
  58:    * @since 1.2
  59:    */
  60:   int PROTOCOL_VERSION_1 = 1;
  61:   
  62:   /** 
  63:    * The serialization stream protocol version 2. This version is
  64:    * used as the default serialization protocol since JDK 1.2.
  65:    * 
  66:    * @see ObjectOutputStream#useProtocolVersion(int)
  67:    * @since 1.2
  68:    */
  69:   int PROTOCOL_VERSION_2 = 2;
  70: 
  71:   /**
  72:    * The magic number that is written as part of the stream header.
  73:    */
  74:   short STREAM_MAGIC = (short)0xaced;
  75:   
  76:   /**
  77:    * The stream version number that is written as part of the stream header.
  78:    * Note that this is different from the protocol version that specifies
  79:    * the data format for the stream.
  80:    */
  81:   short STREAM_VERSION = 5;
  82: 
  83:   /**
  84:    * Token value to designate a <code>null</code> reference in the stream.
  85:    */
  86:   byte TC_NULL = (byte)112;            //0x70
  87:   
  88:   /**
  89:    * Token value to designate a reference to an already serialized object.
  90:    */
  91:   byte TC_REFERENCE = (byte)113;       //0x71
  92:   
  93:   /**
  94:    * Token value to designate a class descriptor is next in the stream.
  95:    */
  96:   byte TC_CLASSDESC = (byte)114;       //0x72
  97:   
  98:   /**
  99:    * 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: }