blob: 8228b33d309a5d6cdad09eb39f6e7f8813060703 [file] [log] [blame]
/*
* 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;
}