/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.xacml.request;
import java.util.HashSet;
import java.util.Set;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.security.AccessMode;
import org.geoserver.xacml.geoxacml.XACMLConstants;
import org.geoserver.xacml.role.XACMLRole;
import com.sun.xacml.ctx.Attribute;
import com.sun.xacml.ctx.RequestCtx;
import com.sun.xacml.ctx.Subject;
/**
* Builds a request for workspace access control
*
*
* @author Christian Mueller
*
*/
public class WorkspaceRequestCtxBuilder extends RequestCtxBuilder {
private String workspaceName = null;
public String getWorkspaceName() {
return workspaceName;
}
public WorkspaceRequestCtxBuilder(XACMLRole role, WorkspaceInfo workspace, AccessMode mode) {
super(role, mode.toString());
this.workspaceName = workspace.getName();
}
@Override
public RequestCtx createRequestCtx() {
Set<Subject> subjects = new HashSet<Subject>(1);
addRole(subjects);
Set<Attribute> resources = new HashSet<Attribute>(1);
addGeoserverResource(resources);
addResource(resources, XACMLConstants.WorkspaceURI, workspaceName);
Set<Attribute> actions = new HashSet<Attribute>(1);
addAction(actions);
Set<Attribute> environment = new HashSet<Attribute>(1);
RequestCtx ctx = new RequestCtx(subjects, resources, actions, environment);
return ctx;
}
}