test_class.declarator: entries
test_class.modifier: private
test_class.original_string: private ArrayList<ICacheEntry<StoreImage>> entries;
test_class.type: ArrayList<ICacheEntry<StoreImage>>
test_class.var_name: entries
test_class.declarator: c0
test_class.modifier: @Mock
    private
test_class.original_string: @Mock
    private StoreImage c0;
test_class.type: StoreImage
test_class.var_name: c0
test_class.declarator: c1
test_class.modifier: @Mock
    private
test_class.original_string: @Mock
    private StoreImage c1;
test_class.type: StoreImage
test_class.var_name: c1
test_class.declarator: c2
test_class.modifier: @Mock
    private
test_class.original_string: @Mock
    private StoreImage c2;
test_class.type: StoreImage
test_class.var_name: c2
test_class.declarator: c3
test_class.modifier: @Mock
    private
test_class.original_string: @Mock
    private StoreImage c3;
test_class.type: StoreImage
test_class.var_name: c3
test_class.declarator: c4
test_class.modifier: @Mock
    private
test_class.original_string: @Mock
    private StoreImage c4;
test_class.type: StoreImage
test_class.var_name: c4
test_class.declarator: storageAll
test_class.modifier: @Mock
    private
test_class.original_string: @Mock
    private IDataStorage<StoreImage> storageAll;
test_class.type: IDataStorage<StoreImage>
test_class.var_name: storageAll
test_class.declarator: storageNone
test_class.modifier: @Mock
    private
test_class.original_string: @Mock
    private IDataStorage<StoreImage> storageNone;
test_class.type: IDataStorage<StoreImage>
test_class.var_name: storageNone
test_class.file: services/tools.descartes.teastore.image/src/test/java/tools/descartes/teastore/image/cache/TestAbstractCache.java
test_class.identifier: TestAbstractCache
test_case.body: @Test
    public void testUncacheData() {
      AbstractCacheWrapper uut = new AbstractCacheWrapper(entries, storageAll, 20000,
          predicate -> true);
      uut.uncacheData(c0);
      assertFalse(uut.dataIsInCache(c0.getId()));
      uut.cacheData(c0);
      uut.cacheData(c1);
      uut.cacheData(c2);
      uut.cacheData(c3);
  
      assertTrue(uut.dataIsInCache(c0.getId()));
      assertTrue(uut.dataIsInCache(c1.getId()));
      assertTrue(uut.dataIsInCache(c2.getId()));
      assertTrue(uut.dataIsInCache(c3.getId()));
  
      uut.uncacheData(c2);
      assertTrue(uut.dataIsInCache(c0.getId()));
      assertTrue(uut.dataIsInCache(c1.getId()));
      assertFalse(uut.dataIsInCache(c2.getId()));
      assertTrue(uut.dataIsInCache(c3.getId()));
  
      uut.uncacheData(c2);
      assertTrue(uut.dataIsInCache(c0.getId()));
      assertTrue(uut.dataIsInCache(c1.getId()));
      assertFalse(uut.dataIsInCache(c2.getId()));
      assertTrue(uut.dataIsInCache(c3.getId()));
  
      uut.uncacheData(c3);
      assertTrue(uut.dataIsInCache(c0.getId()));
      assertTrue(uut.dataIsInCache(c1.getId()));
      assertFalse(uut.dataIsInCache(c2.getId()));
      assertFalse(uut.dataIsInCache(c3.getId()));
  
      entries.clear();
      uut = new AbstractCacheWrapper(entries, storageAll, 2000, predicate -> true);
      uut.cacheData(c4);
      uut.uncacheData(c4);
      assertEquals(0, uut.getCurrentCacheSize());
    }
test_case.class_method_signature: TestAbstractCache.testUncacheData()
test_case.full_signature: @Test public void testUncacheData()
test_case.identifier: testUncacheData
test_case.invocations: uncacheData assertFalse dataIsInCache getId cacheData cacheData cacheData cacheData assertTrue dataIsInCache getId assertTrue dataIsInCache getId assertTrue dataIsInCache getId assertTrue dataIsInCache getId uncacheData assertTrue dataIsInCache getId assertTrue dataIsInCache getId assertFalse dataIsInCache getId assertTrue dataIsInCache getId uncacheData assertTrue dataIsInCache getId assertTrue dataIsInCache getId assertFalse dataIsInCache getId assertTrue dataIsInCache getId uncacheData assertTrue dataIsInCache getId assertTrue dataIsInCache getId assertFalse dataIsInCache getId assertFalse dataIsInCache getId clear cacheData uncacheData assertEquals getCurrentCacheSize
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testUncacheData()
focal_class.declarator: cachedStorage
focal_class.modifier: private
focal_class.original_string: private IDataStorage<T> cachedStorage;
focal_class.type: IDataStorage<T>
focal_class.var_name: cachedStorage
focal_class.declarator: entries
focal_class.modifier: private
focal_class.original_string: private S entries;
focal_class.type: S
focal_class.var_name: entries
focal_class.declarator: maxCacheSize
focal_class.modifier: private
focal_class.original_string: private long maxCacheSize;
focal_class.type: long
focal_class.var_name: maxCacheSize
focal_class.declarator: currentCacheSize
focal_class.modifier: private
focal_class.original_string: private long currentCacheSize;
focal_class.type: long
focal_class.var_name: currentCacheSize
focal_class.declarator: cachingRule
focal_class.modifier: private
focal_class.original_string: private Predicate<T> cachingRule;
focal_class.type: Predicate<T>
focal_class.var_name: cachingRule
focal_class.declarator: log = LoggerFactory.getLogger(AbstractCache.class)
focal_class.modifier: private
focal_class.original_string: private Logger log = LoggerFactory.getLogger(AbstractCache.class);
focal_class.type: Logger
focal_class.var_name: log
focal_class.declarator: lock = new ReentrantReadWriteLock()
focal_class.modifier: private final
focal_class.original_string: private final ReadWriteLock lock = new ReentrantReadWriteLock();
focal_class.type: ReadWriteLock
focal_class.var_name: lock
focal_class.file: services/tools.descartes.teastore.image/src/main/java/tools/descartes/teastore/image/cache/AbstractCache.java
focal_class.identifier: AbstractCache
focal_class.interfaces: implements IDataCache<T>
focal_class.class_method_signature: AbstractCache.AbstractCache(S entries, IDataStorage<T> cachedStorage, long maxCacheSize,
        Predicate<T> cachingRule)
