Package net.ontopia.persistence.proxy
Class AbstractLocalCache
- java.lang.Object
-
- net.ontopia.persistence.proxy.AbstractLocalCache
-
- All Implemented Interfaces:
AccessRegistrarIF
,StorageCacheIF
- Direct Known Subclasses:
ROLocalCache
,RWLocalCache
public abstract class AbstractLocalCache extends Object implements StorageCacheIF, AccessRegistrarIF
INTERNAL: A transactional storage cache implementation. The cache uses the transaction to lookup objects and relies on the fact that PersistentIFs can store their own data.
-
-
Field Summary
Fields Modifier and Type Field Description protected StorageCacheIF
pcache
protected AccessRegistrarIF
pregistrar
protected TicketIF
ticket
protected AbstractTransaction
txn
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
clear(boolean notifyCluster)
INTERNAL: Clears the cache.void
close()
INTERNAL: Releases all resources used by the storage cache.IdentityIF
createIdentity(Class<?> type, long key)
INTERNAL: Factory method for creating new identity objects.IdentityIF
createIdentity(Class<?> type, Object key)
INTERNAL: Factory method for creating new identity objects.IdentityIF
createIdentity(Class<?> type, Object[] keys)
INTERNAL: Factory method for creating new identity objects.void
evictField(IdentityIF identity, int field, boolean notifyCluster)
INTERNAL: Evict the identity's field value from the cache.void
evictFields(IdentityIF identity, boolean notifyCluster)
INTERNAL: Evict all the identity's field values from the cache.void
evictIdentity(IdentityIF identity, boolean notifyCluster)
INTERNAL: Evict the identity from the cache.abstract boolean
exists(StorageAccessIF access, IdentityIF identity)
INTERNAL: Can be called to verify whether the specified identity exists in the cache or in the data repository.AccessRegistrarIF
getRegistrar()
INTERNAL: Returns the access registrar instance that is used by the storage cache.TicketIF
getTicket()
INTERNAL: Get ticket that should be used as first argument to register methods.abstract Object
getValue(StorageAccessIF access, IdentityIF identity, int field)
INTERNAL: A call forwarded by the transaction (TransactionIF) from persistent objects (PersistentIF) when the field value needs to be retrieved from storage.boolean
isFieldLoaded(IdentityIF identity, int field)
INTERNAL: Can be called to check if the specfied field has been registered with the cache.boolean
isObjectLoaded(IdentityIF identity)
INTERNAL: Can be called to check if the identity has been registered with the cache.int
prefetch(StorageAccessIF access, Class<?> type, int field, int nextField, boolean traverse, Collection<IdentityIF> identities)
void
registerEviction()
INTERNAL: Tells the cache that eviction is starting.void
registerField(TicketIF ticket, IdentityIF identity, int field, Object value)
INTERNAL: Called by storage accessors (FieldAccessIF) when they read the value of an object field from the database.void
registerIdentity(TicketIF ticket, IdentityIF identity)
INTERNAL: Called by storage accessors (QueryIFs or FieldAccessIF) when they locate the identity of an object in the database.void
releaseEviction()
INTERNAL: Deregister eviction.
-
-
-
Field Detail
-
txn
protected AbstractTransaction txn
-
pcache
protected StorageCacheIF pcache
-
pregistrar
protected AccessRegistrarIF pregistrar
-
ticket
protected TicketIF ticket
-
-
Method Detail
-
getRegistrar
public AccessRegistrarIF getRegistrar()
Description copied from interface:StorageCacheIF
INTERNAL: Returns the access registrar instance that is used by the storage cache. If it does not need an access registrar, or it does not have one, null is returned.- Specified by:
getRegistrar
in interfaceStorageCacheIF
-
close
public void close()
Description copied from interface:StorageCacheIF
INTERNAL: Releases all resources used by the storage cache.- Specified by:
close
in interfaceStorageCacheIF
-
exists
public abstract boolean exists(StorageAccessIF access, IdentityIF identity)
Description copied from interface:StorageCacheIF
INTERNAL: Can be called to verify whether the specified identity exists in the cache or in the data repository. Whether the data repository is actually asked depends on the policy of the storage cache.- Specified by:
exists
in interfaceStorageCacheIF
-
getValue
public abstract Object getValue(StorageAccessIF access, IdentityIF identity, int field)
Description copied from interface:StorageCacheIF
INTERNAL: A call forwarded by the transaction (TransactionIF) from persistent objects (PersistentIF) when the field value needs to be retrieved from storage. The field value will be returned.- Specified by:
getValue
in interfaceStorageCacheIF
-
isObjectLoaded
public boolean isObjectLoaded(IdentityIF identity)
Description copied from interface:StorageCacheIF
INTERNAL: Can be called to check if the identity has been registered with the cache. The data repository will not be asked.- Specified by:
isObjectLoaded
in interfaceStorageCacheIF
-
isFieldLoaded
public boolean isFieldLoaded(IdentityIF identity, int field)
Description copied from interface:StorageCacheIF
INTERNAL: Can be called to check if the specfied field has been registered with the cache. The data repository will not be asked.- Specified by:
isFieldLoaded
in interfaceStorageCacheIF
-
registerEviction
public void registerEviction()
Description copied from interface:StorageCacheIF
INTERNAL: Tells the cache that eviction is starting.- Specified by:
registerEviction
in interfaceStorageCacheIF
-
releaseEviction
public void releaseEviction()
Description copied from interface:StorageCacheIF
INTERNAL: Deregister eviction.- Specified by:
releaseEviction
in interfaceStorageCacheIF
-
evictIdentity
public void evictIdentity(IdentityIF identity, boolean notifyCluster)
Description copied from interface:StorageCacheIF
INTERNAL: Evict the identity from the cache.- Specified by:
evictIdentity
in interfaceStorageCacheIF
-
evictFields
public void evictFields(IdentityIF identity, boolean notifyCluster)
Description copied from interface:StorageCacheIF
INTERNAL: Evict all the identity's field values from the cache.- Specified by:
evictFields
in interfaceStorageCacheIF
-
evictField
public void evictField(IdentityIF identity, int field, boolean notifyCluster)
Description copied from interface:StorageCacheIF
INTERNAL: Evict the identity's field value from the cache.- Specified by:
evictField
in interfaceStorageCacheIF
-
clear
public void clear(boolean notifyCluster)
Description copied from interface:StorageCacheIF
INTERNAL: Clears the cache.- Specified by:
clear
in interfaceStorageCacheIF
-
prefetch
public int prefetch(StorageAccessIF access, Class<?> type, int field, int nextField, boolean traverse, Collection<IdentityIF> identities)
- Specified by:
prefetch
in interfaceStorageCacheIF
-
createIdentity
public IdentityIF createIdentity(Class<?> type, long key)
Description copied from interface:AccessRegistrarIF
INTERNAL: Factory method for creating new identity objects. Key is guaranteed to have a width of 1 and key value which a Long.- Specified by:
createIdentity
in interfaceAccessRegistrarIF
-
createIdentity
public IdentityIF createIdentity(Class<?> type, Object key)
Description copied from interface:AccessRegistrarIF
INTERNAL: Factory method for creating new identity objects. Key is guaranteed to have a width of 1.- Specified by:
createIdentity
in interfaceAccessRegistrarIF
-
createIdentity
public IdentityIF createIdentity(Class<?> type, Object[] keys)
Description copied from interface:AccessRegistrarIF
INTERNAL: Factory method for creating new identity objects. Key can have any width.- Specified by:
createIdentity
in interfaceAccessRegistrarIF
-
getTicket
public TicketIF getTicket()
Description copied from interface:AccessRegistrarIF
INTERNAL: Get ticket that should be used as first argument to register methods. The ticket is used figure out if value should be registered or not.- Specified by:
getTicket
in interfaceAccessRegistrarIF
-
registerIdentity
public void registerIdentity(TicketIF ticket, IdentityIF identity)
Description copied from interface:AccessRegistrarIF
INTERNAL: Called by storage accessors (QueryIFs or FieldAccessIF) when they locate the identity of an object in the database.- Specified by:
registerIdentity
in interfaceAccessRegistrarIF
-
registerField
public void registerField(TicketIF ticket, IdentityIF identity, int field, Object value)
Description copied from interface:AccessRegistrarIF
INTERNAL: Called by storage accessors (FieldAccessIF) when they read the value of an object field from the database.- Specified by:
registerField
in interfaceAccessRegistrarIF
-
-