Revision: 6633 http://sourceforge.net/p/jump-pilot/code/6633 Author: michaudm Date: 2020-11-22 10:12:19 +0000 (Sun, 22 Nov 2020) Log Message: ----------- Find a way to free TiffUtilsV2 cache when necessary (and to avoid useless fiel lock).
Modified Paths: -------------- core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java core/trunk/src/org/openjump/core/rasterimage/TiffUtilsV2.java Modified: core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java =================================================================== --- core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java 2020-11-22 10:08:22 UTC (rev 6632) +++ core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java 2020-11-22 10:12:19 UTC (rev 6633) @@ -17,6 +17,7 @@ import java.awt.image.IndexColorModel; import java.awt.image.Raster; import java.awt.image.renderable.ParameterBlock; +import java.io.File; import java.io.IOException; import java.util.Objects; import java.util.UUID; @@ -23,6 +24,7 @@ import javax.media.jai.JAI; +import com.vividsolutions.jump.workbench.model.Disposable; import org.openjump.core.ccordsys.utils.SRSInfo; import org.openjump.util.metaData.MetaDataMap; import org.openjump.util.metaData.ObjectContainingMetaInformation; @@ -56,7 +58,8 @@ * @version $Rev: 2509 $ * modified: [sstein]: 16.Feb.2009 changed logger-entries to comments, used frame.warnUser */ -public final class RasterImageLayer extends AbstractLayerable implements ObjectContainingMetaInformation { +public final class RasterImageLayer extends AbstractLayerable + implements ObjectContainingMetaInformation, Disposable { protected static Blackboard blackboard = null; @@ -1410,7 +1413,9 @@ public void dispose() { // TODO: probably a good idea to remove resources when the layer is closed up - // dunno what is needed to clean up Sextante though, hence leave it for now + // TiffUtilsV2 contains a cache to avoid reading image files again and again + // but which can hold file lock for ever if entries are not removed. + TiffUtilsV2.removeFromGeoRastercache(new File(imageFileName)); } public Double getCellValue(Coordinate coordinate, int band) throws IOException { Modified: core/trunk/src/org/openjump/core/rasterimage/TiffUtilsV2.java =================================================================== --- core/trunk/src/org/openjump/core/rasterimage/TiffUtilsV2.java 2020-11-22 10:08:22 UTC (rev 6632) +++ core/trunk/src/org/openjump/core/rasterimage/TiffUtilsV2.java 2020-11-22 10:12:19 UTC (rev 6633) @@ -40,8 +40,11 @@ public class TiffUtilsV2 { // a File -> RenderedOp cache mapping to prevent recreating inputs for the same file - private static WeakHashMap<File,GeoReferencedRaster> geoRasterCache = new WeakHashMap<File,GeoReferencedRaster>(); + private static WeakHashMap<File,GeoReferencedRaster> geoRasterCache = new WeakHashMap<>(); + public static void removeFromGeoRastercache(File file) { + geoRasterCache.remove(file); + } public static RenderedOp getRenderedOp(File tiffFile) throws IOException { GeoReferencedRaster geoRaster = getGeoReferencedRaster(tiffFile); _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel