package railo.runtime.cache.eh.remote.soap; import java.io.ByteArrayInputStream; import java.io.ObjectInputStream; import java.util.Date; import railo.commons.io.cache.CacheEntry; import railo.loader.util.Util; import railo.runtime.cache.CacheUtil; import railo.runtime.type.Struct; public class SoapCacheEntry implements CacheEntry { private Element element; public SoapCacheEntry(Element element) { this.element=element; } @Override public Date created() { return new Date(element.getExpirationDate().longValue()-element.getTimeToLiveSeconds().longValue()); } @Override public Date lastHit() { return new Date(0); // TODO return new Date(element.getLastAccessTime()); } @Override public Date lastModified() { return new Date(0); // TODO long value = element.getLastUpdateTime(); // TODO if(value==0)return created(); // TODO return new Date(value); } @Override public int hitCount() { return 0; // TODO return (int)element.getHitCount(); } @Override public long idleTimeSpan() { return element.getTimeToIdleSeconds().intValue()*1000; } @Override public long liveTimeSpan() { return element.getTimeToLiveSeconds().intValue()*1000; } @Override public long size() { return element.getValue().length; } @Override public String getKey() { return (String) element.getKey(); } @Override public Object getValue() { try{ ByteArrayInputStream bais = new ByteArrayInputStream(element.getValue()); if("application/x-java-serialized-object".equals(element.getMimeType())){ ObjectInputStream ois=new ObjectInputStream(bais); return ois.readObject(); } // other return Util.toString(bais); } catch(Throwable t){ return null; } } public void setElement(Element element) { this.element=element; } @Override public String toString() { return CacheUtil.toString(this); } @Override public Struct getCustomInfo() { Struct info=CacheUtil.getInfo(this); // TODO info.setEL("version", new Double(element.getVersion())); return info; } }