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,cacheName,ConfigImpl.CACHE_DEFAULT_OBJECT); 036 037 List<String> keys = isFilter(filter)?cache.keys(new WildCardFilter(filter,true)):cache.keys(); 038 Iterator<String> it = keys.iterator(); 039 Array arr = new ArrayImpl(); 040 while(it.hasNext()){ 041 arr.append(it.next()); 042 } 043 return arr; 044 } catch (Exception e) { 045 throw Caster.toPageException(e); 046 } 047 } 048 049 050 protected static boolean isFilter(String filter) { 051 return filter!=null && filter.length()>0 && !filter.equals("*"); 052 } 053 }