/* (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.security.concurrent;
import java.io.IOException;
import org.geoserver.security.GeoServerRoleService;
import org.geoserver.security.GeoServerRoleStore;
import org.geoserver.security.impl.GeoServerRole;
/**
* This is a wrapper class for a {@link GeoServerRoleStore}
* Thsi wrapper protects internal data structures using read/write locks
*
* @author christian
*
*/
public class LockingRoleStore extends LockingRoleService implements GeoServerRoleStore{
/**
* Constructor for the locking wrapper
*
* @param store
*/
public LockingRoleStore(GeoServerRoleStore store) {
super(store);
}
/**
* @return the wrapped store
*/
public GeoServerRoleStore getStore() {
return (GeoServerRoleStore) super.getService();
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#addRole(org.geoserver.security.impl.GeoServerRole)
*/
public void addRole(GeoServerRole role) throws IOException{
writeLock();
try {
getStore().addRole(role);
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#updateRole(org.geoserver.security.impl.GeoServerRole)
*/
public void updateRole(GeoServerRole role) throws IOException{
writeLock();
try {
getStore().updateRole(role);
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#removeRole(org.geoserver.security.impl.GeoServerRole)
*/
public boolean removeRole(GeoServerRole role) throws IOException{
writeLock();
try {
return getStore().removeRole(role);
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#associateRoleToGroup(org.geoserver.security.impl.GeoServerRole, java.lang.String)
*/
public void associateRoleToGroup(GeoServerRole role, String groupname) throws IOException{
writeLock();
try {
getStore().associateRoleToGroup(role,groupname);
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#disAssociateRoleFromGroup(org.geoserver.security.impl.GeoServerRole, java.lang.String)
*/
public void disAssociateRoleFromGroup(GeoServerRole role, String groupname) throws IOException{
writeLock();
try {
getStore().disAssociateRoleFromGroup(role, groupname);
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#associateRoleToUser(org.geoserver.security.impl.GeoServerRole, java.lang.String)
*/
public void associateRoleToUser(GeoServerRole role, String username) throws IOException{
writeLock();
try {
getStore().associateRoleToUser(role, username);
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#disAssociateRoleFromUser(org.geoserver.security.impl.GeoServerRole, java.lang.String)
*/
public void disAssociateRoleFromUser(GeoServerRole role, String username) throws IOException{
writeLock();
try {
getStore().disAssociateRoleFromUser(role, username);
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#store()
*/
public void store() throws IOException {
writeLock();
try {
getStore().store();
} finally {
writeUnLock();
}
}
/**
* READ_LOCK
* @see org.geoserver.security.GeoServerRoleStore#isModified()
*/
public boolean isModified() {
readLock();
try {
return getStore().isModified() ;
} finally {
readUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#setParentRole(org.geoserver.security.impl.GeoServerRole, org.geoserver.security.impl.GeoServerRole)
*/
public void setParentRole(GeoServerRole role, GeoServerRole parentRole) throws IOException{
writeLock();
try {
getStore().setParentRole(role, parentRole);
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#clear()
*/
public void clear() throws IOException {
writeLock();
try {
getStore().clear();
} finally {
writeUnLock();
}
}
/**
* WRITE_LOCK
* @see org.geoserver.security.GeoServerRoleStore#initializeFromService(org.geoserver.security.GeoServerRoleService)
*/
public void initializeFromService(GeoServerRoleService service) throws IOException{
writeLock();
try {
getStore().initializeFromService(service);
} finally {
writeUnLock();
}
}
}