new utility for updated cached values in a multi-threaded environment.
[utils] / security / impl / src / main / java / org / wamblee / security / authorization / AuthorizationService.java
1 /*
2  * Copyright 2005-2010 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.security.authorization;
17
18 import org.wamblee.security.authentication.UserAccessor;
19 import org.wamblee.security.authentication.UserAdministration;
20
21 /**
22  * Service to determine if access to a certain resource is allowed.
23  * 
24  * @author Erik Brakkee
25  */
26 public interface AuthorizationService {
27
28     /**
29      * Checks whether an operation is allowed on a resource.
30      * 
31      * @param aResource
32      *            Resource.
33      * @param aOperation
34      *            Operation.
35      * 
36      * @return Checks whether the operation is allowed on a resource.
37      */
38     boolean isAllowed(Object aResource, Operation aOperation);
39
40     /**
41      * Checks if the given operation is allowed on the resource.
42      * 
43      * @param <T>
44      *            Type of resource
45      * @param aResource
46      *            Resource.
47      * @param aOperation
48      *            Operation.
49      * @return Resource passed in in case access is allowed
50      * @throws AuthorizationException
51      *             In case access is denied.
52      */
53     <T> T check(T aResource, Operation aOperation);
54
55     /**
56      * Gets the authorization rules.
57      * 
58      * @return Rules.
59      */
60     AuthorizationRule[] getRules();
61
62     /**
63      * Appends a new authorization rule to the end.
64      * 
65      * @param aRule
66      *            Rule to append.
67      */
68     void appendRule(AuthorizationRule aRule);
69
70     /**
71      * Removes a rule.
72      * 
73      * @param aIndex
74      *            Index of the rule to remove.
75      */
76     void removeRule(int aIndex);
77
78     /**
79      * Inserts a rule.
80      * 
81      * @param aIndex
82      *            Index of the position of the rule after insertion.
83      * @param aRule
84      *            Rule to insert.
85      */
86     void insertRuleAfter(int aIndex, AuthorizationRule aRule);
87
88     /**
89      * Sets the user accessor so that the authorization service can get access
90      * to the logged in user.
91      * 
92      * @param aUserAccessor
93      *            User accessor.
94      */
95     void setUserAccessor(UserAccessor aUserAccessor);
96     
97     /**
98      * Sets the user administration so that the authorization service can check 
99      * information for the the current user.
100      *  
101      * @param aUserAdmin User administration. 
102      */
103     void setUserAdministration(UserAdministration aUserAdmin); 
104
105 }