001 package railo.runtime.cache.eh.remote.soap; 002 003 import java.io.ByteArrayInputStream; 004 import java.io.ObjectInputStream; 005 import java.util.Date; 006 007 import railo.commons.io.cache.CacheEntry; 008 import railo.loader.util.Util; 009 import railo.runtime.cache.CacheUtil; 010 import railo.runtime.type.Struct; 011 012 public class SoapCacheEntry implements CacheEntry { 013 014 private Element element; 015 016 public SoapCacheEntry(Element element) { 017 this.element=element; 018 019 } 020 021 022 @Override 023 public Date created() { 024 return new Date(element.getExpirationDate().longValue()-element.getTimeToLiveSeconds().longValue()); 025 } 026 027 @Override 028 public Date lastHit() { 029 return new Date(0); 030 // TODO return new Date(element.getLastAccessTime()); 031 } 032 033 @Override 034 public Date lastModified() { 035 return new Date(0); 036 // TODO long value = element.getLastUpdateTime(); 037 // TODO if(value==0)return created(); 038 // TODO return new Date(value); 039 } 040 041 @Override 042 public int hitCount() { 043 return 0; 044 // TODO return (int)element.getHitCount(); 045 } 046 047 @Override 048 public long idleTimeSpan() { 049 return element.getTimeToIdleSeconds().intValue()*1000; 050 } 051 052 @Override 053 public long liveTimeSpan() { 054 return element.getTimeToLiveSeconds().intValue()*1000; 055 } 056 057 @Override 058 public long size() { 059 return element.getValue().length; 060 } 061 062 @Override 063 public String getKey() { 064 return (String) element.getKey(); 065 } 066 067 @Override 068 public Object getValue() { 069 try{ 070 ByteArrayInputStream bais = new ByteArrayInputStream(element.getValue()); 071 if("application/x-java-serialized-object".equals(element.getMimeType())){ 072 ObjectInputStream ois=new ObjectInputStream(bais); 073 return ois.readObject(); 074 } 075 // other 076 return Util.toString(bais); 077 } 078 catch(Throwable t){ 079 return null; 080 } 081 } 082 083 public void setElement(Element element) { 084 this.element=element; 085 } 086 087 088 @Override 089 public String toString() { 090 return CacheUtil.toString(this); 091 } 092 093 @Override 094 public Struct getCustomInfo() { 095 Struct info=CacheUtil.getInfo(this); 096 // TODO info.setEL("version", new Double(element.getVersion())); 097 return info; 098 } 099 100 }