/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/kernel/trunk/api/src/main/java/org/sakaiproject/authz/api/FunctionManager.java $
* $Id: FunctionManager.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2005, 2006, 2008 Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package org.sakaiproject.authz.api;
import java.util.List;
/**
* <p>
* FunctionManager is the API for the service that manages security function registrations from the various Sakai applications.
* </p>
*/
public interface FunctionManager
{
/**
* Register an authz function
*
* @param function The function name.
*/
void registerFunction(String function);
/**
* Register an authz function
*
* @param function
* The function name.
* @param userMutable
* If true, this function is intended to be settable by users with update
* rights in the authzgroup, for example through a tool
* permissions widget or web service. Setting this to false indicates that
* tool UIs or web services should not allow this permission
* to be altered by a user, but does not enforce this in Role.allowFunction()
* or Role.disallowFunction().
*/
void registerFunction(String function, boolean userMutable);
/**
* Access all the registered functions.
*
* @return A List (String) of registered functions.
*/
List<String> getRegisteredFunctions();
/**
* Access all the registered functions that begin with the string.
*
* @param prefix
* The prefix pattern to find.
* @return A List (String) of registered functions that begin with the string.
*/
List<String> getRegisteredFunctions(String prefix);
/**
* Access all the registered functions intended to be user-settable
*
* @return A List (String) of registered functions.
*/
List<String> getRegisteredUserMutableFunctions();
/**
* Access all the registered functions intended to be user-settable that begin with the string.
*
* @param prefix
* The prefix pattern to find.
* @return A List (String) of registered functions that begin with the string.
*/
List<String> getRegisteredUserMutableFunctions(String prefix);
}