Package railo.runtime.cache.eh

Source Code of railo.runtime.cache.eh.EHCacheSupport

package railo.runtime.cache.eh;

import java.util.List;

import net.sf.ehcache.Element;
import net.sf.ehcache.config.CacheConfiguration;
import net.sf.ehcache.event.RegisteredEventListeners;
import railo.commons.io.cache.Cache;
import railo.commons.io.cache.CacheEntry;
import railo.commons.io.cache.CacheEvent;
import railo.commons.io.cache.CacheEventListener;
import railo.runtime.cache.CacheSupport;
import railo.runtime.type.Struct;
import railo.runtime.type.util.KeyConstants;

public abstract class EHCacheSupport extends CacheSupport implements Cache,CacheEvent {

  @Override
  public void register(CacheEventListener listener) {
    //RegisteredEventListeners listeners=cache.getCacheEventNotificationService();
    //listeners.registerListener(new ExpiresCacheEventListener());
   
   
    net.sf.ehcache.Cache cache = getCache();
    RegisteredEventListeners service = cache.getCacheEventNotificationService();
    service.registerListener(new EHCacheEventListener(listener));
   
   
    //.getCacheEventListeners().add(new EHCacheEventListener(listener));
  }

  @Override
  public boolean contains(String key) {
    if(!getCache().isKeyInCache(key))return false;
    return getCache().get(key)!=null;
  }

  @Override
  public Struct getCustomInfo() {
    Struct info=super.getCustomInfo();
    // custom
    CacheConfiguration conf = getCache().getCacheConfiguration();
    info.setEL("disk_expiry_thread_interval", new Double(conf.getDiskExpiryThreadIntervalSeconds()));
    info.setEL("disk_spool_buffer_size", new Double(conf.getDiskSpoolBufferSizeMB()*1024*1024));
    info.setEL("max_elements_in_memory", new Double(conf.getMaxElementsInMemory()));
    info.setEL("max_elements_on_disk", new Double(conf.getMaxElementsOnDisk()));
    info.setEL("time_to_idle", new Double(conf.getTimeToIdleSeconds()));
    info.setEL("time_to_live", new Double(conf.getTimeToLiveSeconds()));
    info.setEL(KeyConstants._name, conf.getName());
    return info;
  }

  @Override
  public List keys() {
    return getCache().getKeysWithExpiryCheck();
  }
 
  @Override
  public void put(String key, Object value, Long idleTime, Long liveTime) {
    Boolean eternal = idleTime==null && liveTime==null?Boolean.TRUE:Boolean.FALSE;
    Integer idle = idleTime==null?null : new Integer( (int)(idleTime.longValue()/1000) );
    Integer live = liveTime==null?null : new Integer( (int)(liveTime.longValue()/1000) );
    getCache().put(new Element(key, value ,eternal, idle, live));
  }

 
 

  public CacheEntry getQuiet(String key, CacheEntry defaultValue){
    try {
      return new EHCacheEntry(getCache().getQuiet(key));
    } catch (Throwable t) {
      return defaultValue;
    }
  }
 
  public CacheEntry getQuiet(String key) {
    return new EHCacheEntry(getCache().getQuiet(key));
  }

  protected abstract net.sf.ehcache.Cache getCache();
 
 
}
TOP

Related Classes of railo.runtime.cache.eh.EHCacheSupport

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.