package railo.runtime.cache.legacy; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.http.HttpServletRequest; import org.apache.oro.text.regex.MalformedPatternException; import railo.commons.io.IOUtil; import railo.commons.io.cache.Cache; import railo.commons.lang.ExceptionUtil; import railo.commons.lang.StringUtil; import railo.runtime.PageContext; import railo.runtime.cache.util.CacheKeyFilterAll; import railo.runtime.cache.util.WildCardFilter; import railo.runtime.exp.PageException; import railo.runtime.op.Caster; import railo.runtime.type.dt.TimeSpan; public class CacheItemCache extends CacheItem { private Cache cache; private TimeSpan timespan; private String lcFileName; public CacheItemCache(PageContext pc, HttpServletRequest req, String id, String key, boolean useId, Cache cache, TimeSpan timespan) { super(pc, req, id, key, useId); this.cache=cache; this.timespan=timespan; lcFileName=fileName; } @Override public boolean isValid() { try { return cache.getValue(lcFileName)!=null; } catch (IOException e) { return false; } } @Override public boolean isValid(TimeSpan timespan) { return isValid(); } @Override public void writeTo(OutputStream os,String charset) throws IOException { byte[] barr = getValue().getBytes(StringUtil.isEmpty(charset,true)?"UTF-8":charset); IOUtil.copy(new ByteArrayInputStream(barr),os,true,false); } public String getValue() throws IOException { try { return Caster.toString(cache.getValue(lcFileName)); } catch (PageException e) { throw ExceptionUtil.toIOException(e); } } @Override public void store(String value) throws IOException { cache.put(lcFileName, value, null,valueOf(timespan)); } @Override public void store(byte[] barr, boolean append) throws IOException { String value=(append)?getValue():""; value+=IOUtil.toString(barr, "UTF-8"); store(value); } public static void _flushAll(PageContext pc, Cache cache) throws IOException { cache.remove(CacheKeyFilterAll.getInstance()); } public static void _flush(PageContext pc, Cache cache, String expireurl) throws MalformedPatternException, IOException { cache.remove(new WildCardFilter(expireurl,true)); } private static Long valueOf(TimeSpan timeSpan) { if(timeSpan==null) return null; return Long.valueOf(timeSpan.getMillis()); } }