From: Niki Roo Date: Mon, 6 Apr 2020 10:33:51 +0000 (+0200) Subject: Merge commit '3519cb5c518d569235beaedfc3071cba45ec848d' X-Git-Url: http://git.nikiroo.be/?p=nikiroo-utils.git;a=commitdiff_plain;h=0013f760d69fd7db2b298c3da5d89bc0b102eabf;hp=-c Merge commit '3519cb5c518d569235beaedfc3071cba45ec848d' --- 0013f760d69fd7db2b298c3da5d89bc0b102eabf diff --combined src/be/nikiroo/utils/CacheMemory.java index 232b632,de4fae3..de4fae3 --- a/src/be/nikiroo/utils/CacheMemory.java +++ b/src/be/nikiroo/utils/CacheMemory.java @@@ -1,5 -1,6 +1,6 @@@ package be.nikiroo.utils; + import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; @@@ -12,12 -13,13 +13,13 @@@ import java.util.Map * @author niki */ public class CacheMemory extends Cache { - private Map data = new HashMap(); + private Map data; /** * Create a new {@link CacheMemory}. */ public CacheMemory() { + data = new HashMap(); } @Override @@@ -44,7 -46,7 +46,7 @@@ @Override public InputStream load(String uniqueID, boolean allowTooOld, boolean stable) { if (check(uniqueID, allowTooOld, stable)) { - return load(uniqueID, allowTooOld, stable); + return load(getKey(uniqueID)); } return null; @@@ -53,7 -55,7 +55,7 @@@ @Override public InputStream load(URL url, boolean allowTooOld, boolean stable) { if (check(url, allowTooOld, stable)) { - return load(url, allowTooOld, stable); + return load(getKey(url)); } return null; @@@ -86,24 -88,37 +88,37 @@@ /** * Return a key mapping to the given unique ID. * - * @param uniqueID - * the unique ID + * @param uniqueID the unique ID * * @return the key */ private String getKey(String uniqueID) { - return "_/" + uniqueID; + return "UID:" + uniqueID; } /** * Return a key mapping to the given urm. * - * @param url - * thr url + * @param url the url * * @return the key */ private String getKey(URL url) { - return url.toString(); + return "URL:" + url.toString(); + } + + /** + * Load the given key. + * + * @param key the key to load + * @return the loaded data + */ + private InputStream load(String key) { + byte[] data = this.data.get(key); + if (data != null) { + return new ByteArrayInputStream(data); + } + + return null; } } diff --combined src/be/nikiroo/utils/IOUtils.java index e3837e1,3d252ea..3d252ea --- a/src/be/nikiroo/utils/IOUtils.java +++ b/src/be/nikiroo/utils/IOUtils.java @@@ -370,13 -370,30 +370,30 @@@ public class IOUtils return errorAcc; } + /** + * Open the resource next to the given {@link Class}. + * + * @param location + * the location where to look for the resource + * @param name + * the resource name (only the filename, no path) + * + * @return the opened resource if found, NULL if not + */ + public static InputStream openResource( + @SuppressWarnings("rawtypes") Class location, String name) { + String loc = location.getName().replace(".", "/") + .replaceAll("/[^/]*$", "/"); + return openResource(loc + name); + } + /** * Open the given /-separated resource (from the binary root). * * @param name - * the resource name + * the resource name (the full path, with "/" as separator) * - * @return the opened resource if found, NLL if not + * @return the opened resource if found, NULL if not */ public static InputStream openResource(String name) { ClassLoader loader = IOUtils.class.getClassLoader();