Ignore:
Timestamp:
2014-12-15T19:02:31+01:00 (10 years ago)
Author:
bastik
Message:

see #josm10849 - minor fixes for TMS cache handling

File:
1 edited

Legend:

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

    r30849 r30850  
    133133        File tileCacheDir;
    134134        File tileFile = null;
    135         Long fileAge = null;
     135        Long fileMtime = null;
     136        Long now = null; // current time in milliseconds (keep consistent value for the whole run)
    136137
    137138        public FileLoadJob(Tile tile) {
     
    153154                tile.loading = true;
    154155            }
     156            now = System.currentTimeMillis();
    155157            tileCacheDir = getSourceCacheDir(tile.getSource());
    156158           
    157159            if (loadTileFromFile(recheckAfter)) {
    158                 log.log(Level.FINEST, "TMS - found in tile cache: {0}", tile);
     160                log.log(Level.FINE, "TMS - found in tile cache: {0}", tile);
    159161                tile.setLoaded(true);
    160162                listener.tileLoadingFinished(tile, true);
     
    174176                            tile.error = false;
    175177                            listener.tileLoadingFinished(tile, true);
    176                             log.log(Level.FINEST, "TMS - found stale tile in cache: {0}", tile);
     178                            log.log(Level.FINE, "TMS - found stale tile in cache: {0}", tile);
    177179                        } else {
    178180                            // failed completely
     
    193195            try {
    194196                URLConnection urlConn = loadTileFromOsm(tile);
    195                 if (fileAge != null) {
     197                if (fileMtime != null && now - fileMtime <= maxCacheFileAge) {
    196198                    switch (tile.getSource().getTileUpdate()) {
    197199                    case IfModifiedSince:
    198                         urlConn.setIfModifiedSince(fileAge);
     200                        urlConn.setIfModifiedSince(fileMtime);
    199201                        break;
    200202                    case LastModified:
    201                         if (!isOsmTileNewer(fileAge)) {
    202                             log.log(Level.FINEST, "TMS - LastModified test: local version is up to date: {0}", tile);
    203                             tileFile.setLastModified(System.currentTimeMillis());
     203                        if (!isOsmTileNewer(fileMtime)) {
     204                            log.log(Level.FINE, "TMS - LastModified test: local version is up to date: {0}", tile);
     205                            tileFile.setLastModified(now);
    204206                            return true;
    205207                        }
     
    216218                        case ETag:
    217219                            if (hasOsmTileETag(fileETag)) {
    218                                 log.log(Level.FINEST, "TMS - ETag test: local version is up to date: {0}", tile);
    219                                 tileFile.setLastModified(System.currentTimeMillis());
     220                                log.log(Level.FINE, "TMS - ETag test: local version is up to date: {0}", tile);
     221                                tileFile.setLastModified(now);
    220222                                return true;
    221223                            }
     
    229231                    switch (tile.getSource().getTileUpdate()) {
    230232                    case IfModifiedSince:
    231                         log.log(Level.FINEST, "TMS - IfModifiedSince test: local version is up to date: {0}", tile);
     233                        log.log(Level.FINE, "TMS - IfModifiedSince test: local version is up to date: {0}", tile);
    232234                        break;
    233235                    case IfNoneMatch:
    234                         log.log(Level.FINEST, "TMS - IfNoneMatch test: local version is up to date: {0}", tile);
     236                        log.log(Level.FINE, "TMS - IfNoneMatch test: local version is up to date: {0}", tile);
    235237                        break;
    236238                    }
    237239                    if (loadTileFromFile(maxCacheFileAge)) {
    238                         tileFile.setLastModified(System.currentTimeMillis());
     240                        tileFile.setLastModified(now);
    239241                        return true;
    240242                    }
     
    246248                if ("no-tile".equals(tile.getValue("tile-info")))
    247249                {
    248                     log.log(Level.FINEST, "TMS - No tile: tile-info=no-tile: {0}", tile);
     250                    log.log(Level.FINE, "TMS - No tile: tile-info=no-tile: {0}", tile);
    249251                    tile.setError("No tile at this zoom level");
    250252                    return true;
     
    259261                            tile.loadImage(new ByteArrayInputStream(buffer));
    260262                            saveTileToFile(buffer);
    261                             log.log(Level.FINEST, "TMS - downloaded tile from server: {0}", tile.getUrl());
     263                            log.log(Level.FINE, "TMS - downloaded tile from server: {0}", tile.getUrl());
    262264                            return true;
    263265                        }
     
    285287                loadTagsFromFile();
    286288
    287                 fileAge = tileFile.lastModified();
    288                 if (System.currentTimeMillis() - fileAge > maxAge)
     289                fileMtime = tileFile.lastModified();
     290                if (now - fileMtime > maxAge)
    289291                    return false;
    290292
     
    308310                tileFile.delete();
    309311                tileFile = null;
    310                 fileAge = null;
     312                fileMtime = null;
    311313            }
    312314            return false;
     
    361363            // System.out.println("Tile age: " + new
    362364            // Date(urlConn.getLastModified()) + " / "
    363             // + new Date(fileAge));
     365            // + new Date(fileMtime));
    364366            long lastModified = urlConn.getLastModified();
    365367            if (lastModified == 0)
     
    377379            // System.out.println("Tile age: " + new
    378380            // Date(urlConn.getLastModified()) + " / "
    379             // + new Date(fileAge));
     381            // + new Date(fileMtime));
    380382            String osmETag = urlConn.getHeaderField("ETag");
    381383            if (osmETag == null)
     
    401403                f.write(rawData);
    402404            } catch (Exception e) {
    403                 System.err.println("Failed to save tile content: " + e.getLocalizedMessage());
     405                log.log(Level.SEVERE, "Failed to save tile content: {0}", e.getLocalizedMessage());
    404406            }
    405407        }
Note: See TracChangeset for help on using the changeset viewer.