001    package railo.runtime.cache.ram;
002    
003    import java.util.Date;
004    
005    import railo.commons.io.cache.CacheEntry;
006    import railo.runtime.cache.CacheUtil;
007    import railo.runtime.type.Struct;
008    
009    public class RamCacheEntry implements CacheEntry {
010    
011            private String key;
012            private Object value;
013            private long idleTime;
014            private long until;
015            private long created;
016            private long modifed;
017            private long accessed;
018            private int hitCount;
019    
020            public RamCacheEntry(String key, Object value, long idleTime, long until) {
021                    this.key=key;
022                    this.value=value;
023                    this.idleTime=idleTime;
024                    this.until=until;
025                    created=modifed=accessed=System.currentTimeMillis();
026                    hitCount=1;
027            }
028    
029            @Override
030            public Date created() {
031                    return new Date(created);
032            }
033    
034            @Override
035            public Struct getCustomInfo() {
036                    return CacheUtil.getInfo(this);
037            }
038    
039            @Override
040            public String getKey() {
041                    return key;
042            }
043    
044            @Override
045            public Object getValue() {
046                    return value;
047            }
048    
049            @Override
050            public int hitCount() {
051                    return hitCount;
052            }
053    
054            @Override
055            public long idleTimeSpan() {
056                    return idleTime;
057            }
058    
059            @Override
060            public Date lastHit() {
061                    return new Date(accessed);
062            }
063    
064            @Override
065            public Date lastModified() {
066                    return new Date(modifed);
067            }
068    
069            @Override
070            public long liveTimeSpan() {
071                    return until;
072            }
073    
074            public long size() {
075                    // TODO Auto-generated method stub
076                    return 0;
077            }
078    
079            public void update(Object value) {
080                    this.value=value;
081                    modifed=accessed=System.currentTimeMillis();
082                    hitCount++;
083            }
084    
085            public RamCacheEntry read() {
086                    accessed=System.currentTimeMillis();
087                    hitCount++;
088                    return this;
089            }
090    }