| 1 10 package org.mmbase.cache; 11 12 import java.util.*; 13 14 import org.mmbase.core.event.*; 15 import org.mmbase.module.core.*; 16 import org.mmbase.storage.search.SearchQuery; 17 import org.mmbase.storage.search.Step; 18 import org.mmbase.util.logging.Logger; 19 import org.mmbase.util.logging.Logging; 20 21 22 34 public class BasicReleaseStrategy extends ReleaseStrategy { 35 36 private static final Logger log = Logging.getLoggerInstance(BasicReleaseStrategy.class); 37 38 39 public BasicReleaseStrategy(){ 40 } 41 42 public String getName() { 43 return "Basic release strategy"; 44 } 45 46 47 50 public String getDescription() { 51 return "This strategy does exactly what the original cache release "+ 52 "implementation did. It checks if the step of the query that maches the "+ 53 "type of the changed node has 'nodes' set. if it does, and the changed "+ 54 "node is not one of them, the query should not be flushed from cache"; 55 } 56 57 60 protected final boolean doEvaluate(NodeEvent event, SearchQuery query, List cachedResult) { 61 MMBase mmb = MMBase.getMMBase(); 63 String eventTable = event.getBuilderName(); 64 MMObjectBuilder eventBuilder = mmb.getBuilder(eventTable); 65 Iterator i = query.getSteps().iterator(); 66 while (i.hasNext()) { 67 Step step = (Step) i.next(); 68 String table = step.getTableName(); 69 if (! (table.equals(eventTable) || 70 eventBuilder.isExtensionOf(mmb.getBuilder(table)))) continue; 71 Set nodes = step.getNodes(); 72 if (nodes == null || nodes.size() == 0 || nodes.contains(new Integer (event.getNodeNumber()))) { 73 return true; 74 } 75 } 76 return false; 77 } 78 79 protected boolean doEvaluate(RelationEvent event, SearchQuery query, List cachedResult) { 80 log.debug("basic strategy: flush: relation event"); 82 return true; 83 } 84 85 } 86 | Popular Tags |