diff --git a/src/main/java/schule/ngb/zm/util/Cache.java b/src/main/java/schule/ngb/zm/util/Cache.java index d17b3f7..3d601c4 100644 --- a/src/main/java/schule/ngb/zm/util/Cache.java +++ b/src/main/java/schule/ngb/zm/util/Cache.java @@ -20,6 +20,12 @@ import java.util.stream.Collectors; * Collector gelöscht worden sein kann. *

* Als interne Map wird einen {@link ConcurrentHashMap} verwendet. + *

+ * Ein passender Cache wird mittels der Fabrikmethoden {@link #newSoftCache()} + * und {@link #newWeakCache()} erstellt. + *


+ * Cache<String, Image> imageCache = Cache.newSoftCache();
+ * 
* * @param Der Typ der Schlüssel. * @param Der Typ der Objekte. @@ -70,10 +76,6 @@ public final class Cache implements Map { return cache.isEmpty(); } - private boolean containsRef( Object key ) { - return cache.containsKey(key); - } - @Override public boolean containsKey( Object key ) { return cache.containsKey(key) && cache.get(key).get() != null; @@ -93,17 +95,33 @@ public final class Cache implements Map { return null; } - public void nocache( K key ) { + /** + * Deaktiviert das Caching für den angegebenen Schlüssel. + *

+ * Folgende Aufrufe von {@link #put(Object, Object)} mit demselben Schlüssel + * haben keinen Effekt. Um das Caching wieder zu aktivieren, muss + * {@link #remove(Object)} mit dem Schlüssel aufgerufen werden, + * + * @param key Der Schlüssel. + */ + public void disableCache( K key ) { cache.put(key, NOCACHE); } - public boolean isNocache( K key ) { + /** + * Prüft, ob der für den angegebenen Schlüssel zuvor + * {@link #disableCache(Object)} aufgerufen wurde. + * + * @param key Der Schlüssel. + * @return {@code true}, wenn der Schlüssel nicht gespeichert wird. + */ + public boolean isCachingDisabled( K key ) { return cache.get(key) == NOCACHE; } @Override public V put( K key, V value ) { - if( !isNocache(key) ) { + if( !isCachingDisabled(key) ) { V prev = remove(key); cache.put(key, refSupplier.apply(value)); return prev; diff --git a/src/main/java/schule/ngb/zm/util/io/ImageLoader.java b/src/main/java/schule/ngb/zm/util/io/ImageLoader.java index 9605440..1a931c2 100644 --- a/src/main/java/schule/ngb/zm/util/io/ImageLoader.java +++ b/src/main/java/schule/ngb/zm/util/io/ImageLoader.java @@ -16,7 +16,6 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.lang.ref.SoftReference; -import java.util.Map; /** * Eine Helferklasse mit Klassenmethoden, um Bilder zu laden. @@ -190,7 +189,7 @@ public final class ImageLoader { * @param name Die Quelle des Bildes. */ public static void preventCache( final String name ) { - imageCache.nocache(name); + imageCache.disableCache(name); } /**