
com.sleepycat.persist.impl.Catalog Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of je Show documentation
Show all versions of je Show documentation
Berkeley DB Java Edition is a open source, transactional storage solution for Java applications. The Direct Persistence Layer (DPL) API is faster and easier to develop, deploy, and manage than serialized object files or ORM-based Java persistence solutions. The Collections API enhances the standard java.util.collections classes allowing them to be persisted to a local file system and accessed concurrently while protected by ACID transactions. Data is stored by serializing objects and managing class and instance data separately so as not to waste space. Berkeley DB Java Edition is the reliable drop-in solution for complex, fast, and scalable storage. Source for this release is in 'je-4.0.92-sources.jar', the Javadoc is located at 'http://download.oracle.com/berkeley-db/docs/je/4.0.92/'.
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.persist.impl;
import java.util.IdentityHashMap;
import java.util.Map;
import com.sleepycat.persist.raw.RawObject;
/**
* Catalog operation interface used by format classes.
*
* @see PersistCatalog
* @see SimpleCatalog
* @see ReadOnlyCatalog
*
* @author Mark Hayes
*/
interface Catalog {
/*
* The catalog version is returned by getInitVersion and is the version of
* the serialized format classes loaded from the stored catalog. When a
* field is added, for example, the version can be checked to determine how
* to initialize the field in Format.initialize.
*
* -1: The version is considered to be -1 when reading the beta version of
* the catalog data. At this point no version field was stored, but we can
* distinguish the beta stored format. See PersistCatalog.
*
* 0: The first released version of the catalog data, after beta. At this
* point no version field was stored, but it is initialized to zero when
* the PersistCatalog.Data object is de-serialized.
*
* 1: Add the ComplexFormat.ConvertFieldReader.oldFieldNum field. [#15797]
*/
static final int BETA_VERSION = -1;
static final int CURRENT_VERSION = 1;
/**
* See above.
*/
int getInitVersion(Format format, boolean forReader);
/**
* Returns a format for a given ID, or throws an exception. This method is
* used when reading an object from the byte array format.
*
* @param expectStored is true if reading a record from a database, and
* therefore the format ID is expected to be stored also. If the format ID
* is not stored, a RefreshException is thrown.
*
* @throws IllegalStateException if the formatId does not correspond to a
* persistent class. This is an internal consistency error.
*/
Format getFormat(int formatId, boolean expectStored)
throws RefreshException;
/**
* Returns a format for a given class, or throws an exception. This method
* is used when writing an object that was passed in by the user.
*
* @param checkEntitySubclassIndexes is true if we're expecting this format
* to be an entity subclass and therefore subclass secondary indexes should
* be opened.
*
* @throws IllegalArgumentException if the class is not persistent. This
* is a user error.
*/
Format getFormat(Class cls, boolean checkEntitySubclassIndexes)
throws RefreshException;
/**
* Returns a format by class name. Unlike {@link
* #getFormat(Class,boolean)}, the format will not be created if it is not
* already known.
*/
Format getFormat(String className);
/**
* @see PersistCatalog#createFormat
*/
Format createFormat(String clsName, Map newFormats);
/**
* @see PersistCatalog#createFormat
*/
Format createFormat(Class type, Map newFormats);
/**
* @see PersistCatalog#isRawAccess
*/
boolean isRawAccess();
/**
* @see PersistCatalog#convertRawObject
*/
Object convertRawObject(RawObject o, IdentityHashMap converted)
throws RefreshException;
/**
* @see PersistCatalog#resolveClass
*/
Class resolveClass(String clsName)
throws ClassNotFoundException;
/**
* @see PersistCatalog#resolveKeyClass
*/
Class resolveKeyClass(String clsName);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy