package lucee.runtime.cache.util; import lucee.print; import lucee.commons.io.cache.CacheEntry; import lucee.commons.io.cache.CacheEntryFilter; import lucee.commons.io.cache.CacheFilter; import lucee.runtime.cache.tag.query.QueryResultCacheItem; import lucee.runtime.type.Struct; import lucee.runtime.type.StructImpl; import lucee.runtime.type.util.ListUtil; public class QueryTagFilter implements CacheEntryFilter { private Struct sct=new StructImpl(); private String[] tags; public QueryTagFilter(String[] tags) { this.tags=tags; for(String tag:tags) { this.sct.put(tag, ""); } } @Override public boolean accept(CacheEntry ce) { Object val = ce.getValue(); if(val instanceof QueryResultCacheItem) { String[] _tags = ((QueryResultCacheItem)val).getTags(); if(_tags!=null) { for(String tag:_tags) { if(sct.containsKey(tag)) { return true; } } } } return false; } @Override public String toPattern() { return "tags:"+ListUtil.arrayToList(tags, ", "); } }