// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.data.cache; import java.io.IOException; import java.net.URL; /** * * @author Wiktor Niesiobędzki * * @param <K> cache key type */ public interface ICachedLoaderJob<K> extends Runnable { /** * returns cache entry key * * @return cache key for tile */ K getCacheKey(); /** * method to get download URL for Job * @return URL that should be fetched * @throws IOException when could not determine the URL of the tile * */ URL getUrl() throws IOException; /** * fetches object from cache, or returns null when object is not found * * @return filled tile with data or null when no cache entry found */ CacheEntry get(); /** * Submit job for background fetch, and listener will be fed with value object * * @param listener cache loader listener * @param force true if the load should skip all the caches (local & remote) * @throws IOException on failure from getUrl() call */ void submit(ICachedLoaderListener listener, boolean force) throws IOException; }