/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.gwc; import org.geoserver.platform.resource.LockProvider; import org.geoserver.platform.resource.Paths; import org.geowebcache.GeoWebCacheException; /** * Adapter allowing GeoWebCache to make use of {@link org.geoserver.platform.resource.LockProvider}. * * This implementation is provided to allow GeoWebCache to make use of the global lock provider * used for ResourceStore. * * @author Jody Garnett (Boundless) */ public class GeoServerLockProvider implements org.geowebcache.locks.LockProvider { LockProvider delegate; @Override public Lock getLock(String lockKey) throws GeoWebCacheException { String path = Paths.convert(lockKey); final org.geoserver.platform.resource.Resource.Lock lock = delegate.acquire(path); return new Lock() { @Override public void release() throws GeoWebCacheException { try { lock.release(); } catch (IllegalArgumentException trouble) { throw new GeoWebCacheException(trouble); } } @Override public String toString() { return lock.toString(); } }; } public LockProvider getDelegate() { return delegate; } public void setDelegate(LockProvider delegate) { this.delegate = delegate; } }