1 10 package org.mmbase.security.implementation.cloudcontext.builders; 11 12 import java.util.*; 13 14 import org.mmbase.module.core.MMBaseObserver; 15 import org.mmbase.module.core.MMBase; 16 import org.mmbase.util.logging.*; 17 18 29 class CacheInvalidator implements MMBaseObserver { 30 31 private static final Logger log = Logging.getLoggerInstance(CacheInvalidator.class); 32 33 private static CacheInvalidator instance = new CacheInvalidator(); 34 35 static CacheInvalidator getInstance() { 37 return instance; 38 } 39 40 private CacheInvalidator() { 41 } 42 43 private List securityCaches = new ArrayList(); 45 48 synchronized void addCache(Map c) { 49 securityCaches.add(c); 50 } 51 52 public boolean nodeRemoteChanged(String machine, String number, String builder, String ctype) { 54 return nodeChanged(machine, number, builder, ctype); 55 } 56 57 58 public boolean nodeLocalChanged(String machine, String number, String builder, String ctype) { 60 return nodeChanged(machine, number, builder, ctype); 61 } 62 63 66 synchronized protected boolean nodeChanged(String machine, String number, String builder, String ctype) { 67 if (((int) (System.currentTimeMillis() / 1000) - MMBase.startTime) > 300) { 68 log.service("A security object " + number + " (" + builder + ") has changed, invalidating all security caches"); 69 } else if (log.isDebugEnabled()) { 70 log.debug("A security object " + number + " (" + builder + ") has changed, invalidating all security caches"); 71 } 72 Iterator i = securityCaches.iterator(); 73 while (i.hasNext()) { 74 Map c = (Map) i.next(); 75 c.clear(); 76 } 77 return true; 78 } 79 80 } 81 | Popular Tags |