* make sure to gracefully ignore all cache errors

This commit is contained in:
Reinhard Pointner 2012-07-11 20:17:58 +00:00
parent fa6909ddfe
commit 30f05c1f9c
1 changed files with 24 additions and 14 deletions

View File

@ -5,6 +5,8 @@ package net.sourceforge.filebot;
import java.awt.Image; import java.awt.Image;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.swing.Icon; import javax.swing.Icon;
@ -19,12 +21,12 @@ public final class ResourceManager {
private static final Cache cache = CacheManager.getInstance().getCache("resource"); private static final Cache cache = CacheManager.getInstance().getCache("resource");
public static Icon getIcon(String name) { public static Icon getIcon(String name) {
return getIcon(name, null); return getIcon(name, null);
} }
public static Icon getIcon(String name, String def) { public static Icon getIcon(String name, String def) {
Icon icon = probeCache(name, Icon.class); Icon icon = probeCache(name, Icon.class);
@ -39,12 +41,12 @@ public final class ResourceManager {
return icon; return icon;
} }
public static Icon getFlagIcon(String languageCode) { public static Icon getFlagIcon(String languageCode) {
return getIcon(String.format("flags/%s", languageCode)); return getIcon(String.format("flags/%s", languageCode));
} }
public static Image getImage(String name) { public static Image getImage(String name) {
try { try {
return ImageIO.read(getImageResource(name)); return ImageIO.read(getImageResource(name));
@ -53,7 +55,7 @@ public final class ResourceManager {
} }
} }
/** /**
* Get the URL of an image resource in this jar. Image must be located in <code>resources/</code> and the file type * Get the URL of an image resource in this jar. Image must be located in <code>resources/</code> and the file type
* is assumed to be png. * is assumed to be png.
@ -65,7 +67,7 @@ public final class ResourceManager {
return ResourceManager.class.getResource("resources/" + name + ".png"); return ResourceManager.class.getResource("resources/" + name + ".png");
} }
private static URL getImageResource(String name, String def) { private static URL getImageResource(String name, String def) {
URL resource = getImageResource(name); URL resource = getImageResource(name);
@ -75,25 +77,33 @@ public final class ResourceManager {
return resource; return resource;
} }
private static <T> T probeCache(String name, Class<T> type) { private static <T> T probeCache(String name, Class<T> type) {
Element entry = cache.get(type.getName() + ":" + name); try {
Element entry = cache.get(type.getName() + ":" + name);
if (entry != null) {
return type.cast(entry.getObjectValue()); if (entry != null) {
return type.cast(entry.getObjectValue());
}
} catch (Exception e) {
Logger.getLogger(ResourceManager.class.getName()).log(Level.WARNING, e.getMessage());
} }
return null; return null;
} }
private static <T> T populateCache(String name, Class<? super T> type, T value) { private static <T> T populateCache(String name, Class<? super T> type, T value) {
cache.put(new Element(type.getName() + ":" + name, value)); try {
cache.put(new Element(type.getName() + ":" + name, value));
} catch (Exception e) {
Logger.getLogger(ResourceManager.class.getName()).log(Level.WARNING, e.getMessage());
}
return value; return value;
} }
/** /**
* Dummy constructor to prevent instantiation. * Dummy constructor to prevent instantiation.
*/ */