You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by ep...@apache.org on 2004/10/07 17:13:15 UTC

cvs commit: jakarta-turbine-fulcrum/security/memory/src/java/org/apache/fulcrum/security/memory/turbine MemoryTurbineModelManagerImpl.java

epugh       2004/10/07 08:13:15

  Modified:    security/hibernate/src/test DynamicHibernate.xml
                        BasicHibernate.xml ExtendedUserHibernate.xml
               security/memory/src/test TurbineMemory.xml
               security/memory project.xml
               security/xdocs changes.xml index.xml
               security/hibernate/src/test/org/apache/fulcrum/security/hibernate
                        PersistenceHelperTest.java
               security/memory/src/test/org/apache/fulcrum/security
                        StartingSecurityServicesTest.java
               security/hibernate project.xml
               security/memory/src/java/org/apache/fulcrum/security/memory/turbine
                        MemoryTurbineModelManagerImpl.java
  Added:       security/hibernate/src/test TurbineHibernate.hbm.xml
                        TurbineHibernate.xml
               security/hibernate/src/test/org/apache/fulcrum/security/hibernate/turbine
                        HibernateTurbineModelManagerTest.java
               security/hibernate/src/java/org/apache/fulcrum/security/hibernate/turbine
                        HibernateModelManagerImpl.java
  Log:
  Implementors of the Turbine model.
  
  Revision  Changes    Path
  1.3       +1 -1      jakarta-turbine-fulcrum/security/hibernate/src/test/DynamicHibernate.xml
  
  Index: DynamicHibernate.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/hibernate/src/test/DynamicHibernate.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DynamicHibernate.xml	9 Jan 2004 18:49:38 -0000	1.2
  +++ DynamicHibernate.xml	7 Oct 2004 15:13:14 -0000	1.3
  @@ -29,7 +29,7 @@
     
     <component
       role="org.apache.fulcrum.security.hibernate.PersistenceHelper"
  -    class="org.apache.fulcrum.security.hibernate.PersistenceHelperImpl">   
  +    class="org.apache.fulcrum.security.hibernate.PersistenceHelperHibernateServiceImpl">   
     </component>
       
     <component
  
  
  
  1.3       +1 -1      jakarta-turbine-fulcrum/security/hibernate/src/test/BasicHibernate.xml
  
  Index: BasicHibernate.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/hibernate/src/test/BasicHibernate.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BasicHibernate.xml	9 Jan 2004 18:49:38 -0000	1.2
  +++ BasicHibernate.xml	7 Oct 2004 15:13:14 -0000	1.3
  @@ -17,7 +17,7 @@
     
     <component
       role="org.apache.fulcrum.security.hibernate.PersistenceHelper"
  -    class="org.apache.fulcrum.security.hibernate.PersistenceHelperImpl">   
  +    class="org.apache.fulcrum.security.hibernate.PersistenceHelperHibernateServiceImpl">   
     </component>
       
     <component
  
  
  
  1.2       +1 -1      jakarta-turbine-fulcrum/security/hibernate/src/test/ExtendedUserHibernate.xml
  
  Index: ExtendedUserHibernate.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/hibernate/src/test/ExtendedUserHibernate.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ExtendedUserHibernate.xml	5 Dec 2003 23:20:24 -0000	1.1
  +++ ExtendedUserHibernate.xml	7 Oct 2004 15:13:14 -0000	1.2
  @@ -29,7 +29,7 @@
     
     <component
       role="org.apache.fulcrum.security.hibernate.PersistenceHelper"
  -    class="org.apache.fulcrum.security.hibernate.PersistenceHelperImpl">   
  +    class="org.apache.fulcrum.security.hibernate.PersistenceHelperHibernateServiceImpl">   
     </component>
       
     <component
  
  
  
  1.1                  jakarta-turbine-fulcrum/security/hibernate/src/test/TurbineHibernate.hbm.xml
  
  Index: TurbineHibernate.hbm.xml
  ===================================================================
  <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 2.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> 
  
    <hibernate-mapping auto-import="true">
      <class name="org.apache.fulcrum.security.model.turbine.entity.TurbinePermission" table="PERMISSION" >
        <id name="id" type="long" column="PERMISSION_ID" unsaved-value="0">
             <generator class="native"/>
          </id>
        <property name="name" column="NAME" type="string"/>     
        
        <set name="rolesAsSet" lazy="true" table="ROLE_PERMISSION" inverse="true" cascade="none">
          <key column="PERMISSION_ID"/>
          <many-to-many class="org.apache.fulcrum.security.model.turbine.entity.TurbineRole" column="ROLE_ID"/> 
        </set>           
      </class>
      
      <class name="org.apache.fulcrum.security.model.turbine.entity.TurbineRole" table="ROLE" >
        <id name="id" type="long" column="ROLE_ID" unsaved-value="0">
             <generator class="native"/>
          </id>
        <property name="name" column="NAME" type="string"/>      
        
      <set name="permissionsAsSet" lazy="true" table="ROLE_PERMISSION" cascade="none">
          <key column="ROLE_ID"/>
          <many-to-many class="org.apache.fulcrum.security.model.turbine.entity.TurbinePermission" column="PERMISSION_ID"/> 
        </set>
        
      <set inverse="true" name="userGroupRoleSet">
        <key column="role_id" />
        <one-to-many class="org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole" />
      </set>
             
      </class>   
  
      <class name="org.apache.fulcrum.security.model.turbine.entity.TurbineGroup" table="GROUPS" >
        <id name="id" type="long" column="GROUP_ID" unsaved-value="0">
             <generator class="native"/>
          </id>
        <property name="name" column="NAME" type="string"/>      
        
          <set inverse="true" name="userGroupRoleSet">
        <key column="group_id" />
        <one-to-many class="org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole" />
      </set>  
      </class>   
  
  	<class name="org.apache.fulcrum.security.model.turbine.entity.TurbineUser" 
  		table="HIBUSER" >
  		<id name="id" type="long" column="HIBUSER_ID" unsaved-value="0">
  			<generator class="native"/>
  		</id>
  		<property name="name" column="USERNAME" type="string"/>
  		<property name="password" column="PASSWORD" type="string"/>
      <set inverse="true" name="userGroupRoleSet">
        <key column="user_id" />
        <one-to-many class="org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole" />
      </set>
  	
  	</class>
      
    <class name="org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole" table="turbine_user_group_role"
      lazy="true">
  
      <composite-id>
          <key-many-to-one name="Role" column="role_id" 
              class="org.apache.fulcrum.security.model.turbine.entity.TurbineRole" 
              />
          <key-many-to-one name="User" column="user_id" 
              class="org.apache.fulcrum.security.model.turbine.entity.TurbineUser" 
              />
          <key-many-to-one name="Group" column="group_id" 
              class="org.apache.fulcrum.security.model.turbine.entity.TurbineGroup" 
              />
      </composite-id>
    </class>    
      
    </hibernate-mapping>
  
  
  1.1                  jakarta-turbine-fulcrum/security/hibernate/src/test/TurbineHibernate.xml
  
  Index: TurbineHibernate.xml
  ===================================================================
  <my-system>
    <component
      role="org.apache.fulcrum.security.SecurityService"
      class="org.apache.fulcrum.security.BaseSecurityService">   
    </component>  
  
    <component
      role="org.apache.fulcrum.security.UserManager"
      class="org.apache.fulcrum.security.hibernate.HibernateUserManagerImpl"> 
      <className>org.apache.fulcrum.security.model.turbine.entity.TurbineUser</className>  
    </component>   
    <component
      role="org.apache.fulcrum.security.GroupManager"
      class="org.apache.fulcrum.security.hibernate.HibernateGroupManagerImpl">   
      <className>org.apache.fulcrum.security.model.turbine.entity.TurbineGroup</className>    
    </component>     
  
    <component
      role="org.apache.fulcrum.security.RoleManager"
      class="org.apache.fulcrum.security.hibernate.HibernateRoleManagerImpl">   
      <className>org.apache.fulcrum.security.model.turbine.entity.TurbineRole</className>
    </component>     
  
    <component
      role="org.apache.fulcrum.security.PermissionManager"
      class="org.apache.fulcrum.security.hibernate.HibernatePermissionManagerImpl">  
      <className>org.apache.fulcrum.security.model.turbine.entity.TurbinePermission</className>    
    </component>     
    
    <component
      role="org.apache.fulcrum.security.hibernate.PersistenceHelper"
      class="org.apache.fulcrum.security.hibernate.PersistenceHelperHibernateServiceImpl">   
    </component>
      
    <component
      role="org.apache.fulcrum.security.ModelManager"
      class="org.apache.fulcrum.security.hibernate.turbine.HibernateModelManagerImpl">   
    </component>   
    <component 
      role="net.sf.hibernate.avalon.HibernateService"
      class="net.sf.hibernate.avalon.HibernateServiceImpl">   
      <parameter name="default.configuration" value="false"/>    
    <session-factory >
          <property name="show_sql">false</property>
          <property name="use_outer_join">auto</property>
  
          <!-- properties for this SessionFactory only -->
          <property name="hibernate.cglib.use_reflection_optimizer">false</property>
          <property name="connection.driver_class">com.mckoi.JDBCDriver</property>
          <property name="connection.username">test</property>
          <property name="connection.password">test</property>
          <property name="connection.url">jdbc:mckoi:local://./src/test/mcKoi.conf?create=true</property>
          <property name="dialect">net.sf.hibernate.dialect.MckoiDialect</property>        
  
          <!-- mapping files -->
      </session-factory>    
      <mappings>
        <resource>TurbineHibernate.hbm.xml</resource>
    </mappings>    
    </component>
  
     <component
      role="org.apache.fulcrum.security.authenticator.Authenticator"
      class="org.apache.fulcrum.security.authenticator.TextMatchAuthenticator">   
    </component>
    
    <!--component
      role="org.apache.fulcrum.security.model.ACLFactory"
      class="org.apache.fulcrum.security.model.turbine.TurbineACLFactory">   
    </component-->    
  </my-system>
  
  
  1.2       +4 -4      jakarta-turbine-fulcrum/security/memory/src/test/TurbineMemory.xml
  
  Index: TurbineMemory.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/memory/src/test/TurbineMemory.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TurbineMemory.xml	5 Dec 2003 23:21:55 -0000	1.1
  +++ TurbineMemory.xml	7 Oct 2004 15:13:14 -0000	1.2
  @@ -7,24 +7,24 @@
     <component
       role="org.apache.fulcrum.security.UserManager"
       class="org.apache.fulcrum.security.memory.turbine.MemoryTurbineUserManagerImpl">  
  -    <className>org.apache.fulcrum.security.model.dynamic.entity.DynamicUser</className>     
  +    <className>org.apache.fulcrum.security.model.turbine.entity.TurbineUser</className>     
     </component>   
     <component
       role="org.apache.fulcrum.security.GroupManager"
       class="org.apache.fulcrum.security.memory.MemoryGroupManagerImpl">   
  -    <className>org.apache.fulcrum.security.model.dynamic.entity.DynamicGroup</className>
  +    <className>org.apache.fulcrum.security.model.turbine.entity.TurbineGroup</className>
     </component>     
   
     <component
       role="org.apache.fulcrum.security.RoleManager"
       class="org.apache.fulcrum.security.memory.MemoryRoleManagerImpl">   
  -    <className>org.apache.fulcrum.security.model.dynamic.entity.DynamicRole</className>
  +    <className>org.apache.fulcrum.security.model.turbine.entity.TurbineRole</className>
     </component>     
   
     <component
       role="org.apache.fulcrum.security.PermissionManager"
       class="org.apache.fulcrum.security.memory.MemoryPermissionManagerImpl">   
  -    <className>org.apache.fulcrum.security.model.dynamic.entity.DynamicPermission</className>    
  +    <className>org.apache.fulcrum.security.model.turbine.entity.TurbinePermission</className>    
     </component>     
   
     <component
  
  
  
  1.1                  jakarta-turbine-fulcrum/security/hibernate/src/test/org/apache/fulcrum/security/hibernate/turbine/HibernateTurbineModelManagerTest.java
  
  Index: HibernateTurbineModelManagerTest.java
  ===================================================================
  package org.apache.fulcrum.security.hibernate.turbine;
  /*
   *  Copyright 2001-2004 The Apache Software Foundation
   *
   *  Licensed under the Apache 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.apache.org/licenses/LICENSE-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.
   */
  
  import net.sf.hibernate.avalon.HibernateService;
  
  import org.apache.fulcrum.security.SecurityService;
  import org.apache.fulcrum.security.hibernate.HibernateHelper;
  import org
      .apache
      .fulcrum
      .security
      .model
      .turbine
      .test
      .AbstractTurbineModelManagerTest;
  
  /**
   * @author Eric Pugh
   *
   * Test the memory implementation of the turbine model..
   */
  public class HibernateTurbineModelManagerTest
      extends AbstractTurbineModelManagerTest
  {
  
      public void setUp() throws Exception
      {
  
          try
          {
              this.setRoleFileName(null);
              this.setConfigurationFileName("src/test/TurbineHibernate.xml");
              HibernateService hibernateService =
                  (HibernateService) lookup(HibernateService.ROLE);
              HibernateHelper.exportSchema(hibernateService.getConfiguration());
              securityService = (SecurityService) lookup(SecurityService.ROLE);
              super.setUp();
  
          }
          catch (Exception e)
          {
              fail(e.toString());
          }
  
      }
      public void tearDown()
      {
          super.tearDown();
  		modelManager = null;
          securityService = null;
      }
      /**
      	* Constructor for MemoryPermissionManagerTest.
      	* @param arg0
      	*/
      public HibernateTurbineModelManagerTest(String arg0)
      {
          super(arg0);
      }
  }
  
  
  
  1.7       +2 -2      jakarta-turbine-fulcrum/security/memory/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/memory/project.xml,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- project.xml	5 Jul 2004 19:08:11 -0000	1.6
  +++ project.xml	7 Oct 2004 15:13:15 -0000	1.7
  @@ -3,13 +3,13 @@
     <extend>${basedir}/../project.xml</extend>
     <id>fulcrum-security-memory</id>
     <name>Fulcrum Security Memory Impl</name>
  -  <currentVersion>1.0.6</currentVersion>
  +  <currentVersion>1.0.6-dev</currentVersion>
   
     <dependencies>
       <dependency>
         <groupId>fulcrum</groupId>   
         <artifactId>fulcrum-security-api</artifactId>
  -      <version>1.0.6</version>
  +      <version>1.0.7-dev</version>
       </dependency>      
       <dependency>
         <groupId>fulcrum</groupId>   
  
  
  
  1.21      +5 -0      jakarta-turbine-fulcrum/security/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/xdocs/changes.xml,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- changes.xml	21 Sep 2004 12:04:50 -0000	1.20
  +++ changes.xml	7 Oct 2004 15:13:15 -0000	1.21
  @@ -6,6 +6,11 @@
     </properties>
   
     <body>
  +    <release version="1.0.7" date="in cvs">
  +      <action dev="epugh" type="add">
  +        Properly flesh out Turbine model of security.
  +      </action> 
  +    </release>
       <release version="1.0.6" date="in cvs">
         <action dev="epugh" type="add" due-to="Ben Gidley">
           Add to the dynamic model the ability to add delegators for users.  A user can have
  
  
  
  1.10      +5 -5      jakarta-turbine-fulcrum/security/xdocs/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/xdocs/index.xml,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- index.xml	21 Sep 2004 12:04:50 -0000	1.9
  +++ index.xml	7 Oct 2004 15:13:15 -0000	1.10
  @@ -25,14 +25,14 @@
       <subsection name="Matrix">    
         <table>
           <tr>
  -          <th/><th colspan="2">Basic Model</th><th colspan="5">Dynamic Model</th><th colspan="4">Turbine Model</th>
  +          <th/><th colspan="2">Basic Model</th><th colspan="5">Dynamic Model</th><th colspan="5">Turbine Model</th>
           </tr>
           <tr>
  -          <th/><th>User</th><th>Group</th><th>User</th><th>Group</th><th>Role</th><th>Permission</th><th>Delegates</th><th>User</th><th>Group</th><th>Role</th><th>Permission</th>
  +          <th/><th>User</th><th>Group</th><th>User</th><th>Group</th><th>Role</th><th>Permission</th><th>Delegates</th><th>User</th><th>Group</th><th>Role</th><th>Permission</th><th>UserGroupRole</th>
           </tr>
  -        <tr><th>Memory</th><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td></tr>
  -        <tr><th>Hibernate</th><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td></td><td></td><td></td><td></td></tr>
  -        <tr><th>NT</th><td>X</td><td>X</td><td>X</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
  +        <tr><th>Memory</th><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td></tr>
  +        <tr><th>Hibernate</th><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td><td>X</td></tr>
  +        <tr><th>NT</th><td>X</td><td>X</td><td>X</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
         </table>
       </subsection>
     </section>
  
  
  
  1.1                  jakarta-turbine-fulcrum/security/hibernate/src/java/org/apache/fulcrum/security/hibernate/turbine/HibernateModelManagerImpl.java
  
  Index: HibernateModelManagerImpl.java
  ===================================================================
  package org.apache.fulcrum.security.hibernate.turbine;
  /*
   *  Copyright 2001-2004 The Apache Software Foundation
   *
   *  Licensed under the Apache 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.apache.org/licenses/LICENSE-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.
   */
  import java.util.Iterator;
  
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.fulcrum.security.entity.Group;
  import org.apache.fulcrum.security.entity.Permission;
  import org.apache.fulcrum.security.entity.Role;
  import org.apache.fulcrum.security.entity.User;
  import org.apache.fulcrum.security.hibernate.PersistenceHelper;
  import org.apache.fulcrum.security.model.turbine.AbstractTurbineModelManager;
  import org.apache.fulcrum.security.model.turbine.TurbineModelManager;
  import org.apache.fulcrum.security.model.turbine.entity.TurbineGroup;
  import org.apache.fulcrum.security.model.turbine.entity.TurbinePermission;
  import org.apache.fulcrum.security.model.turbine.entity.TurbineRole;
  import org.apache.fulcrum.security.model.turbine.entity.TurbineUser;
  import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
  import org.apache.fulcrum.security.util.DataBackendException;
  import org.apache.fulcrum.security.util.UnknownEntityException;
  /**
   * This implementation persists to a database via Hibernate.
   * 
   * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
   * @version $Id: HibernateModelManagerImpl.java,v 1.1 2004/10/07 15:13:15 epugh Exp $
   */
  public class HibernateModelManagerImpl extends AbstractTurbineModelManager implements TurbineModelManager
  {
      /** Logging */
      private static Log log = LogFactory.getLog(HibernateModelManagerImpl.class);
  
      private PersistenceHelper persistenceHelper;
      /**
  	 * Grants a Role a Permission
  	 * 
  	 * @param role the Role.
  	 * @param permission the Permission.
  	 * @throws DataBackendException if there was an error accessing the data backend.
  	 * @throws UnknownEntityException if role or permission is not present.
  	 */
      public synchronized void grant(Role role, Permission permission)
          throws DataBackendException, UnknownEntityException
      {
          boolean roleExists = false;
          boolean permissionExists = false;
          try
          {
              roleExists = getRoleManager().checkExists(role);
              permissionExists = getPermissionManager().checkExists(permission);
              
              if (roleExists && permissionExists)
              {
                  ((TurbineRole) role).addPermission(permission);
                  ((TurbinePermission) permission).addRole(role);
                  getPersistenceHelper().updateEntity(permission);
                  getPersistenceHelper().updateEntity(role);                
                  return;
              }
          }
          catch (Exception e)
          {
              throw new DataBackendException("grant(Role,Permission) failed", e);
          }
          if (!roleExists)
          {
              throw new UnknownEntityException("Unknown role '" + role.getName() + "'");
          }
          if (!permissionExists)
          {
              throw new UnknownEntityException("Unknown permission '" + permission.getName() + "'");
          }
      }
      /**
  	 * Revokes a Permission from a Role.
  	 * 
  	 * @param role the Role.
  	 * @param permission the Permission.
  	 * @throws DataBackendException if there was an error accessing the data backend.
  	 * @throws UnknownEntityException if role or permission is not present.
  	 */
      public synchronized void revoke(Role role, Permission permission)
          throws DataBackendException, UnknownEntityException
      {
          boolean roleExists = false;
          boolean permissionExists = false;
          try
          {
              roleExists = getRoleManager().checkExists(role);
              permissionExists = getPermissionManager().checkExists(permission);
              if (roleExists && permissionExists)
              {
                  ((TurbineRole) role).removePermission(permission);
                  ((TurbinePermission) permission).removeRole(role);
                  getPersistenceHelper().updateEntity(role);
                  getPersistenceHelper().updateEntity(permission);
                  return;
              }
          }
          catch (Exception e)
          {
              throw new DataBackendException("revoke(Role,Permission) failed", e);
          }
          finally
          {
          }
          if (!roleExists)
          {
              throw new UnknownEntityException("Unknown role '" + role.getName() + "'");
          }
          if (!permissionExists)
          {
              throw new UnknownEntityException("Unknown permission '" + permission.getName() + "'");
          }
      }  
  
      /**
  	 * @return Returns the persistenceHelper.
  	 */
  	public PersistenceHelper getPersistenceHelper() throws DataBackendException
  	{
  		if (persistenceHelper == null)
  		{
  			persistenceHelper = (PersistenceHelper)resolve(PersistenceHelper.ROLE);
  		}
  		return persistenceHelper;
  	}
      
       public void grant(User user, Group group, Role role) throws DataBackendException, UnknownEntityException {
              boolean roleExists = false;
              boolean userExists = false;
              boolean groupExists = false;
              try {
                  roleExists = getRoleManager().checkExists(role);
                  userExists = getUserManager().checkExists(user);
                  groupExists = getGroupManager().checkExists(group);
                  if (roleExists && groupExists && userExists) {
                      TurbineUserGroupRole ugr = new TurbineUserGroupRole();
                      ugr.setGroup(group);
                      ugr.setRole(role);
                      ugr.setUser(user);
                      ((TurbineUser) user).addUserGroupRole(ugr);
                      ((TurbineGroup) group).addUserGroupRole(ugr);
                      ((TurbineRole) role).addUserGroupRole(ugr);
                      getPersistenceHelper().updateEntity(user);
                      getPersistenceHelper().updateEntity(group);
                      getPersistenceHelper().updateEntity(role);
                      return;
                  }
              } catch (Exception e) {
                  throw new DataBackendException("grant(Role,Permission) failed", e);
              }
  
              if (!roleExists) {
                  throw new UnknownEntityException("Unknown role '" + role.getName() + "'");
              }
              if (!groupExists) {
                  throw new UnknownEntityException("Unknown group '" + group.getName() + "'");
              }
              if (!userExists) {
                  throw new UnknownEntityException("Unknown user '" + user.getName() + "'");
              }
  
          }
  
          public void revoke(User user, Group group, Role role) throws DataBackendException, UnknownEntityException {
              boolean roleExists = false;
              boolean userExists = false;
              boolean groupExists = false;
              try {
                  roleExists = getRoleManager().checkExists(role);
                  userExists = getUserManager().checkExists(user);
                  groupExists = getGroupManager().checkExists(group);
                  if (roleExists && groupExists && userExists) {
                      boolean ugrFound = false;
                      TurbineUserGroupRole ugr = null;
                      for(Iterator i = ((TurbineUser) user).getUserGroupRoleSet().iterator();i.hasNext();){
                          ugr = (TurbineUserGroupRole)i.next();
                          if(ugr.getUser().equals(user)&& ugr.getGroup().equals(group) && ugr.getRole().equals(role)){
                              ugrFound=true;
                              break;
                          }
                      }
                      if(!ugrFound){
                          throw new UnknownEntityException("Could not find User/Group/Role");
                      }
  
                      ((TurbineUser) user).removeUserGroupRole(ugr);
                      ((TurbineGroup) group).removeUserGroupRole(ugr);
                      ((TurbineRole) role).removeUserGroupRole(ugr);
                      getPersistenceHelper().updateEntity(user);
                      getPersistenceHelper().updateEntity(group);
                      getPersistenceHelper().updateEntity(role);
                      return;
                  }
              } catch (Exception e) {
                  throw new DataBackendException("grant(Role,Permission) failed", e);
              }
  
              if (!roleExists) {
                  throw new UnknownEntityException("Unknown role '" + role.getName() + "'");
              }
              if (!groupExists) {
                  throw new UnknownEntityException("Unknown group '" + group.getName() + "'");
              }
              if (!userExists) {
                  throw new UnknownEntityException("Unknown user '" + user.getName() + "'");
              }
  
          } 
  }
  
  
  1.4       +15 -9     jakarta-turbine-fulcrum/security/hibernate/src/test/org/apache/fulcrum/security/hibernate/PersistenceHelperTest.java
  
  Index: PersistenceHelperTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/hibernate/src/test/org/apache/fulcrum/security/hibernate/PersistenceHelperTest.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PersistenceHelperTest.java	7 Jul 2004 17:29:37 -0000	1.3
  +++ PersistenceHelperTest.java	7 Oct 2004 15:13:15 -0000	1.4
  @@ -55,17 +55,23 @@
           
   		SecurityService securityService = (SecurityService) lookup(SecurityService.ROLE);
   		HibernateGroupManagerImpl groupManager = (HibernateGroupManagerImpl)securityService.getGroupManager();
  -		assertSame(hibernateService,groupManager.getPersistenceHelper().getHibernateService());
  -		groupManager.getPersistenceHelper().setHibernateService(hibernateService2);
  -		assertSame(hibernateService2,groupManager.getPersistenceHelper().getHibernateService());
  +        PersistenceHelper persistenceHelper = groupManager.getPersistenceHelper();
  +        assertTrue(persistenceHelper instanceof PersistenceHelperHibernateServiceImpl);
  +        PersistenceHelperHibernateServiceImpl persistenceHelperFromGroupManager = (PersistenceHelperHibernateServiceImpl)persistenceHelper;
  +		assertSame(hibernateService,persistenceHelperFromGroupManager.getHibernateService());    
  +        persistenceHelperFromGroupManager.setHibernateService(hibernateService2);
  +		assertSame(hibernateService2,persistenceHelperFromGroupManager.getHibernateService());
   		
   		HibernateRoleManagerImpl roleManager = (HibernateRoleManagerImpl)securityService.getRoleManager();
  -		assertSame(hibernateService2,roleManager.getPersistenceHelper().getHibernateService());
  -		assertNotSame(hibernateService,roleManager.getPersistenceHelper().getHibernateService());
  -		roleManager.getPersistenceHelper().setHibernateService(hibernateService);
  -		assertSame(roleManager.getPersistenceHelper().getHibernateService(),groupManager.getPersistenceHelper().getHibernateService());
  +        PersistenceHelperHibernateServiceImpl persistenceHelperFromRoleManager = (PersistenceHelperHibernateServiceImpl)roleManager.getPersistenceHelper();
  +		assertSame(hibernateService2,persistenceHelperFromRoleManager.getHibernateService());
  +		assertNotSame(hibernateService,persistenceHelperFromRoleManager.getHibernateService());
  +		persistenceHelperFromRoleManager.setHibernateService(hibernateService);
  +		assertSame(persistenceHelperFromRoleManager.getHibernateService(),persistenceHelperFromGroupManager.getHibernateService());
   		
   		roleManager = (HibernateRoleManagerImpl)securityService.getRoleManager();
  -		assertSame(roleManager.getPersistenceHelper().getHibernateService(),groupManager.getPersistenceHelper().getHibernateService());
  +        PersistenceHelperHibernateServiceImpl persistenceHelperFromRoleManager2 = (PersistenceHelperHibernateServiceImpl)roleManager.getPersistenceHelper();
  +        assertSame(persistenceHelperFromRoleManager2.getHibernateService(),persistenceHelperFromRoleManager.getHibernateService());
  +        assertSame(persistenceHelperFromRoleManager2.getHibernateService(),persistenceHelperFromGroupManager.getHibernateService());
       }
   }
  
  
  
  1.3       +3 -2      jakarta-turbine-fulcrum/security/memory/src/test/org/apache/fulcrum/security/StartingSecurityServicesTest.java
  
  Index: StartingSecurityServicesTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/memory/src/test/org/apache/fulcrum/security/StartingSecurityServicesTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StartingSecurityServicesTest.java	7 Jul 2004 16:51:27 -0000	1.2
  +++ StartingSecurityServicesTest.java	7 Oct 2004 15:13:15 -0000	1.3
  @@ -18,6 +18,7 @@
   
   import org.apache.fulcrum.security.model.basic.BasicModelManager;
   import org.apache.fulcrum.security.model.dynamic.DynamicModelManager;
  +import org.apache.fulcrum.security.model.turbine.TurbineModelManager;
   import org.apache.fulcrum.security.memory.MemoryGroupManagerImpl;
   import org.apache.fulcrum.security.memory.MemoryPermissionManagerImpl;
   import org.apache.fulcrum.security.memory.MemoryRoleManagerImpl;
  @@ -77,7 +78,7 @@
                   instanceof org.apache.fulcrum.security.memory.turbine
                       .MemoryTurbineModelManagerImpl);
           assertTrue(
  -            securityService.getModelManager() instanceof DynamicModelManager);
  +            securityService.getModelManager() instanceof TurbineModelManager);
       }
   
       public void testStartingBasicModel() throws Exception
  
  
  
  1.15      +1 -1      jakarta-turbine-fulcrum/security/hibernate/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/hibernate/project.xml,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- project.xml	21 Sep 2004 12:03:50 -0000	1.14
  +++ project.xml	7 Oct 2004 15:13:15 -0000	1.15
  @@ -9,7 +9,7 @@
       <dependency>
         <groupId>fulcrum</groupId>   
         <artifactId>fulcrum-security-api</artifactId>
  -      <version>1.0.6</version>
  +      <version>1.0.7-dev</version>
       </dependency>   
       <dependency>
         <groupId>fulcrum</groupId>   
  
  
  
  1.3       +156 -38   jakarta-turbine-fulcrum/security/memory/src/java/org/apache/fulcrum/security/memory/turbine/MemoryTurbineModelManagerImpl.java
  
  Index: MemoryTurbineModelManagerImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/security/memory/src/java/org/apache/fulcrum/security/memory/turbine/MemoryTurbineModelManagerImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MemoryTurbineModelManagerImpl.java	7 Jul 2004 16:51:27 -0000	1.2
  +++ MemoryTurbineModelManagerImpl.java	7 Oct 2004 15:13:15 -0000	1.3
  @@ -1,4 +1,5 @@
   package org.apache.fulcrum.security.memory.turbine;
  +
   /*
    *  Copyright 2001-2004 The Apache Software Foundation
    *
  @@ -14,67 +15,184 @@
    *  See the License for the specific language governing permissions and
    *  limitations under the License.
    */
  +import java.util.Iterator;
  +
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.apache.fulcrum.security.entity.Group;
  +import org.apache.fulcrum.security.entity.Permission;
   import org.apache.fulcrum.security.entity.Role;
   import org.apache.fulcrum.security.entity.User;
   import org.apache.fulcrum.security.memory.dynamic.MemoryModelManagerImpl;
  +import org.apache.fulcrum.security.model.turbine.AbstractTurbineModelManager;
   import org.apache.fulcrum.security.model.turbine.TurbineModelManager;
  +import org.apache.fulcrum.security.model.turbine.entity.TurbineGroup;
  +import org.apache.fulcrum.security.model.turbine.entity.TurbinePermission;
  +import org.apache.fulcrum.security.model.turbine.entity.TurbineRole;
  +import org.apache.fulcrum.security.model.turbine.entity.TurbineUser;
  +import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
   import org.apache.fulcrum.security.util.DataBackendException;
  -import org.apache.fulcrum.security.util.EntityExistsException;
   import org.apache.fulcrum.security.util.UnknownEntityException;
   
  -
   /**
  - * This implementation keeps all objects in memory.  This is mostly meant to help
  + * This implementation keeps all objects in memory. This is mostly meant to help
    * with testing and prototyping of ideas.
  - *
  - * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
  - * @version $Id$
  + * 
  + * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
  + * @version $Id: MemoryTurbineModelManagerImpl.java,v 1.2 2004/07/07 16:51:27
  + *          epugh Exp $
    */
  -public class MemoryTurbineModelManagerImpl
  -    extends MemoryModelManagerImpl
  -    implements TurbineModelManager
  -{
  +public class MemoryTurbineModelManagerImpl extends AbstractTurbineModelManager implements TurbineModelManager {
       /** Logging */
       private static Log log = LogFactory.getLog(MemoryModelManagerImpl.class);
   
       /**
  -      * Provides a reference to the Group object that represents the
  -      * <a href="#global">global group</a>.
  -      *
  -      * @return A Group object that represents the global group.
  -      */
  -    public Group getGlobalGroup() throws DataBackendException
  -    {
  -        Group g = null;
  -        try
  -        {
  -            g = getGroupManager().getGroupByName(GLOBAL_GROUP_NAME);
  -        }
  -        catch (UnknownEntityException uee)
  -        {
  -            g = getGroupManager().getGroupInstance(GLOBAL_GROUP_NAME);
  -            try
  -            {
  -				getGroupManager().addGroup(g);
  +     * Grants a Role a Permission
  +     * 
  +     * @param role
  +     *            the Role.
  +     * @param permission
  +     *            the Permission.
  +     * @throws DataBackendException
  +     *             if there was an error accessing the data backend.
  +     * @throws UnknownEntityException
  +     *             if role or permission is not present.
  +     */
  +    public synchronized void grant(Role role, Permission permission) throws DataBackendException,
  +            UnknownEntityException {
  +        boolean roleExists = false;
  +        boolean permissionExists = false;
  +        try {
  +            roleExists = getRoleManager().checkExists(role);
  +            permissionExists = getPermissionManager().checkExists(permission);
  +            if (roleExists && permissionExists) {
  +                ((TurbineRole) role).addPermission(permission);
  +                ((TurbinePermission) permission).addRole(role);
  +                return;
               }
  -            catch (EntityExistsException eee)
  -            {
  -                throw new DataBackendException(eee.getMessage(), eee);
  +        } catch (Exception e) {
  +            throw new DataBackendException("grant(Role,Permission) failed", e);
  +        }
  +
  +        if (!roleExists) {
  +            throw new UnknownEntityException("Unknown role '" + role.getName() + "'");
  +        }
  +        if (!permissionExists) {
  +            throw new UnknownEntityException("Unknown permission '" + permission.getName() + "'");
  +        }
  +    }
  +
  +    /**
  +     * Revokes a Permission from a Role.
  +     * 
  +     * @param role
  +     *            the Role.
  +     * @param permission
  +     *            the Permission.
  +     * @throws DataBackendException
  +     *             if there was an error accessing the data backend.
  +     * @throws UnknownEntityException
  +     *             if role or permission is not present.
  +     */
  +    public synchronized void revoke(Role role, Permission permission) throws DataBackendException,
  +            UnknownEntityException {
  +        boolean roleExists = false;
  +        boolean permissionExists = false;
  +        try {
  +            roleExists = getRoleManager().checkExists(role);
  +            permissionExists = getPermissionManager().checkExists(permission);
  +            if (roleExists && permissionExists) {
  +                ((TurbineRole) role).removePermission(permission);
  +                ((TurbinePermission) permission).removeRole(role);
  +                return;
               }
  +        } catch (Exception e) {
  +            throw new DataBackendException("revoke(Role,Permission) failed", e);
  +        }
   
  +        if (!roleExists) {
  +            throw new UnknownEntityException("Unknown role '" + role.getName() + "'");
  +        }
  +        if (!permissionExists) {
  +            throw new UnknownEntityException("Unknown permission '" + permission.getName() + "'");
           }
  -        return g;
       }
   
  -    public void grant(User user, Group group, Role role){
  -        
  +    public void grant(User user, Group group, Role role) throws DataBackendException, UnknownEntityException {
  +        boolean roleExists = false;
  +        boolean userExists = false;
  +        boolean groupExists = false;
  +        try {
  +            roleExists = getRoleManager().checkExists(role);
  +            userExists = getUserManager().checkExists(user);
  +            groupExists = getGroupManager().checkExists(group);
  +            if (roleExists && groupExists && userExists) {
  +                TurbineUserGroupRole ugr = new TurbineUserGroupRole();
  +                ugr.setGroup(group);
  +                ugr.setRole(role);
  +                ugr.setUser(user);
  +                ((TurbineUser) user).addUserGroupRole(ugr);
  +                ((TurbineGroup) group).addUserGroupRole(ugr);
  +                ((TurbineRole) role).addUserGroupRole(ugr);
  +                return;
  +            }
  +        } catch (Exception e) {
  +            throw new DataBackendException("grant(Role,Permission) failed", e);
  +        }
  +
  +        if (!roleExists) {
  +            throw new UnknownEntityException("Unknown role '" + role.getName() + "'");
  +        }
  +        if (!groupExists) {
  +            throw new UnknownEntityException("Unknown group '" + group.getName() + "'");
  +        }
  +        if (!userExists) {
  +            throw new UnknownEntityException("Unknown user '" + user.getName() + "'");
  +        }
  +
       }
  -	public void revoke(User user, Group group, Role role){
  -    
  -	}
  -   
   
  +    public void revoke(User user, Group group, Role role) throws DataBackendException, UnknownEntityException {
  +        boolean roleExists = false;
  +        boolean userExists = false;
  +        boolean groupExists = false;
  +        try {
  +            roleExists = getRoleManager().checkExists(role);
  +            userExists = getUserManager().checkExists(user);
  +            groupExists = getGroupManager().checkExists(group);
  +            if (roleExists && groupExists && userExists) {
  +                boolean ugrFound = false;
  +                TurbineUserGroupRole ugr = null;
  +                for(Iterator i = ((TurbineUser) user).getUserGroupRoleSet().iterator();i.hasNext();){
  +                    ugr = (TurbineUserGroupRole)i.next();
  +                    if(ugr.getUser().equals(user)&& ugr.getGroup().equals(group) && ugr.getRole().equals(role)){
  +                        ugrFound=true;
  +                        break;
  +                    }
  +                }
  +                if(!ugrFound){
  +                    throw new UnknownEntityException("Could not find User/Group/Role");
  +                }
  +
  +                ((TurbineUser) user).removeUserGroupRole(ugr);
  +                ((TurbineGroup) group).removeUserGroupRole(ugr);
  +                ((TurbineRole) role).removeUserGroupRole(ugr);
  +                return;
  +            }
  +        } catch (Exception e) {
  +            throw new DataBackendException("grant(Role,Permission) failed", e);
  +        }
  +
  +        if (!roleExists) {
  +            throw new UnknownEntityException("Unknown role '" + role.getName() + "'");
  +        }
  +        if (!groupExists) {
  +            throw new UnknownEntityException("Unknown group '" + group.getName() + "'");
  +        }
  +        if (!userExists) {
  +            throw new UnknownEntityException("Unknown user '" + user.getName() + "'");
  +        }
  +
  +    }
   }
  +
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org