1 10 package org.mmbase.cache; 11 12 import java.io.Serializable ; 13 import java.util.Map ; 14 import java.util.HashMap ; 15 16 25 abstract public class CachePolicy implements Serializable { 26 27 static private Map policies = new HashMap (); 29 30 34 static public CachePolicy NEVER = new CachePolicy("never") { 35 public boolean checkPolicy(Object o) { 36 return false; 37 } 38 39 public String getDescription() { 40 return "CACHE NEVER"; 41 } 42 }; 43 44 48 static public CachePolicy ALWAYS = new CachePolicy("always") { 49 public boolean checkPolicy(Object o) { 50 return true; 51 } 52 53 public String getDescription() { 54 return "CACHE ALWAYS"; 55 } 56 }; 57 58 64 static public CachePolicy getPolicy(Object policyKey) { 65 CachePolicy policy = (CachePolicy) policies.get(policyKey); 66 if (policy == null) { 67 throw new IllegalArgumentException ("There is no cache policy known with key '"+policyKey+"'"); 68 } 69 return policy; 70 } 71 72 73 static public void putPolicy(Object policyKey, CachePolicy policy) { 74 policies.put(policyKey, policy); 75 } 76 77 80 protected CachePolicy(Object policyKey) { 81 CachePolicy.putPolicy(policyKey, this); 82 } 83 84 87 protected CachePolicy() { 88 } 89 90 95 abstract public boolean checkPolicy(Object o); 96 97 100 public String getDescription() { 101 return getClass().getName(); 102 } 103 104 } 105 | Popular Tags |