com.sleepycat.persist.impl.ReadOnlyCatalog Maven / Gradle / Ivy
The newest version!
/*-
* 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.List;
import java.util.Map;
import java.util.NoSuchElementException;
import com.sleepycat.compat.DbCompat;
import com.sleepycat.persist.raw.RawObject;
/**
* Read-only catalog operations used when initializing new formats. This
* catalog is used temprarily when the main catalog has not been updated yet,
* but the new formats need to do catalog lookups.
*
* @see PersistCatalog#addNewFormat
*
* @author Mark Hayes
*/
class ReadOnlyCatalog implements Catalog {
private final ClassLoader classLoader;
private List formatList;
private Map formatMap;
ReadOnlyCatalog(ClassLoader classLoader,
List formatList,
Map formatMap) {
this.classLoader = classLoader;
this.formatList = formatList;
this.formatMap = formatMap;
}
public int getInitVersion(Format format, boolean forReader) {
return Catalog.CURRENT_VERSION;
}
public Format getFormat(int formatId, boolean expectStored) {
try {
Format format = formatList.get(formatId);
if (format == null) {
throw DbCompat.unexpectedState
("Format does not exist: " + formatId);
}
return format;
} catch (NoSuchElementException e) {
throw DbCompat.unexpectedState
("Format does not exist: " + formatId);
}
}
public Format getFormat(Class cls, boolean checkEntitySubclassIndexes) {
Format format = formatMap.get(cls.getName());
if (format == null) {
throw new IllegalArgumentException
("Class is not persistent: " + cls.getName());
}
return format;
}
public Format getFormat(String className) {
return formatMap.get(className);
}
public Format createFormat(String clsName,
Map newFormats) {
throw DbCompat.unexpectedState();
}
public Format createFormat(Class type, Map newFormats) {
throw DbCompat.unexpectedState();
}
public boolean isRawAccess() {
return false;
}
public Object convertRawObject(RawObject o, IdentityHashMap converted) {
throw DbCompat.unexpectedState();
}
public Class resolveClass(String clsName)
throws ClassNotFoundException {
return SimpleCatalog.resolveClass(clsName, classLoader);
}
public Class resolveKeyClass(String clsName) {
return SimpleCatalog.resolveKeyClass(clsName, classLoader);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy