Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java	(revision 29730)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java	(revision 29731)
@@ -37,4 +37,5 @@
     }
 
+    @Override
     public void addTile(Tile tile) {
         CacheEntry entry = createCacheEntry(tile);
@@ -45,4 +46,5 @@
     }
 
+    @Override
     public Tile getTile(TileSource source, int x, int y, int z) {
         CacheEntry entry = hashtable.get(Tile.getTileKey(source, x, y, z));
@@ -90,4 +92,5 @@
     }
 
+    @Override
     public int getTileCount() {
         return hashtable.size();
@@ -166,4 +169,5 @@
          */
         public synchronized void addFirst(CacheEntry element) {
+            if (element == null) return;
             if (elementCount == 0) {
                 firstElement = element;
@@ -186,4 +190,5 @@
          */
         public synchronized void removeEntry(CacheEntry element) {
+            if (element == null) return;
             if (element.next != null) {
                 element.next.prev = element.prev;
Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java	(revision 29730)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java	(revision 29731)
@@ -26,4 +26,6 @@
 import java.util.logging.Logger;
 
+import org.openstreetmap.gui.jmapviewer.interfaces.CachedTileLoader;
+import org.openstreetmap.gui.jmapviewer.interfaces.TileClearController;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileJob;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
@@ -40,5 +42,5 @@
  * @author Stefan Zeller
  */
-public class OsmFileCacheTileLoader extends OsmTileLoader {
+public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileLoader {
 
     private static final Logger log = Logger.getLogger(OsmFileCacheTileLoader.class.getName());
@@ -140,8 +142,10 @@
         }
 
+        @Override
         public Tile getTile() {
             return tile;
         }
 
+        @Override
         public void run() {
             synchronized (tile) {
@@ -159,7 +163,9 @@
                 TileJob job = new TileJob() {
 
+                    @Override
                     public void run() {
                         loadOrUpdateTile();
                     }
+                    @Override
                     public Tile getTile() {
                         return tile;
@@ -486,22 +492,11 @@
         this.cacheDirBase = dir.getAbsolutePath();
     }
-    
-    public static interface TileClearController {
-
-        void initClearDir(File dir);
-
-        void initClearFiles(File[] files);
-
-        boolean cancel();
-
-        void fileDeleted(File file);
-
-        void clearFinished();
-    }
-    
+   
+    @Override
     public void clearCache(TileSource source) {
         clearCache(source, null);
     }
     
+    @Override
     public void clearCache(TileSource source, TileClearController controller) {
         File dir = getSourceCacheDir(source);
Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/CachedTileLoader.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/CachedTileLoader.java	(revision 29731)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/CachedTileLoader.java	(revision 29731)
@@ -0,0 +1,10 @@
+// License: GPL
+package org.openstreetmap.gui.jmapviewer.interfaces;
+
+/**
+ * Interface that allow cleaning the tile cache without specifying exact type of loader
+ */
+public interface CachedTileLoader {
+    public void clearCache(TileSource source);
+    public void clearCache(TileSource source, TileClearController controller);
+}
Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileClearController.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileClearController.java	(revision 29731)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileClearController.java	(revision 29731)
@@ -0,0 +1,16 @@
+package org.openstreetmap.gui.jmapviewer.interfaces;
+
+import java.io.File;
+    
+public interface TileClearController {
+
+    void initClearDir(File dir);
+
+    void initClearFiles(File[] files);
+
+    boolean cancel();
+
+    void fileDeleted(File file);
+
+    void clearFinished();
+}
