]> WPIA git - gigi.git/blob - src/org/cacert/gigi/dbObjects/ObjectCache.java
e06f84f84a57fd0fde3bafe5d8066b9d6efc08d0
[gigi.git] / src / org / cacert / gigi / dbObjects / ObjectCache.java
1 package org.cacert.gigi.dbObjects;
2
3 import java.lang.ref.WeakReference;
4 import java.util.HashMap;
5 import java.util.HashSet;
6
7 public class ObjectCache<T extends IdCachable> {
8
9     HashMap<Integer, WeakReference<T>> hashmap = new HashMap<>();
10
11     private static HashSet<ObjectCache<?>> caches = new HashSet<>();
12
13     protected ObjectCache() {
14         caches.add(this);
15     }
16
17     public void put(T c) {
18         hashmap.put(c.getId(), new WeakReference<T>(c));
19     }
20
21     public T get(int id) {
22         WeakReference<T> res = hashmap.get(id);
23         if (res != null) {
24             return res.get();
25         }
26         return null;
27     }
28
29     public static void clearAllCashes() {
30         for (ObjectCache<?> objectCache : caches) {
31             objectCache.hashmap.clear();
32         }
33     }
34 }