001 package railo.runtime.functions.cache; 002 003 import java.util.Iterator; 004 import java.util.List; 005 006 import railo.commons.io.cache.Cache; 007 import railo.runtime.PageContext; 008 import railo.runtime.cache.util.WildCardFilter; 009 import railo.runtime.config.ConfigImpl; 010 import railo.runtime.exp.PageException; 011 import railo.runtime.ext.function.Function; 012 import railo.runtime.op.Caster; 013 import railo.runtime.type.Array; 014 import railo.runtime.type.ArrayImpl; 015 016 /** 017 * 018 */ 019 public final class CacheGetAllIds implements Function { 020 021 private static final long serialVersionUID = 4831944874663718056L; 022 023 024 public static Array call(PageContext pc) throws PageException { 025 return call(pc, null,null); 026 } 027 028 029 public static Array call(PageContext pc, String filter) throws PageException { 030 return call(pc, filter, null); 031 } 032 033 public static Array call(PageContext pc, String filter, String cacheName) throws PageException { 034 try { 035 Cache cache = Util.getCache(pc.getConfig(),cacheName,ConfigImpl.CACHE_DEFAULT_OBJECT); 036 List keys = isFilter(filter)?cache.keys(new WildCardFilter(filter,true)):cache.keys(); 037 Iterator it = keys.iterator(); 038 Array arr = new ArrayImpl(); 039 while(it.hasNext()){ 040 arr.append(it.next()); 041 } 042 return arr; 043 } catch (Exception e) { 044 throw Caster.toPageException(e); 045 } 046 } 047 048 049 protected static boolean isFilter(String filter) { 050 return filter!=null && filter.length()>0 && !filter.equals("*"); 051 } 052 }