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