]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/dbObjects/ObjectCache.java
UPD: minor consistency cleanups
[gigi.git] / src / org / cacert / gigi / dbObjects / ObjectCache.java
index 5f44542200458467c535b959266dde527e4a098b..0d9fc14ba51b4f2d0e4005a3977367bdd3c66ff5 100644 (file)
@@ -2,13 +2,21 @@ package org.cacert.gigi.dbObjects;
 
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
+import java.util.HashSet;
 
 public class ObjectCache<T extends IdCachable> {
 
-    HashMap<Integer, WeakReference<T>> hashmap = new HashMap<>();
+    private final HashMap<Integer, WeakReference<T>> hashmap = new HashMap<>();
 
-    public void put(T c) {
+    private static final HashSet<ObjectCache<? extends IdCachable>> caches = new HashSet<>();
+
+    protected ObjectCache() {
+        caches.add(this);
+    }
+
+    public T put(T c) {
         hashmap.put(c.getId(), new WeakReference<T>(c));
+        return c;
     }
 
     public T get(int id) {
@@ -18,4 +26,14 @@ public class ObjectCache<T extends IdCachable> {
         }
         return null;
     }
+
+    public static void clearAllCaches() {
+        for (ObjectCache<? extends IdCachable> objectCache : caches) {
+            objectCache.hashmap.clear();
+        }
+    }
+
+    public void remove(T toRm) {
+        hashmap.remove(toRm);
+    }
 }