{
try
{
String type = getActionParameter(requestContext, "type");
if (type == null)
throw new AJAXException("Missing 'type' parameter");
String resource = getActionParameter(requestContext, "resource");
if (resource == null)
throw new AJAXException("Missing 'resource' parameter");
String actions = getActionParameter(requestContext, "actions");
if (actions == null)
throw new AJAXException("Missing 'actions' parameter");
String oldActions = getActionParameter(requestContext, "oldactions");
if (oldActions == null)
{
// assume no change
oldActions = actions;
}
Permission permission = null;
if (!oldActions.equals(actions))
{
permission = createPermissionFromClass(type, resource, oldActions);
pm.removePermission(permission);
permission = createPermissionFromClass(type, resource, actions);
pm.addPermission(permission);
}
else
{
permission = createPermissionFromClass(type, resource, actions);
}
String roleNames = getActionParameter(requestContext, "roles");
return updateRoles(permission, roleNames);
}
catch (SecurityException e)
{
throw new AJAXException(e.toString(), e);
}
}