/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2014 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.platform.resource;
import org.geoserver.platform.resource.Resource.Lock;
/**
* A lock provider that delegates the work to another {@link LockProvider} instance, which needs to be configured by calling
* {@link #setDelegate(LockProvider)}.
* <p>
* GeoServer is configured with a single globalLockProvider for use by the application. This instance is configured with an appropriate
* bean instance as configured by the user.
*
* @author Andrea Aime - GeoSolutions
* @author Jody Garnett (Boundless)
*/
public class GlobalLockProvider implements LockProvider {
LockProvider delegate = new NullLockProvider();
/**
* Delegate used for lock creation
*
* @return delegate used for lock creation
*/
public LockProvider getDelegate() {
return delegate;
}
/**
* Delegate to use for lock creation.
*
* @param delegate LockProvider configured for lock creation
*/
public void setDelegate(LockProvider delegate) {
if (delegate == null) {
throw new NullPointerException("LockProvider delegate required");
}
this.delegate = delegate;
}
@Override
public Lock acquire(String path) {
return delegate.acquire(path);
}
@Override
public String toString() {
if( delegate instanceof NullLockProvider){
return "GlobalLock Provider";
}
return "GlobalLock Provider (" + delegate + ")";
}
}