package org.geoserver.gwc; import java.util.logging.Logger; import org.geotools.util.logging.Logging; import org.geowebcache.layer.wms.WMSLayer; import org.geowebcache.mime.MimeType; import org.geowebcache.storage.StorageBroker; import org.geowebcache.storage.StorageException; import org.geowebcache.storage.TileRangeObject; public class GWCCleanser { private static Logger log = Logging.getLogger("org.geoserver.gwc.GWCCleanser"); final private StorageBroker sb; public GWCCleanser(StorageBroker sb) { this.sb = sb; } public void deleteLayer(String layerName) { CleanserThread thread = new CleanserThread(layerName); thread.start(); } public void expireLayer(WMSLayer layer) { // Synchronously mark all tiles as expired // TODO //(String layerName, String gridSetId, int zoomStart, // int zoomStop, long[][] rangeBounds, MimeType mimeType, String parameters); //TileRangeObject trObj = new TileRangeObject(null, null, 0, 0, null, null, null); //try { // sb.expire(trObj); //} catch (StorageException e) { // log.severe("Expiring cache for "+layer.getName()+ " failed: " + e.getMessage()); //} // Delete all tiles in a new thread deleteLayer(layer.getName()); } private class CleanserThread extends Thread { String layerName; CleanserThread(String layerName) { this.layerName = layerName; } public void run() { log.info("Deleting GWC cache for " + layerName); try { sb.delete(layerName); } catch (StorageException e) { log.severe("Failed to clear cache for " + layerName + ", " + e.getMessage()); } log.info("GWC cache for " + layerName + " deleted successfully"); } } }