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 }