001    package railo.runtime.cache.eh;
002    
003    import java.util.Date;
004    
005    import net.sf.ehcache.Element;
006    import railo.commons.io.cache.CacheEntry;
007    import railo.runtime.cache.CacheUtil;
008    import railo.runtime.type.Struct;
009    
010    public class EHCacheEntry implements CacheEntry {
011    
012            private Element element;
013    
014            public EHCacheEntry(Element element) {
015                    this.element=element;
016            }
017    
018            @Override
019            public Date created() {
020                    return new Date(element.getCreationTime());
021            }
022    
023            @Override
024            public Date lastHit() {
025                    return new Date(element.getLastAccessTime());
026            }
027    
028            @Override
029            public Date lastModified() {
030                    long value = element.getLastUpdateTime();
031                    if(value==0)return created();
032                    return new Date(value); 
033            }
034    
035            @Override
036            public int hitCount() {
037                    return (int)element.getHitCount();
038            }
039    
040            @Override
041            public long idleTimeSpan() {
042                    return element.getTimeToIdle()*1000;
043            }
044    
045            @Override
046            public long liveTimeSpan() { 
047                    return element.getTimeToLive()*1000;
048            }
049    
050            @Override
051            public long size() {
052                    return element.getSerializedSize();
053            }
054    
055            @Override
056            public String getKey() {
057                    return (String) element.getKey();
058            }
059    
060            @Override
061            public Object getValue() {
062                    return element.getObjectValue();
063            }
064    
065            public void setElement(Element element) {
066                    this.element=element;
067            }
068            
069    
070            @Override
071            public String toString() {
072                    return CacheUtil.toString(this);
073            }
074    
075            @Override
076            public Struct getCustomInfo() {
077                    Struct info=CacheUtil.getInfo(this);
078                    info.setEL("version", new Double(element.getVersion()));
079                    return info;
080            }
081    }