/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package java.io; /** * A helper interface with constants used by the serialization implementation. */ public abstract interface ObjectStreamConstants { /** * The stream header's magic number. */ public static final short STREAM_MAGIC = (short) 0xaced; /** * The stream header's version number. */ public static final short STREAM_VERSION = 5; // These are tags to indicate the stream contents /** * The minimum tag value. */ public static final byte TC_BASE = 0x70; /** * Tag to mark a {@code null} object reference. */ public static final byte TC_NULL = (byte) 0x70; /** * Tag to mark a reference to an object that has already been written to the * stream. */ public static final byte TC_REFERENCE = (byte) 0x71; /** * Tag to mark a new class descriptor. */ public static final byte TC_CLASSDESC = (byte) 0x72; /** * Tag to mark a new object. */ public static final byte TC_OBJECT = (byte) 0x73; /** * Tag to mark a new string. */ public static final byte TC_STRING = (byte) 0x74; /** * Tag to mark a new array. */ public static final byte TC_ARRAY = (byte) 0x75; /** * Tag to mark a reference to a class. */ public static final byte TC_CLASS = (byte) 0x76; /** * Tag to mark a block of optional data. The byte following this tag * indicates the size of the block. */ public static final byte TC_BLOCKDATA = (byte) 0x77; /** * Tag to mark the end of block data blocks for an object. */ public static final byte TC_ENDBLOCKDATA = (byte) 0x78; /** * Tag to mark a stream reset. */ public static final byte TC_RESET = (byte) 0x79; /** * Tag to mark a long block of data. The long following this tag * indicates the size of the block. */ public static final byte TC_BLOCKDATALONG = (byte) 0x7A; /** * Tag to mark an exception. */ public static final byte TC_EXCEPTION = (byte) 0x7B; /** * Tag to mark a long string. */ public static final byte TC_LONGSTRING = (byte) 0x7C; /** * Tag to mark a new proxy class descriptor. */ public static final byte TC_PROXYCLASSDESC = (byte) 0x7D; /** * The maximum tag value. */ public static final byte TC_MAX = 0x7E; /** * Handle for the first object that gets serialized. */ public static final int baseWireHandle = 0x007e0000; /** * Stream protocol version 1. */ public static final int PROTOCOL_VERSION_1 = 1; /** * Stream protocol version 2. */ public static final int PROTOCOL_VERSION_2 = 2; /** * Permission constant to enable subclassing of ObjectInputStream and * ObjectOutputStream. */ public static final SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION = new SerializablePermission( "enableSubclassImplementation"); /** * Permission constant to enable object substitution during serialization * and deserialization. */ public static final SerializablePermission SUBSTITUTION_PERMISSION = new SerializablePermission( "enableSubstitution"); // Flags that indicate if the object was serializable, externalizable // and had a writeObject method when dumped. /** * Bit mask for the {@code flag} field in ObjectStreamClass. Indicates * that a serializable class has its own {@code writeObject} method. */ public static final byte SC_WRITE_METHOD = 0x01; // If SC_SERIALIZABLE /** * Bit mask for the {@code flag} field in ObjectStreamClass. Indicates * that a class is serializable. */ public static final byte SC_SERIALIZABLE = 0x02; /** * Bit mask for the {@code flag} field in ObjectStreamClass. Indicates * that a class is externalizable. */ public static final byte SC_EXTERNALIZABLE = 0x04; /** * Bit mask for the {@code flag} field in ObjectStreamClass. Indicates * that an externalizable class is written in block data mode. */ public static final byte SC_BLOCK_DATA = 0x08; // If SC_EXTERNALIZABLE /** * Tag to mark a new enum. */ public static final byte TC_ENUM = 0x7E; /** * Bit mask for the {@code flag} field in ObjectStreamClass. Indicates * that a class is an enum type. */ public static final byte SC_ENUM = 0x10; }