Ignore:
Timestamp:
2013-06-29T09:32:08+02:00 (11 years ago)
Author:
akks
Message:

[JMapViewer]: fix rare NPE while cleaning cache, extracted cleaning-related interfaces from OsmFileCacheTileLoader

Location:
applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java

    r28505 r29731  
    3737    }
    3838
     39    @Override
    3940    public void addTile(Tile tile) {
    4041        CacheEntry entry = createCacheEntry(tile);
     
    4546    }
    4647
     48    @Override
    4749    public Tile getTile(TileSource source, int x, int y, int z) {
    4850        CacheEntry entry = hashtable.get(Tile.getTileKey(source, x, y, z));
     
    9092    }
    9193
     94    @Override
    9295    public int getTileCount() {
    9396        return hashtable.size();
     
    166169         */
    167170        public synchronized void addFirst(CacheEntry element) {
     171            if (element == null) return;
    168172            if (elementCount == 0) {
    169173                firstElement = element;
     
    186190         */
    187191        public synchronized void removeEntry(CacheEntry element) {
     192            if (element == null) return;
    188193            if (element.next != null) {
    189194                element.next.prev = element.prev;
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java

    r29528 r29731  
    2626import java.util.logging.Logger;
    2727
     28import org.openstreetmap.gui.jmapviewer.interfaces.CachedTileLoader;
     29import org.openstreetmap.gui.jmapviewer.interfaces.TileClearController;
    2830import org.openstreetmap.gui.jmapviewer.interfaces.TileJob;
    2931import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
     
    4042 * @author Stefan Zeller
    4143 */
    42 public class OsmFileCacheTileLoader extends OsmTileLoader {
     44public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileLoader {
    4345
    4446    private static final Logger log = Logger.getLogger(OsmFileCacheTileLoader.class.getName());
     
    140142        }
    141143
     144        @Override
    142145        public Tile getTile() {
    143146            return tile;
    144147        }
    145148
     149        @Override
    146150        public void run() {
    147151            synchronized (tile) {
     
    159163                TileJob job = new TileJob() {
    160164
     165                    @Override
    161166                    public void run() {
    162167                        loadOrUpdateTile();
    163168                    }
     169                    @Override
    164170                    public Tile getTile() {
    165171                        return tile;
     
    486492        this.cacheDirBase = dir.getAbsolutePath();
    487493    }
    488    
    489     public static interface TileClearController {
    490 
    491         void initClearDir(File dir);
    492 
    493         void initClearFiles(File[] files);
    494 
    495         boolean cancel();
    496 
    497         void fileDeleted(File file);
    498 
    499         void clearFinished();
    500     }
    501    
     494   
     495    @Override
    502496    public void clearCache(TileSource source) {
    503497        clearCache(source, null);
    504498    }
    505499   
     500    @Override
    506501    public void clearCache(TileSource source, TileClearController controller) {
    507502        File dir = getSourceCacheDir(source);
Note: See TracChangeset for help on using the changeset viewer.