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 Details

  • Method Details

    • 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 interface StorageCacheIF
    • close

      public void close()
      Description copied from interface: StorageCacheIF
      INTERNAL: Releases all resources used by the storage cache.
      Specified by:
      close in interface StorageCacheIF
    • 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 interface StorageCacheIF
    • 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 interface StorageCacheIF
    • 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 interface StorageCacheIF
    • 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 interface StorageCacheIF
    • registerEviction

      public void registerEviction()
      Description copied from interface: StorageCacheIF
      INTERNAL: Tells the cache that eviction is starting.
      Specified by:
      registerEviction in interface StorageCacheIF
    • releaseEviction

      public void releaseEviction()
      Description copied from interface: StorageCacheIF
      INTERNAL: Deregister eviction.
      Specified by:
      releaseEviction in interface StorageCacheIF
    • evictIdentity

      public void evictIdentity(IdentityIF identity, boolean notifyCluster)
      Description copied from interface: StorageCacheIF
      INTERNAL: Evict the identity from the cache.
      Specified by:
      evictIdentity in interface StorageCacheIF
    • 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 interface StorageCacheIF
    • 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 interface StorageCacheIF
    • clear

      public void clear(boolean notifyCluster)
      Description copied from interface: StorageCacheIF
      INTERNAL: Clears the cache.
      Specified by:
      clear in interface StorageCacheIF
    • prefetch

      public int prefetch(StorageAccessIF access, Class<?> type, int field, int nextField, boolean traverse, Collection<IdentityIF> identities)
      Specified by:
      prefetch in interface StorageCacheIF
    • 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 interface AccessRegistrarIF
    • 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 interface AccessRegistrarIF
    • 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 interface AccessRegistrarIF
    • 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 interface AccessRegistrarIF
    • 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 interface AccessRegistrarIF
    • 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 interface AccessRegistrarIF