package com.sleepycat.bind.serial; import java.io.ObjectStreamClass; import com.sleepycat.je.DatabaseException; import de.ovgu.cide.jakutil.*; /** * A catalog of class description information for use during object * serialization. * <p> * A catalog is used to store class descriptions separately from serialized * objects, to avoid redundantly stored information with each object. When * serialized objects are stored in a database, a {@link StoredClassCatalog}should be used. * </p> * <p> * This information is used for serialization of class descriptors or * java.io.ObjectStreamClass objects, each of which represents a unique class * format. For each unique format, a unique class ID is assigned by the catalog. * The class ID can then be used in the serialization stream in place of the * full class information. When used with {@link SerialInput} and{@link SerialOutput} or any of the serial bindings, the use of the catalog is * transparent to the application. * </p> * @author Mark Hayes */ public interface ClassCatalog { /** * Close a catalog database and release any cached resources. */ public void close() throws DatabaseException ; /** * Return the class ID for the current version of the given class * description. This is used for storing in serialization streams in place * of a full class descriptor, since it is much more compact. To get back * the ObjectStreamClass for a class ID, call{@link #getClassFormat(byte[])}. This function causes a new class ID to * be assigned if the class description has changed. * @param classDescThe class description for which to return the class ID. * @return The class ID for the current version of the class. */ public byte[] getClassID( ObjectStreamClass classDesc) throws DatabaseException, ClassNotFoundException ; /** * Return the ObjectStreamClass for the given class ID. This may or may not * be the current class format, depending on whether the class has changed * since the class ID was generated. * @param classIDThe class ID for which to return the class format. * @return The class format for the given class ID, which may or may not * represent the current version of the class. */ public ObjectStreamClass getClassFormat( byte[] classID) throws DatabaseException, ClassNotFoundException ; }