1 package org.apache.turbine.om.security;
2
3
4 /*
5 * Licensed to the Apache Software Foundation (ASF) under one
6 * or more contributor license agreements. See the NOTICE file
7 * distributed with this work for additional information
8 * regarding copyright ownership. The ASF licenses this file
9 * to you under the Apache License, Version 2.0 (the
10 * "License"); you may not use this file except in compliance
11 * with the License. You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing,
16 * software distributed under the License is distributed on an
17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18 * KIND, either express or implied. See the License for the
19 * specific language governing permissions and limitations
20 * under the License.
21 */
22
23
24 import java.sql.Connection;
25 import java.util.Iterator;
26
27 import org.apache.turbine.services.security.TurbineSecurity;
28 import org.apache.turbine.util.security.PermissionSet;
29 import org.apache.turbine.util.security.TurbineSecurityException;
30
31 /**
32 * This class represents a role played by the User associated with the
33 * current Session.
34 *
35 * @author <a href="mailto:frank.kim@clearink.com">Frank Y. Kim</a>
36 * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
37 * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
38 * @version $Id: TurbineRole.java 1078552 2011-03-06 19:58:46Z tv $
39 */
40 public class TurbineRole extends SecurityObject<Role> implements Role
41 {
42 /** Serial version */
43 private static final long serialVersionUID = -1354408789347969126L;
44
45 /**
46 * Constructs a new Role
47 */
48 public TurbineRole()
49 {
50 super();
51 }
52
53 /**
54 * Constructs a new Role with the sepcified name.
55 *
56 * @param name The name of the new object.
57 */
58 public TurbineRole(String name)
59 {
60 super(name);
61 }
62
63 /** The permissions for this role. */
64 private PermissionSet permissionSet = null;
65
66 /**
67 * Returns the set of Permissions associated with this Role.
68 *
69 * @return A PermissionSet.
70 * @exception Exception a generic exception.
71 */
72 public PermissionSet getPermissions()
73 throws Exception
74 {
75 return permissionSet;
76 }
77
78 /**
79 * Sets the Permissions associated with this Role.
80 *
81 * @param permissionSet A PermissionSet.
82 */
83 public void setPermissions(PermissionSet permissionSet)
84 {
85 this.permissionSet = permissionSet;
86 }
87
88 // These following methods are wrappers around TurbineSecurity
89
90 /**
91 * Creates a new Role in the system.
92 *
93 * @param name The name of the new Role.
94 * @return An object representing the new Role.
95 * @throws TurbineSecurityException if the Role could not be created.
96 */
97 public Role create(String name)
98 throws TurbineSecurityException
99 {
100 //Role role = new Role(name);
101 Role role = new TurbineRole(name);
102 TurbineSecurity.addRole(role);
103 return role;
104 }
105
106 /**
107 * Makes changes made to the Role attributes permanent.
108 *
109 * @throws TurbineSecurityException if there is a problem while
110 * saving data.
111 */
112 public void save()
113 throws TurbineSecurityException
114 {
115 TurbineSecurity.saveRole(this);
116 }
117
118 /**
119 * not implemented
120 *
121 * @param conn
122 * @throws Exception
123 */
124 public void save(Connection conn) throws Exception
125 {
126 throw new Exception("not implemented");
127 }
128
129 /**
130 * not implemented
131 *
132 * @param dbname
133 * @throws Exception
134 */
135 public void save(String dbname) throws Exception
136 {
137 throw new Exception("not implemented");
138 }
139
140 /**
141 * Removes a role from the system.
142 *
143 * @throws TurbineSecurityException if the Role could not be removed.
144 */
145 public void remove()
146 throws TurbineSecurityException
147 {
148 TurbineSecurity.removeRole(this);
149 }
150
151 /**
152 * Renames the role.
153 *
154 * @param name The new Role name.
155 * @throws TurbineSecurityException if the Role could not be renamed.
156 */
157 public void rename(String name)
158 throws TurbineSecurityException
159 {
160 TurbineSecurity.renameRole(this, name);
161 }
162
163 /**
164 * Grants a Permission to this Role.
165 *
166 * @param permission A Permission.
167 * @throws TurbineSecurityException if there is a problem while assigning
168 * the Permission.
169 */
170 public void grant(Permission permission)
171 throws TurbineSecurityException
172 {
173 TurbineSecurity.grant(this, permission);
174 }
175
176 /**
177 * Grants Permissions from a PermissionSet to this Role.
178 *
179 * @param permissionSet A PermissionSet.
180 * @throws TurbineSecurityException if there is a problem while assigning
181 * the Permissions.
182 */
183 public void grant(PermissionSet permissionSet)
184 throws TurbineSecurityException
185 {
186 for (Iterator permissions = permissionSet.iterator(); permissions.hasNext();)
187 {
188 TurbineSecurity.grant(this, (Permission) permissions.next());
189 }
190 }
191
192 /**
193 * Revokes a Permission from this Role.
194 *
195 * @param permission A Permission.
196 * @throws TurbineSecurityException if there is a problem while unassigning
197 * the Permission.
198 */
199 public void revoke(Permission permission)
200 throws TurbineSecurityException
201 {
202 TurbineSecurity.revoke(this, permission);
203 }
204
205 /**
206 * Revokes Permissions from a PermissionSet from this Role.
207 *
208 * @param permissionSet A PermissionSet.
209 * @throws TurbineSecurityException if there is a problem while unassigning
210 * the Permissions.
211 */
212 public void revoke(PermissionSet permissionSet)
213 throws TurbineSecurityException
214 {
215 for (Iterator permissions = permissionSet.iterator(); permissions.hasNext();)
216 {
217 TurbineSecurity.revoke(this, (Permission) permissions.next());
218 }
219 }
220 }