private CascadingCache<Object, Object> getDirectMappedCache( int capacity, CacheEvictionCallback cacheEvictionCallback ) { CascadingCache<Object, Object> map = new DirectMappedCache<Object, Object>(); map.setCacheEvictionCallback( cacheEvictionCallback ); map.setCapacity( capacity ); map.initialize(); return map; }
@Override public void prepare( final FlowProcess flowProcess, OperationCall<CascadingCache<Tuple, Object>> operationCall ) { CacheEvictionCallback callback = new CacheEvictionCallback() { @Override public void evict( Map.Entry entry ) { flowProcess.increment( Cache.Num_Keys_Flushed, 1 ); } }; FactoryLoader loader = FactoryLoader.getInstance(); BaseCacheFactory cacheFactory = loader.loadFactoryFrom( flowProcess, UniqueProps.UNIQUE_CACHE_FACTORY, UniqueProps.DEFAULT_CACHE_FACTORY_CLASS ); if( cacheFactory == null ) throw new CascadingException( "unable to load cache factory, please check your '" + UniqueProps.UNIQUE_CACHE_FACTORY + "' setting." ); CascadingCache cache = cacheFactory.create( flowProcess ); cache.setCacheEvictionCallback( callback ); Integer cacheCapacity = capacity; if( capacity == 0 ) { cacheCapacity = flowProcess.getIntegerProperty( UniqueProps.UNIQUE_CACHE_CAPACITY ); if( cacheCapacity == null ) cacheCapacity = UniqueProps.UNIQUE_DEFAULT_CAPACITY; } cache.setCapacity( cacheCapacity.intValue() ); cache.initialize(); operationCall.setContext( cache ); }
cache.initialize();