Ignore:
Timestamp:
2011-08-10T16:50:46+02:00 (13 years ago)
Author:
stoecker
Message:

support reload in case of errors

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

Legend:

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

    r24989 r26508  
    1515import java.io.OutputStreamWriter;
    1616import java.io.PrintWriter;
     17import java.lang.Thread;
    1718import java.net.HttpURLConnection;
    1819import java.net.URL;
     
    2021import java.nio.charset.Charset;
    2122import java.util.Map.Entry;
     23import java.util.Random;
    2224import java.util.logging.Level;
    2325import java.util.logging.Logger;
     
    132134            synchronized (cache) {
    133135                tile = cache.getTile(source, tilex, tiley, zoom);
    134                 if (tile == null || tile.isLoaded() || tile.loading)
     136                if (tile == null || (tile.isLoaded() && !tile.hasError()) || tile.loading)
    135137                    return;
     138                tile.loaded = false;
     139                tile.error = false;
    136140                tile.loading = true;
    137141            }
     
    156160
    157161        protected void loadOrUpdateTile() {
    158 
    159162            try {
    160163                // log.finest("Loading tile from OSM: " + tile);
     
    210213                    listener.tileLoadingFinished(tile, true);
    211214                } else {
    212                     byte[] buffer = loadTileInBuffer(urlConn);
    213                     if (buffer != null) {
    214                         tile.loadImage(new ByteArrayInputStream(buffer));
    215                         tile.setLoaded(true);
    216                         listener.tileLoadingFinished(tile, true);
    217                         saveTileToFile(buffer);
     215                    for(int i = 0; i < 5; ++i) {
     216                        if (urlConn instanceof HttpURLConnection && ((HttpURLConnection)urlConn).getResponseCode() == 503) {
     217                            Thread.sleep(5000+(new Random()).nextInt(5000));
     218                            continue;
     219                        }
     220                        byte[] buffer = loadTileInBuffer(urlConn);
     221                        if (buffer != null) {
     222                            tile.loadImage(new ByteArrayInputStream(buffer));
     223                            tile.setLoaded(true);
     224                            listener.tileLoadingFinished(tile, true);
     225                            saveTileToFile(buffer);
     226                            break;
     227                        }
    218228                    }
    219229                }
     
    252262                fileAge = tileFile.lastModified();
    253263                boolean oldTile = System.currentTimeMillis() - fileAge > maxCacheFileAge;
    254                 // System.out.println("Loaded from file: " + tile);
    255264                if (!oldTile) {
    256265                    tile.setLoaded(true);
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java

    r24967 r26508  
    4444                synchronized (cache) {
    4545                    tile = cache.getTile(source, tilex, tiley, zoom);
    46                     if (tile == null || tile.isLoaded() || tile.loading)
     46                    if (tile == null || (tile.isLoaded() && !tile.hasError()) || tile.loading)
    4747                        return;
     48                    tile.loaded = false;
     49                    tile.error = false;
    4850                    tile.loading = true;
    4951                }
Note: See TracChangeset for help on using the changeset viewer.