Index: trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java	(revision 8603)
+++ trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java	(revision 8604)
@@ -199,4 +199,7 @@
      */
     protected boolean isObjectLoadable() {
+        if (cacheData == null) {
+            return false;
+        }
         byte[] content = cacheData.getContent();
         return content != null && content.length > 0;
@@ -338,5 +341,10 @@
 
                 attributes.setResponseCode(urlConn.getResponseCode());
-                byte[] raw = Utils.readBytesFromStream(urlConn.getInputStream());
+                byte[] raw;
+                if (urlConn.getResponseCode() == 200) {
+                    raw = Utils.readBytesFromStream(urlConn.getInputStream());
+                } else {
+                    raw = new byte[]{};
+                }
 
                 if (isResponseLoadable(urlConn.getHeaderFields(), urlConn.getResponseCode(), raw)) {
@@ -440,6 +448,8 @@
         urlConn.setReadTimeout(readTimeout); // 30 seconds read timeout
         urlConn.setConnectTimeout(connectTimeout);
-        for (Map.Entry<String, String> e: headers.entrySet()) {
-            urlConn.setRequestProperty(e.getKey(), e.getValue());
+        if (headers != null) {
+            for (Map.Entry<String, String> e: headers.entrySet()) {
+                urlConn.setRequestProperty(e.getKey(), e.getValue());
+            }
         }
         if (force) {
Index: trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 8603)
+++ trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 8604)
@@ -142,5 +142,5 @@
         }
 
-        private static final String[] getLayerNames(Collection<Layer> layers) {
+        private static String[] getLayerNames(Collection<Layer> layers) {
             Collection<String> ret = new ArrayList<>();
             for (Layer layer: layers) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 8603)
+++ trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 8604)
@@ -186,5 +186,4 @@
         }
 
-
         if (tileLoader == null)
             tileLoader = new OsmTileLoader(this);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java	(revision 8603)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java	(revision 8604)
@@ -55,5 +55,5 @@
 public class CacheContentsPanel extends JPanel {
 
-    private static class ButtonColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener {
+    private static final class ButtonColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener {
         private final Action action;
         private final JButton renderButton;
