001 package org.apache.turbine.services.security.torque; 002 003 /* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022 import java.util.Iterator; 023 024 import org.apache.turbine.om.security.Permission; 025 import org.apache.turbine.om.security.Role; 026 import org.apache.turbine.services.security.TurbineSecurity; 027 import org.apache.turbine.util.security.PermissionSet; 028 import org.apache.turbine.util.security.TurbineSecurityException; 029 030 import org.apache.torque.om.Persistent; 031 032 /** 033 * This class represents a role played by the User associated with the 034 * current Session. It is separated from the actual Torque peer object 035 * to be able to replace the Peer with an user supplied Peer (and Object) 036 * 037 * @author <a href="mailto:frank.kim@clearink.com">Frank Y. Kim</a> 038 * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a> 039 * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a> 040 * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a> 041 * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a> 042 * @version $Id: TorqueRole.java 534527 2007-05-02 16:10:59Z tv $ 043 */ 044 045 public class TorqueRole 046 extends TorqueObject 047 implements Role, 048 Comparable 049 { 050 051 private static final long serialVersionUID = -7774684697021445523L; 052 053 /** The permissions for this role. */ 054 private PermissionSet permissionSet = null; 055 056 /** 057 * Constructs a new Role 058 */ 059 public TorqueRole() 060 { 061 super(); 062 } 063 064 /** 065 * Constructs a new Role with the specified name. 066 * 067 * @param name The name of the new object. 068 */ 069 public TorqueRole(String name) 070 { 071 super(name); 072 } 073 074 /** 075 * The package private Constructor is used when the RolePeerManager 076 * has retrieved a list of Database Objects from the peer and 077 * must 'wrap' them into TorqueRole Objects. You should not use it directly! 078 * 079 * @param obj An Object from the peer 080 */ 081 public TorqueRole(Persistent obj) 082 { 083 super(obj); 084 } 085 086 /** 087 * Returns the underlying Object for the Peer 088 * 089 * Used in the RolePeerManager when building a new Criteria. 090 * 091 * @return The underlying persistent object 092 * 093 */ 094 095 public Persistent getPersistentObj() 096 { 097 if (obj == null) 098 { 099 obj = RolePeerManager.newPersistentInstance(); 100 } 101 return obj; 102 } 103 104 /** 105 * Returns the name of this role. 106 * 107 * @return The name of the role. 108 */ 109 public String getName() 110 { 111 return RolePeerManager.getRoleName(getPersistentObj()); 112 } 113 114 /** 115 * Sets the name of this Role 116 * 117 * @param name The name of the role. 118 */ 119 public void setName(String name) 120 { 121 RolePeerManager.setRoleName(getPersistentObj(), name); 122 } 123 124 /** 125 * Gets the Id of this object 126 * 127 * @return The Id of the object 128 */ 129 public int getId() 130 { 131 return RolePeerManager.getIdAsObj(getPersistentObj()).intValue(); 132 } 133 134 /** 135 * Gets the Id of this object 136 * 137 * @return The Id of the object 138 */ 139 public Integer getIdAsObj() 140 { 141 return RolePeerManager.getIdAsObj(getPersistentObj()); 142 } 143 144 /** 145 * Sets the Id of this object 146 * 147 * @param id The new Id 148 */ 149 public void setId(int id) 150 { 151 RolePeerManager.setId(getPersistentObj(), id); 152 } 153 /** 154 * Returns the set of Permissions associated with this Role. 155 * 156 * @return A PermissionSet. 157 * 158 * @exception Exception a generic exception. 159 */ 160 public PermissionSet getPermissions() 161 throws Exception 162 { 163 return permissionSet; 164 } 165 166 /** 167 * Sets the Permissions associated with this Role. 168 * 169 * @param permissionSet A PermissionSet. 170 */ 171 public void setPermissions(PermissionSet permissionSet) 172 { 173 this.permissionSet = permissionSet; 174 } 175 176 // These following methods are wrappers around TurbineSecurity 177 178 /** 179 * Creates a new Role in the system. 180 * 181 * @param name The name of the new Role. 182 * @return An object representing the new Role. 183 * @throws TurbineSecurityException if the Role could not be created. 184 */ 185 public Role create(String name) 186 throws TurbineSecurityException 187 { 188 return TurbineSecurity.createRole(name); 189 } 190 191 /** 192 * Makes changes made to the Role attributes permanent. 193 * 194 * @throws TurbineSecurityException if there is a problem while 195 * saving data. 196 */ 197 public void save() 198 throws TurbineSecurityException 199 { 200 TurbineSecurity.saveRole(this); 201 } 202 203 /** 204 * Removes a role from the system. 205 * 206 * @throws TurbineSecurityException if the Role could not be removed. 207 */ 208 public void remove() 209 throws TurbineSecurityException 210 { 211 TurbineSecurity.removeRole(this); 212 } 213 214 /** 215 * Renames the role. 216 * 217 * @param name The new Role name. 218 * @throws TurbineSecurityException if the Role could not be renamed. 219 */ 220 public void rename(String name) 221 throws TurbineSecurityException 222 { 223 TurbineSecurity.renameRole(this, name); 224 } 225 226 /** 227 * Grants a Permission to this Role. 228 * 229 * @param permission A Permission. 230 * @throws TurbineSecurityException if there is a problem while assigning 231 * the Permission. 232 */ 233 public void grant(Permission permission) 234 throws TurbineSecurityException 235 { 236 TurbineSecurity.grant(this, permission); 237 } 238 239 /** 240 * Grants Permissions from a PermissionSet to this Role. 241 * 242 * @param permissionSet A PermissionSet. 243 * @throws TurbineSecurityException if there is a problem while assigning 244 * the Permissions. 245 */ 246 public void grant(PermissionSet permissionSet) 247 throws TurbineSecurityException 248 { 249 Iterator permissions = permissionSet.iterator(); 250 while (permissions.hasNext()) 251 { 252 TurbineSecurity.grant(this, (Permission) permissions.next()); 253 } 254 } 255 256 /** 257 * Revokes a Permission from this Role. 258 * 259 * @param permission A Permission. 260 * @throws TurbineSecurityException if there is a problem while unassigning 261 * the Permission. 262 */ 263 public void revoke(Permission permission) 264 throws TurbineSecurityException 265 { 266 TurbineSecurity.revoke(this, permission); 267 } 268 269 /** 270 * Revokes Permissions from a PermissionSet from this Role. 271 * 272 * @param permissionSet A PermissionSet. 273 * @throws TurbineSecurityException if there is a problem while unassigning 274 * the Permissions. 275 */ 276 public void revoke(PermissionSet permissionSet) 277 throws TurbineSecurityException 278 { 279 Iterator permissions = permissionSet.iterator(); 280 while (permissions.hasNext()) 281 { 282 TurbineSecurity.revoke(this, (Permission) permissions.next()); 283 } 284 } 285 }