Ticket #11193: expires-version2.patch

File expires-version2.patch, 2.4 KB (added by wiktorn, 10 years ago)

Patch version 2

  • src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java

     
    6666        } catch (SecurityException e) {
    6767            log.log(Level.WARNING,
    6868                    "Failed to access system property ''java.io.tmpdir'' for security reasons. Exception was: "
    69                     + e.toString());
     69                            + e.toString());
    7070            throw e; // rethrow
    7171        }
    7272        try {
     
    248248                    }
    249249                }
    250250
     251                // set file modification date to Expires / max-age date but subtract maxCacheFileAge - so
     252                // Expires/cache-control headers will be honored
     253                Long lng = urlConn.getExpiration();
     254                if (lng == null) {
     255                    String str = urlConn.getHeaderField("Cache-Control");
     256                    if (str != null) {
     257                        for (String token: str.split(",")) {
     258                            if (token.startsWith("max-age=")) {
     259                                lng = Long.parseLong(token.substring(8))+System.currentTimeMillis();
     260                            }
     261                        }
     262                    }
     263                }
     264                if (lng != null) {
     265                    tileFile.setLastModified(lng - maxCacheFileAge);
     266                }
     267
     268
    251269                loadTileMetadata(tile, urlConn);
    252270                saveTagsToFile();
    253271
     
    295313                fileMtime = tileFile.lastModified();
    296314                if (now - fileMtime > maxAge)
    297315                    return false;
    298 
     316                   
    299317                if ("no-tile".equals(tile.getValue("tile-info"))) {
    300318                    tile.setError("No tile at this zoom level");
    301319                    if (tileFile.exists()) {
     
    405423            File file = getTileFile();
    406424            file.getParentFile().mkdirs();
    407425            try (
    408                 FileOutputStream f = new FileOutputStream(file)
    409             ) {
     426                    FileOutputStream f = new FileOutputStream(file)
     427                    ) {
    410428                f.write(rawData);
    411429            } catch (Exception e) {
    412430                log.log(Level.SEVERE, "Failed to save tile content: {0}", e.getLocalizedMessage());