Changeset 8762 in josm


Ignore:
Timestamp:
2015-09-17T19:12:34+02:00 (9 years ago)
Author:
wiktorn
Message:

Replace CacheFiles with JCS and remove CacheFiles

Closes: #11869

Location:
trunk/src/org/openstreetmap/josm
Files:
1 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java

    r8510 r8762  
    99import java.awt.geom.AffineTransform;
    1010import java.awt.image.BufferedImage;
     11import java.io.ByteArrayOutputStream;
     12import java.io.File;
     13import java.io.IOException;
    1114import java.util.ArrayList;
    1215import java.util.List;
    1316
     17import javax.imageio.ImageIO;
     18
     19import org.apache.commons.jcs.access.behavior.ICacheAccess;
    1420import org.openstreetmap.josm.Main;
    15 import org.openstreetmap.josm.io.CacheFiles;
     21import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
     22import org.openstreetmap.josm.data.cache.JCSCacheManager;
    1623import org.openstreetmap.josm.tools.ExifReader;
    1724
     
    2330    private GeoImageLayer layer;
    2431    private MediaTracker tracker;
    25     private CacheFiles cache;
     32    private ICacheAccess<String , BufferedImageCacheEntry> cache;
    2633    private boolean cacheOff = Main.pref.getBoolean("geoimage.noThumbnailCache", false);
    2734
     
    3037        this.data = new ArrayList<>(layer.data);
    3138        if (!cacheOff) {
    32             cache = new CacheFiles("geoimage-thumbnails", false);
    33             cache.setExpire(CacheFiles.EXPIRE_NEVER, false);
    34             cache.setMaxSize(120, false);
     39            try {
     40                cache = JCSCacheManager.getCache("geoimage-thumbnails", 0, 120, Main.pref.getCacheDirectory().getPath() + File.separator + "geoimage-thumbnails");
     41            } catch (IOException e) {
     42                Main.warn("Failed to initialize cache for geoimage-thumbnails");
     43                Main.warn(e);
     44            }
    3545        }
    3646    }
     
    6171        final String cacheIdent = entry.getFile()+":"+maxSize;
    6272
    63         if (!cacheOff) {
    64             BufferedImage cached = cache.getImg(cacheIdent);
    65             if (cached != null) {
    66                 Main.debug(" from cache");
    67                 return cached;
     73        if (!cacheOff && cache != null) {
     74            try {
     75                BufferedImageCacheEntry cacheEntry = cache.get(cacheIdent);
     76                if (cacheEntry != null && cacheEntry.getImage() != null) {
     77                    Main.debug(" from cache");
     78                    return cacheEntry.getImage();
     79                }
     80            } catch (IOException e) {
     81                Main.warn(e);
    6882            }
    6983        }
     
    118132        }
    119133
    120         if (!cacheOff) {
    121             cache.saveImg(cacheIdent, scaledBI);
     134        if (!cacheOff && cache != null) {
     135            try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
     136                ImageIO.write(scaledBI,"png", output);
     137                cache.put(cacheIdent, new BufferedImageCacheEntry(output.toByteArray()));
     138            } catch (IOException e) {
     139                Main.warn("Failed to save geoimage thumb to cache");
     140                Main.warn(e);
     141            }
    122142        }
    123143
Note: See TracChangeset for help on using the changeset viewer.