    001    package org.apache.turbine.om.security;
    002
    003
    004    /*
    005     * Licensed to the Apache Software Foundation (ASF) under one
    006     * or more contributor license agreements.  See the NOTICE file
    007     * distributed with this work for additional information
    008     * regarding copyright ownership.  The ASF licenses this file
    009     * to you under the Apache License, Version 2.0 (the
    010     * "License"); you may not use this file except in compliance
    011     * with the License.  You may obtain a copy of the License at
    012     *
    013     *   http://www.apache.org/licenses/LICENSE-2.0
    014     *
    015     * Unless required by applicable law or agreed to in writing,
    016     * software distributed under the License is distributed on an
    017     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    018     * KIND, either express or implied.  See the License for the
    019     * specific language governing permissions and limitations
    020     * under the License.
    021     */
    022
    023
    024    import java.sql.Connection;
    025    import java.util.Iterator;
    026
    027    import org.apache.turbine.services.security.TurbineSecurity;
    028    import org.apache.turbine.util.security.PermissionSet;
    029    import org.apache.turbine.util.security.TurbineSecurityException;
    030
    031    /**
    032     * This class represents a role played by the User associated with the
    033     * current Session.
    034     *
    035     * @author <a href="mailto:frank.kim@clearink.com">Frank Y. Kim</a>
    036     * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
    037     * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
    038     * @version $Id: TurbineRole.java 1078552 2011-03-06 19:58:46Z tv $
    039     */
    040    public class TurbineRole extends SecurityObject<Role> implements Role
    041    {
    042        /** Serial version */
    043        private static final long serialVersionUID = -1354408789347969126L;
    044
    045        /**
    046         * Constructs a new Role
    047         */
    048        public TurbineRole()
    049        {
    050            super();
    051        }
    052
    053        /**
    054         * Constructs a new Role with the sepcified name.
    055         *
    056         * @param name The name of the new object.
    057         */
    058        public TurbineRole(String name)
    059        {
    060            super(name);
    061        }
    062
    063        /** The permissions for this role. */
    064        private PermissionSet permissionSet = null;
    065
    066        /**
    067         * Returns the set of Permissions associated with this Role.
    068         *
    069         * @return A PermissionSet.
    070         * @exception Exception a generic exception.
    071         */
    072        public PermissionSet getPermissions()
    073                throws Exception
    074        {
    075            return permissionSet;
    076        }
    077
    078        /**
    079         * Sets the Permissions associated with this Role.
    080         *
    081         * @param permissionSet A PermissionSet.
    082         */
    083        public void setPermissions(PermissionSet permissionSet)
    084        {
    085            this.permissionSet = permissionSet;
    086        }
    087
    088        // These following methods are wrappers around TurbineSecurity
    089
    090        /**
    091         * Creates a new Role in the system.
    092         *
    093         * @param name The name of the new Role.
    094         * @return An object representing the new Role.
    095         * @throws TurbineSecurityException if the Role could not be created.
    096         */
    097        public Role create(String name)
    098                throws TurbineSecurityException
    099        {
    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    }