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    }