/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved. * */ 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<Format> formatList; private Map<String, Format> formatMap; ReadOnlyCatalog(ClassLoader classLoader, List<Format> formatList, Map<String, Format> 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<String, Format> newFormats) { throw DbCompat.unexpectedState(); } public Format createFormat(Class type, Map<String, Format> 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); } }