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.commons.io.cache.CacheEntry;
008    import railo.runtime.PageContext;
009    import railo.runtime.cache.util.WildCardFilter;
010    import railo.runtime.config.ConfigImpl;
011    import railo.runtime.exp.PageException;
012    import railo.runtime.ext.function.Function;
013    import railo.runtime.op.Caster;
014    import railo.runtime.type.KeyImpl;
015    import railo.runtime.type.Struct;
016    import railo.runtime.type.StructImpl;
017    
018    /**
019     * 
020     */
021    public final class CacheGetAll implements Function {
022            
023            private static final long serialVersionUID = 6395709569356486777L;
024    
025            public static Struct call(PageContext pc) throws PageException {
026                    return call(pc, null,null);
027            }
028            public static Struct call(PageContext pc,String filter) throws PageException {
029                    return call(pc, filter,null);
030            }
031            
032            public static Struct call(PageContext pc,String filter, String cacheName) throws PageException {
033                    try {
034                            Cache cache = Util.getCache(pc,cacheName,ConfigImpl.CACHE_DEFAULT_OBJECT);
035                            List<CacheEntry> entries = CacheGetAllIds.isFilter(filter)?cache.entries(new WildCardFilter(filter,true)):cache.entries();
036                            Iterator<CacheEntry> it=entries.iterator();
037                            Struct sct = new StructImpl();
038                            CacheEntry entry;
039                            while(it.hasNext()){
040                                    entry= it.next();
041                                    sct.setEL(KeyImpl.getInstance(entry.getKey()),entry.getValue());
042                            }
043                            return sct;
044                    } catch (Exception e) {
045                            throw Caster.toPageException(e);
046                    }
047            }
048    }