Class DbEntityCache


  • public class DbEntityCache
    extends java.lang.Object
    A simple first level cache for Entities.
    Author:
    Daniel Meyer
    • Field Detail

      • cachedEntites

        protected java.util.Map<java.lang.Class<?>,​java.util.Map<java.lang.String,​CachedDbEntity>> cachedEntites
        The cache itself: maps entity types (classes) to maps indexed by id (primary key). The motivation for indexing by type (class) is a) multiple entities of different types could have the same value as primary key. In the process engine, TaskEntity and HistoricTaskEntity have the same id value. b) performance (?)
    • Constructor Detail

      • DbEntityCache

        public DbEntityCache()
    • Method Detail

      • get

        public <T extends DbEntity> T get​(java.lang.Class<T> type,
                                          java.lang.String id)
        get an object from the cache
        Parameters:
        type - the type of the object
        id - the id of the object
        Returns:
        the object or 'null' if the object is not in the cache
        Throws:
        ProcessEngineException - if an object for the given id can be found but is of the wrong type.
      • getEntitiesByType

        public <T extends DbEntity> java.util.List<T> getEntitiesByType​(java.lang.Class<T> type)
      • getCachedEntity

        public CachedDbEntity getCachedEntity​(java.lang.Class<?> type,
                                              java.lang.String id)
        Looks up an entity in the cache.
        Parameters:
        type - the type of the object
        id - the id of the CachedEntity to lookup
        Returns:
        the cached entity or null if the entity does not exist.
      • getCachedEntity

        public CachedDbEntity getCachedEntity​(DbEntity dbEntity)
        Looks up an entity in the cache.
        Parameters:
        dbEntity - the entity for which the CachedEntity should be looked up
        Returns:
        the cached entity or null if the entity does not exist.
      • putTransient

        public void putTransient​(DbEntity e)
        Put a new, DbEntityState.TRANSIENT object into the cache.
        Parameters:
        e - the object to put into the cache
      • putPersistent

        public void putPersistent​(DbEntity e)
        Put a DbEntityState.PERSISTENT object into the cache.
        Parameters:
        e - the object to put into the cache
      • putMerged

        public void putMerged​(DbEntity e)
        Put a DbEntityState.MERGED object into the cache.
        Parameters:
        e - the object to put into the cache
      • putInternal

        protected void putInternal​(CachedDbEntity entityToAdd)
      • remove

        public boolean remove​(DbEntity e)
        Remove an entity from the cache
        Parameters:
        e - the entity to remove
        Returns:
      • remove

        public void remove​(CachedDbEntity cachedDbEntity)
        Parameters:
        cachedDbEntity -
      • contains

        public boolean contains​(DbEntity dbEntity)
        Allows checking whether the provided entity is present in the cache
        Parameters:
        dbEntity - the entity to check
        Returns:
        true if the the provided entity is present in the cache
      • isPersistent

        public boolean isPersistent​(DbEntity dbEntity)
        Allows checking whether the provided entity is present in the cache and is DbEntityState.PERSISTENT.
        Parameters:
        dbEntity - the entity to check
        Returns:
        true if the provided entity is present in the cache and is DbEntityState.PERSISTENT.
      • isDeleted

        public boolean isDeleted​(DbEntity dbEntity)
        Allows checking whether the provided entity is present in the cache and is marked to be deleted.
        Parameters:
        dbEntity - the entity to check
        Returns:
        true if the provided entity is present in the cache and is marked to be deleted
      • isTransient

        public boolean isTransient​(DbEntity dbEntity)
        Allows checking whether the provided entity is present in the cache and is DbEntityState.TRANSIENT.
        Parameters:
        dbEntity - the entity to check
        Returns:
        true if the provided entity is present in the cache and is DbEntityState.TRANSIENT.
      • getCachedEntities

        public java.util.List<CachedDbEntity> getCachedEntities()
      • setDeleted

        public void setDeleted​(DbEntity dbEntity)
        Sets an object to a deleted state. It will not be removed from the cache but transition to one of the DELETED states, depending on it's current state.
        Parameters:
        dbEntity - the object to mark deleted.
      • undoDelete

        public void undoDelete​(DbEntity dbEntity)