focal_class.full_signature: public  AbstractCache(S entries, IDataStorage<T> cachedStorage, long maxCacheSize,
        Predicate<T> cachingRule)
focal_class.identifier: AbstractCache
focal_class.modifiers: public
focal_class.parameters: (S entries, IDataStorage<T> cachedStorage, long maxCacheSize,
        Predicate<T> cachingRule)
focal_class.signature:  AbstractCache(S entries, IDataStorage<T> cachedStorage, long maxCacheSize,
        Predicate<T> cachingRule)
focal_class.class_method_signature: AbstractCache.getCachedStorage()
focal_class.full_signature: protected IDataStorage<T> getCachedStorage()
focal_class.identifier: getCachedStorage
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.return: IDataStorage<T>
focal_class.signature: IDataStorage<T> getCachedStorage()
focal_class.class_method_signature: AbstractCache.getEntries()
focal_class.full_signature: protected S getEntries()
focal_class.identifier: getEntries
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.return: S
focal_class.signature: S getEntries()
focal_class.class_method_signature: AbstractCache.findInEntries(long id)
focal_class.full_signature: private F findInEntries(long id)
focal_class.identifier: findInEntries
focal_class.modifiers: private
focal_class.parameters: (long id)
focal_class.return: F
focal_class.signature: F findInEntries(long id)
focal_class.class_method_signature: AbstractCache.getData(long id, boolean markUsed)
focal_class.full_signature: private T getData(long id, boolean markUsed)
focal_class.identifier: getData
focal_class.modifiers: private
focal_class.parameters: (long id, boolean markUsed)
focal_class.return: T
focal_class.signature: T getData(long id, boolean markUsed)
focal_class.class_method_signature: AbstractCache.getMaxCacheSize()
focal_class.full_signature: @Override public long getMaxCacheSize()
focal_class.identifier: getMaxCacheSize
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getMaxCacheSize()
focal_class.class_method_signature: AbstractCache.setMaxCacheSize(long maxCacheSize)
focal_class.full_signature: @Override public boolean setMaxCacheSize(long maxCacheSize)
focal_class.identifier: setMaxCacheSize
focal_class.modifiers: @Override public
focal_class.parameters: (long maxCacheSize)
focal_class.return: boolean
focal_class.signature: boolean setMaxCacheSize(long maxCacheSize)
focal_class.class_method_signature: AbstractCache.getCurrentCacheSize()
focal_class.full_signature: @Override public long getCurrentCacheSize()
focal_class.identifier: getCurrentCacheSize
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getCurrentCacheSize()
focal_class.class_method_signature: AbstractCache.getFreeSpace()
focal_class.full_signature: @Override public long getFreeSpace()
focal_class.identifier: getFreeSpace
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getFreeSpace()
focal_class.class_method_signature: AbstractCache.hasStorageFor(long size)
focal_class.full_signature: @Override public boolean hasStorageFor(long size)
focal_class.identifier: hasStorageFor
focal_class.modifiers: @Override public
focal_class.parameters: (long size)
focal_class.return: boolean
focal_class.signature: boolean hasStorageFor(long size)
focal_class.class_method_signature: AbstractCache.cacheData(T data)
focal_class.full_signature: @Override public void cacheData(T data)
focal_class.identifier: cacheData
focal_class.modifiers: @Override public
focal_class.parameters: (T data)
focal_class.return: void
focal_class.signature: void cacheData(T data)
focal_class.class_method_signature: AbstractCache.uncacheData(T data)
focal_class.full_signature: @Override public void uncacheData(T data)
focal_class.identifier: uncacheData
focal_class.modifiers: @Override public
focal_class.parameters: (T data)
focal_class.return: void
focal_class.signature: void uncacheData(T data)
focal_class.class_method_signature: AbstractCache.dataIsCachable(T data)
focal_class.full_signature: @Override public boolean dataIsCachable(T data)
focal_class.identifier: dataIsCachable
focal_class.modifiers: @Override public
focal_class.parameters: (T data)
focal_class.return: boolean
focal_class.signature: boolean dataIsCachable(T data)
focal_class.class_method_signature: AbstractCache.dataIsInCache(long id)
focal_class.full_signature: @Override public boolean dataIsInCache(long id)
focal_class.identifier: dataIsInCache
focal_class.modifiers: @Override public
focal_class.parameters: (long id)
focal_class.return: boolean
focal_class.signature: boolean dataIsInCache(long id)
focal_class.class_method_signature: AbstractCache.clearCache()
focal_class.full_signature: @Override public void clearCache()
focal_class.identifier: clearCache
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void clearCache()
focal_class.class_method_signature: AbstractCache.dataExists(long id)
focal_class.full_signature: @Override public boolean dataExists(long id)
focal_class.identifier: dataExists
focal_class.modifiers: @Override public
focal_class.parameters: (long id)
focal_class.return: boolean
focal_class.signature: boolean dataExists(long id)
focal_class.class_method_signature: AbstractCache.loadData(long id)
focal_class.full_signature: @Override public T loadData(long id)
focal_class.identifier: loadData
focal_class.modifiers: @Override public
focal_class.parameters: (long id)
focal_class.return: T
focal_class.signature: T loadData(long id)
focal_class.class_method_signature: AbstractCache.saveData(T data)
focal_class.full_signature: @Override public boolean saveData(T data)
focal_class.identifier: saveData
focal_class.modifiers: @Override public
focal_class.parameters: (T data)
focal_class.return: boolean
focal_class.signature: boolean saveData(T data)
focal_class.class_method_signature: AbstractCache.dataIsStorable(T data)
focal_class.full_signature: @Override public boolean dataIsStorable(T data)
focal_class.identifier: dataIsStorable
focal_class.modifiers: @Override public
focal_class.parameters: (T data)
focal_class.return: boolean
focal_class.signature: boolean dataIsStorable(T data)
focal_class.class_method_signature: AbstractCache.deleteData(T data)
focal_class.full_signature: @Override public boolean deleteData(T data)
focal_class.identifier: deleteData
focal_class.modifiers: @Override public
focal_class.parameters: (T data)
focal_class.return: boolean
focal_class.signature: boolean deleteData(T data)
focal_class.class_method_signature: AbstractCache.dataRemovedFromCache(long size)
focal_class.full_signature: protected void dataRemovedFromCache(long size)
focal_class.identifier: dataRemovedFromCache
focal_class.modifiers: protected
focal_class.parameters: (long size)
focal_class.return: void
focal_class.signature: void dataRemovedFromCache(long size)
focal_class.class_method_signature: AbstractCache.dataAddedToCache(long size)
focal_class.full_signature: protected void dataAddedToCache(long size)
focal_class.identifier: dataAddedToCache
focal_class.modifiers: protected
focal_class.parameters: (long size)
focal_class.return: void
focal_class.signature: void dataAddedToCache(long size)
focal_class.class_method_signature: AbstractCache.createEntry(T data)
focal_class.full_signature: protected abstract F createEntry(T data)
focal_class.identifier: createEntry
focal_class.modifiers: protected abstract
focal_class.parameters: (T data)
focal_class.return: F
focal_class.signature: F createEntry(T data)
focal_class.class_method_signature: AbstractCache.addEntry(F data)
focal_class.full_signature: protected void addEntry(F data)
focal_class.identifier: addEntry
focal_class.modifiers: protected
focal_class.parameters: (F data)
focal_class.return: void
focal_class.signature: void addEntry(F data)
focal_class.class_method_signature: AbstractCache.removeEntryByCachingStrategy()
focal_class.full_signature: protected abstract void removeEntryByCachingStrategy()
focal_class.identifier: removeEntryByCachingStrategy
focal_class.modifiers: protected abstract
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void removeEntryByCachingStrategy()
focal_class.class_method_signature: AbstractCache.reorderAndTag(F data)
focal_class.full_signature: protected void reorderAndTag(F data)
focal_class.identifier: reorderAndTag
focal_class.modifiers: protected
focal_class.parameters: (F data)
focal_class.return: void
focal_class.signature: void reorderAndTag(F data)
focal_method.body: @Override
    public void uncacheData(T data) {
      lock.writeLock().lock();
      try {
        if (entries.remove(createEntry(data))) {
          dataRemovedFromCache(data.getByteSize());
        }
      } finally {
        lock.writeLock().unlock();
      }
    }
focal_method.class_method_signature: AbstractCache.uncacheData(T data)
focal_method.full_signature: @Override public void uncacheData(T data)
focal_method.identifier: uncacheData
focal_method.invocations: lock writeLock remove createEntry dataRemovedFromCache getByteSize unlock writeLock
focal_method.modifiers: @Override public
focal_method.parameters: (T data)
focal_method.return: void
focal_method.signature: void uncacheData(T data)