Methods Summary |
---|
private void | addToClassLoaderMap(java.lang.Class pcClass)Add pcClass to a classLoaderToClassType map. The only call to
this private method is from getPersistenceConfig(). As that method is
synchronized we don't need to synchronize here.
ClassLoader classLoader = pcClass.getClassLoader();
List classes = (List) classLoaderToClassType.get(classLoader);
if (classes == null) {
// First entry for a given ClassLoader, initialize the ArrayList.
classes = new ArrayList();
classLoaderToClassType.put(classLoader, classes);
}
classes.add(pcClass);
|
public java.lang.Class | getClassByOidClass(java.lang.Class oidType)Gets the Class instance corresponding to given oidType.
return (Class) oidClassToClassType.get(oidType);
|
public synchronized com.sun.jdo.spi.persistence.support.sqlstore.PersistenceConfig | getPersistenceConfig(java.lang.Class pcClass)Get the PersistenceConfig for given pcClass. The config is looked up
from a cache. If a config can not be found in cache, a new
instance is created and returned.
ClassDesc sqlConfig =
(ClassDesc) classConfigs.get(pcClass);
if (sqlConfig == null) {
// The order of the below operations is important.
// Initialize is called after puting sqlConfig into the
// cache so that ClassDesc#fixupForeignReferences does not
// cause infinite recursion.
// After the initialisation, oidClassToClassType.put is
// called so that sqlConfig.getOidClass() returns correct
// value.
sqlConfig = ClassDesc.newInstance(pcClass);
classConfigs.put(pcClass, sqlConfig);
sqlConfig.initialize(this);
oidClassToClassType.put(sqlConfig.getOidClass(), pcClass);
addToClassLoaderMap(pcClass);
}
return sqlConfig;
|
public void | notifyApplicationUnloaded(java.lang.ClassLoader classLoader)
// Clean up classConfigs and oidClassToClassType for the given
// classLoader.
synchronized (this) {
List pcClasses = (List) classLoaderToClassType.get(classLoader);
if (pcClasses != null) {
Iterator it = pcClasses.iterator();
while (it.hasNext()) {
Class classType = (Class) it.next();
ClassDesc config =
(ClassDesc) classConfigs.remove(classType);
Class oidClass = config.getOidClass();
oidClassToClassType.remove(oidClass);
if (config.hasVersionConsistency() && vcCache != null) {
vcCache.removePCType(classType);
}
}
// Data about this classLoader is no longer needed.
// Remove it from cache.
classLoaderToClassType.remove(classLoader);
}
}
// Notify others to cleanup
TypeTable.removeInstance(classLoader);
Model model = Model.RUNTIME;
model.removeResourcesFromCaches(classLoader);
|
public synchronized void | setVersionConsistencyCache(com.sun.jdo.spi.persistence.support.sqlstore.VersionConsistencyCache vcCache)Sets VersionConsistencyCache field.
this.vcCache = vcCache;
|