org.jboss.security.jacc.JBossPolicyConfiguration Maven / Gradle / Ivy
/*
* JBoss, Home of Professional Open Source
* Copyright 2005, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.security.jacc;
import java.security.Permission;
import java.security.PermissionCollection;
import javax.security.jacc.PolicyConfiguration;
import javax.security.jacc.PolicyContextException;
import org.jboss.security.PicketBoxLogger;
import org.jboss.security.PicketBoxMessages;
import org.jboss.security.util.state.IllegalTransitionException;
import org.jboss.security.util.state.State;
import org.jboss.security.util.state.StateMachine;
/** The JACC PolicyConfiguration implementation. This class associates a
* context id with the permission ops it passes along to the global
* DelegatingPolicy instance.
*
* @author [email protected]
* @version $Revision$
*/
public class JBossPolicyConfiguration implements PolicyConfiguration
{
/** The JACC context id associated with the policy */
private String contextID;
/** The Policy impl which handles the JACC permissions */
private DelegatingPolicy policy;
/** A state machine whihc enforces the state behavior of this config */
private StateMachine configStateMachine;
protected JBossPolicyConfiguration(String contextID, DelegatingPolicy policy, StateMachine configStateMachine)
throws PolicyContextException
{
this.contextID = contextID;
this.policy = policy;
this.configStateMachine = configStateMachine;
if (contextID == null)
throw PicketBoxMessages.MESSAGES.invalidNullArgument("contextID");
if (policy == null)
throw PicketBoxMessages.MESSAGES.invalidNullArgument("policy");
if (configStateMachine == null)
throw PicketBoxMessages.MESSAGES.invalidNullArgument("configStateMachine");
validateState("getPolicyConfiguration");
PicketBoxLogger.LOGGER.debugJBossPolicyConfigurationConstruction(contextID);
}
void initPolicyConfiguration(boolean remove)
throws PolicyContextException
{
validateState("getPolicyConfiguration");
policy.initPolicyConfiguration(contextID, remove);
}
public void addToExcludedPolicy(Permission permission)
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceAddPermissionToExcludedPolicy(permission);
validateState("addToExcludedPolicy");
policy.addToExcludedPolicy(contextID, permission);
}
public void addToExcludedPolicy(PermissionCollection permissions)
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceAddPermissionsToExcludedPolicy(permissions);
validateState("addToExcludedPolicy");
policy.addToExcludedPolicy(contextID, permissions);
}
public void addToRole(String roleName, Permission permission)
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceAddPermissionToRole(permission);
validateState("addToRole");
policy.addToRole(contextID, roleName, permission);
}
public void addToRole(String roleName, PermissionCollection permissions)
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceAddPermissionsToRole(permissions);
validateState("addToRole");
policy.addToRole(contextID, roleName, permissions);
}
public void addToUncheckedPolicy(Permission permission)
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceAddPermissionToUncheckedPolicy(permission);
validateState("addToUncheckedPolicy");
policy.addToUncheckedPolicy(contextID, permission);
}
public void addToUncheckedPolicy(PermissionCollection permissions)
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceAddPermissionsToUncheckedPolicy(permissions);
validateState("addToUncheckedPolicy");
policy.addToUncheckedPolicy(contextID, permissions);
}
public void commit()
throws PolicyContextException
{
PicketBoxLogger.LOGGER.tracePolicyConfigurationCommit(contextID);
validateState("commit");
policy.commit(contextID);
}
public void delete()
throws PolicyContextException
{
PicketBoxLogger.LOGGER.tracePolicyConfigurationDelete(contextID);
validateState("delete");
policy.delete(contextID);
}
public String getContextID()
throws PolicyContextException
{
validateState("getContextID");
return contextID;
}
public boolean inService()
throws PolicyContextException
{
validateState("inService");
State state = configStateMachine.getCurrentState();
boolean inService = state.getName().equals("inService");
return inService;
}
public void linkConfiguration(PolicyConfiguration link)
throws PolicyContextException
{
if (PicketBoxLogger.LOGGER.isTraceEnabled())
{
PicketBoxLogger.LOGGER.traceLinkConfiguration(link.getContextID());
}
validateState("linkConfiguration");
policy.linkConfiguration(contextID, link);
}
public void removeExcludedPolicy()
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceRemoveExcludedPolicy(contextID);
validateState("removeExcludedPolicy");
policy.removeExcludedPolicy(contextID);
}
public void removeRole(String roleName)
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceRemoveRole(roleName, contextID);
validateState("removeRole");
policy.removeRole(contextID, roleName);
}
public void removeUncheckedPolicy()
throws PolicyContextException
{
PicketBoxLogger.LOGGER.traceRemoveUncheckedPolicy(contextID);
validateState("removeUncheckedPolicy");
policy.removeUncheckedPolicy(contextID);
}
protected void validateState(String action)
throws PolicyContextException
{
try
{
configStateMachine.nextState(action);
}
catch(IllegalTransitionException e)
{
throw new PolicyContextException(PicketBoxMessages.MESSAGES.operationNotAllowedMessage(), e);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy