You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by tv...@apache.org on 2007/04/03 23:24:40 UTC

svn commit: r525284 [1/2] - in /jakarta/turbine/fulcrum/trunk/security/api/src: java/org/apache/fulcrum/security/model/basic/entity/ java/org/apache/fulcrum/security/model/basic/entity/impl/ java/org/apache/fulcrum/security/model/dynamic/entity/ java/o...

Author: tv
Date: Tue Apr  3 14:24:38 2007
New Revision: 525284

URL: http://svn.apache.org/viewvc?view=rev&rev=525284
Log:
Changed BasicUser, BasicGroup, DynamicUser, DynamicGroup, DynamicRole, 
DynamicPermission, TurbineUser, TurbineGroup, TurbineRole and TurbinePermission to
interfaces. Added default implementations for existing security services.
Changed all occurences of these classes in tests to use BasicUserImpl, BasicGroupImpl, 
DynamicUserImpl, DynamicGroupImpl, DynamicRoleImpl, DynamicPermissionImpl, 
TurbineUserImpl, TurbineGroupImpl, TurbineRoleImpl and TurbinePermissionImpl instead.
Fixes TRB-40.

Added:
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicGroupImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicUserImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicGroupImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicPermissionImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicRoleImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicUserImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineGroupImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbinePermissionImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineRoleImpl.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineUserImpl.java
Modified:
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicGroup.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicUser.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicGroup.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicPermission.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicRole.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicUser.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineGroup.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbinePermission.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineRole.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUser.java
    jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRole.java
    jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/CryptoAuthenticatorTest.java
    jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/NoOpAuthenticatorTest.java
    jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/TextMatchAuthenticatorTest.java
    jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/model/ACLFactoryTest.java
    jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/util/GroupSetTest.java
    jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/util/RoleSetTest.java
    jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/util/SecuritySetTest.java
    jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/util/UserSetTest.java

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicGroup.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicGroup.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicGroup.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicGroup.java Tue Apr  3 14:24:38 2007
@@ -19,7 +19,6 @@
 
 import org.apache.fulcrum.security.entity.Group;
 import org.apache.fulcrum.security.entity.User;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
 import org.apache.fulcrum.security.util.UserSet;
 
 /**
@@ -29,59 +28,47 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
  * @version $Id$
  */
-public class BasicGroup extends SecurityEntityImpl implements Group
+public interface BasicGroup extends Group
 {
-	private Set userSet = new UserSet();
-	/**
-	 * @return
-	 */
-	public UserSet getUsers()
-	{
-	    if( userSet instanceof UserSet )
-	        return (UserSet) userSet;
-	    else {
-	        userSet = new UserSet(userSet);
-	        return (UserSet)userSet;
-	    }
-	}
+    /**
+     * Get the users that are part of this group
+     * 
+     * @return a set of users
+     */
+	public UserSet getUsers();
 
-	/**
-	 * @param userSet
+    /**
+     * Set the users that are part of this group
+     * 
+	 * @param userSet a set of users
 	 */
-	public void setUsers(UserSet userSet)
-	{
-	    if( userSet != null )
-	        this.userSet = userSet;
-	    else
-	        this.userSet = new UserSet();
-	}
+	public void setUsers(UserSet userSet);
     
-	/**
-	 * @return
-	 */
-	public Set getUsersAsSet()
-	{
-	    return userSet;
-	}
-
-	/**
-	 * @param userSet
-	 */
-	public void setUsersAsSet(Set users)
-	{
-	    this.userSet = users;
-	}    
+    /**
+     * Get the users that are part of this group as a Set
+     * 
+     * @return a set of users
+     */
+	public Set getUsersAsSet();
 
+    /**
+     * Set the users that are part of this group as a Set
+     * 
+     * @param userSet a set of users
+     */
+	public void setUsersAsSet(Set users);
 	
-	
-	public void addUser(User user)
-	{
-		getUsers().add(user);
-	}
-	public void removeUser(User user)
-	{
-		getUsers().remove(user);
-	}
+    /**
+     * Add a user to this group
+     * 
+     * @param user the user to add
+     */
+	public void addUser(User user);
     
-	
+    /**
+     * Remove a user from this group
+     * 
+     * @param user the user to remove
+     */
+	public void removeUser(User user);
 }

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicUser.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicUser.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicUser.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/BasicUser.java Tue Apr  3 14:24:38 2007
@@ -17,10 +17,8 @@
 
 import java.util.Set;
 
-import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.apache.fulcrum.security.entity.Group;
 import org.apache.fulcrum.security.entity.User;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
 import org.apache.fulcrum.security.util.GroupSet;
 
 /**
@@ -30,79 +28,47 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
  * @version $Id$
  */
-public class BasicUser extends SecurityEntityImpl implements User
+public interface BasicUser extends User
 {
     /**
-     * Serial number 
+     * Get the groups this user is part of
+     * 
+     * @return a set of groups
+     */
+    public GroupSet getGroups();
+
+    /**
+     * Set the groups this user is part of
+     * 
+     * @param groups the set of groups
+     */
+    public void setGroups(GroupSet groups);
+
+    /**
+     * Remove the group from the list of groups 
+     * 
+     * @param group the group to remove
      */
-    private static final long serialVersionUID = 7911631916604987203L;
+    public void removeGroup(Group group);
 
-    private String password;
-    private Set groupSet = new GroupSet();
+    /**
+     * Add the group to the list of groups 
+     * 
+     * @param group the group to add
+     */
+    public void addGroup(Group group);
 
     /**
-     * @return
-     */
-    public String getPassword()
-    {
-        return password;
-    }
-    /**
-     * @param password
-     */
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-    /**
-    * @return
-    */
-    public GroupSet getGroups()
-    {
-        if( groupSet instanceof GroupSet )
-            return (GroupSet) groupSet;
-        else {
-            groupSet = new GroupSet(groupSet);
-            return (GroupSet)groupSet;
-        }
-    }
-    /**
-     * @param groups
-     */
-    public void setGroups(GroupSet groups)
-    {
-        if( groups != null )
-            this.groupSet = groups;
-        else
-            this.groupSet = new GroupSet();
-    }
-    public void removeGroup(Group group)
-    {
-        getGroups().remove(group);
-    }
-    public void addGroup(Group group)
-    {
-        getGroups().add(group);
-    }
-    public void setGroupsAsSet(Set groups)
-    {
-        this.groupSet = groups;
-    }
-    public Set getGroupsAsSet()
-    {
-        return groupSet;
-    }
-
-    /**
-     * Calculate a hash code for this object
-     * 
-     * @see org.apache.fulcrum.security.entity.impl.SecurityEntityImpl#hashCode()
-     */
-    public int hashCode()
-    {
-        return new HashCodeBuilder(43, 19)
-                    .append(getPassword())
-                    .appendSuper(super.hashCode())
-                    .toHashCode();
-    }
+     * Set the groups this user is part of as a Set
+     * 
+     * @param groups the set of groups
+     */
+    public void setGroupsAsSet(Set groups);
+
+    /**
+     * Get the groups this user is part of as a Set
+     * 
+     * @return a set of groups
+     */
+    public Set getGroupsAsSet();
 }

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicGroupImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicGroupImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicGroupImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicGroupImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,87 @@
+package org.apache.fulcrum.security.model.basic.entity.impl;
+/*
+ *  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.Set;
+
+import org.apache.fulcrum.security.entity.User;
+import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.basic.entity.BasicGroup;
+import org.apache.fulcrum.security.util.UserSet;
+
+/**
+ * Represents the "basic" model where users are part of groups, but nothing
+ * else.
+ * 
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
+ * @version $Id: BasicGroup.java 223057 2004-07-05 19:28:23Z epugh $
+ */
+public class BasicGroupImpl extends SecurityEntityImpl implements BasicGroup
+{
+	private Set userSet = new UserSet();
+	/**
+	 * @return
+	 */
+	public UserSet getUsers()
+	{
+	    if( userSet instanceof UserSet )
+	        return (UserSet) userSet;
+	    else {
+	        userSet = new UserSet(userSet);
+	        return (UserSet)userSet;
+	    }
+	}
+
+	/**
+	 * @param userSet
+	 */
+	public void setUsers(UserSet userSet)
+	{
+	    if( userSet != null )
+	        this.userSet = userSet;
+	    else
+	        this.userSet = new UserSet();
+	}
+    
+	/**
+	 * @return
+	 */
+	public Set getUsersAsSet()
+	{
+	    return userSet;
+	}
+
+	/**
+	 * @param userSet
+	 */
+	public void setUsersAsSet(Set users)
+	{
+	    this.userSet = users;
+	}    
+
+	
+	
+	public void addUser(User user)
+	{
+		getUsers().add(user);
+	}
+	public void removeUser(User user)
+	{
+		getUsers().remove(user);
+	}
+    
+	
+}

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicUserImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicUserImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicUserImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/entity/impl/BasicUserImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,108 @@
+package org.apache.fulcrum.security.model.basic.entity.impl;
+/*
+ *  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.Set;
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.fulcrum.security.entity.Group;
+import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.basic.entity.BasicUser;
+import org.apache.fulcrum.security.util.GroupSet;
+
+/**
+ * Represents the "basic" model where users can be part of multiple groups
+ * directly, with no roles or permissions.
+ *
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
+ * @version $Id: BasicUser.java 437451 2006-08-27 20:20:44Z tv $
+ */
+public class BasicUserImpl extends SecurityEntityImpl implements BasicUser
+{
+    /**
+     * Serial number 
+     */
+    private static final long serialVersionUID = 7911631916604987203L;
+
+    private String password;
+    private Set groupSet = new GroupSet();
+
+    /**
+     * @return
+     */
+    public String getPassword()
+    {
+        return password;
+    }
+    /**
+     * @param password
+     */
+    public void setPassword(String password)
+    {
+        this.password = password;
+    }
+    /**
+    * @return
+    */
+    public GroupSet getGroups()
+    {
+        if( groupSet instanceof GroupSet )
+            return (GroupSet) groupSet;
+        else {
+            groupSet = new GroupSet(groupSet);
+            return (GroupSet)groupSet;
+        }
+    }
+    /**
+     * @param groups
+     */
+    public void setGroups(GroupSet groups)
+    {
+        if( groups != null )
+            this.groupSet = groups;
+        else
+            this.groupSet = new GroupSet();
+    }
+    public void removeGroup(Group group)
+    {
+        getGroups().remove(group);
+    }
+    public void addGroup(Group group)
+    {
+        getGroups().add(group);
+    }
+    public void setGroupsAsSet(Set groups)
+    {
+        this.groupSet = groups;
+    }
+    public Set getGroupsAsSet()
+    {
+        return groupSet;
+    }
+
+    /**
+     * Calculate a hash code for this object
+     * 
+     * @see org.apache.fulcrum.security.entity.impl.SecurityEntityImpl#hashCode()
+     */
+    public int hashCode()
+    {
+        return new HashCodeBuilder(43, 19)
+                    .append(getPassword())
+                    .appendSuper(super.hashCode())
+                    .toHashCode();
+    }
+}

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicGroup.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicGroup.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicGroup.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicGroup.java Tue Apr  3 14:24:38 2007
@@ -17,12 +17,9 @@
 
 import java.util.Set;
 
-import org.apache.fulcrum.security.entity.Group;
 import org.apache.fulcrum.security.entity.Role;
-import org.apache.fulcrum.security.entity.User;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.basic.entity.BasicGroup;
 import org.apache.fulcrum.security.util.RoleSet;
-import org.apache.fulcrum.security.util.UserSet;
 
 /**
  * Represents the "dynamic" model where permissions are related to roles,
@@ -32,96 +29,47 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
  * @version $Id$
  */
-public class DynamicGroup extends SecurityEntityImpl implements Group
+public interface DynamicGroup extends BasicGroup
 {
-    private Set roleSet = new RoleSet();
-    private Set userSet = new UserSet();
     /**
-     * @return
+     * Get the roles that are part of this group
+     * 
+     * @return a set of roles
      */
-    public UserSet getUsers()
-    {
-    	if( userSet instanceof UserSet )
-    		return (UserSet) userSet;
-    	else {
-    		userSet = new UserSet(userSet);
-    		return (UserSet)userSet;
-    	}
-    }
-
-    /**
-     * @param userSet
-     */
-    public void setUsers(UserSet userSet)
-    {
-    	if( userSet != null )
-    		this.userSet = userSet;
-    	else
-    		this.userSet = new UserSet();
-    }
-    
-	/**
-	 * @return
-	 */
-	public Set getUsersAsSet()
-	{
-		return userSet;
-	}
-
-	/**
-	 * @param userSet
-	 */
-	public void setUsersAsSet(Set users)
-	{
-		this.userSet = users;
-	}    
-
-    /**
-     * @return
-     */
-    public RoleSet getRoles()
-    {
-    	if( roleSet instanceof RoleSet )
-    		return (RoleSet) roleSet;
-    	else {
-    		roleSet = new RoleSet(roleSet);
-    		return (RoleSet)roleSet;
-    	}
-    }
-    /**
-     * @param roleSet
-     */
-    public void setRoles(RoleSet roleSet)
-    {
-    	if( roleSet != null )
-    		this.roleSet = roleSet;
-    	else
-    		this.roleSet = new RoleSet();
-    }
-    public void addRole(Role role)
-    {
-        getRoles().add(role);
-    }
-    public void removeRole(Role role)
-    {
-        getRoles().remove(role);
-    }
-
-    public void addUser(User user)
-    {
-        getUsers().add(user);
-    }
-    public void removeUser(User user)
-    {
-        getUsers().remove(user);
-    }
-    
-	public void setRolesAsSet(Set roles)
-	{
-		this.roleSet = roles;
-	}
-	public Set getRolesAsSet()
-	{
-		return roleSet;
-	}    
+    public RoleSet getRoles();
+
+    /**
+     * Set the roles that are part of this group
+     * 
+     * @param roleSet a set of roles
+     */
+    public void setRoles(RoleSet roleSet);
+
+    /**
+     * Add a role to this group
+     * 
+     * @param role the role to add
+     */
+    public void addRole(Role role);
+
+    /**
+     * Remove a role from this group
+     * 
+     * @param role the role to remove
+     */
+    public void removeRole(Role role);
+
+    /**
+     * Set the roles that are part of this group as Set
+     * 
+     * @param roles a set of roles
+     */
+	public void setRolesAsSet(Set roles);
+
+    /**
+     * Get the roles that are part of this group as Set
+     * 
+     * @return a set of roles
+     */
+    public Set getRolesAsSet();
 }

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicPermission.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicPermission.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicPermission.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicPermission.java Tue Apr  3 14:24:38 2007
@@ -19,7 +19,6 @@
 
 import org.apache.fulcrum.security.entity.Permission;
 import org.apache.fulcrum.security.entity.Role;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
 import org.apache.fulcrum.security.util.RoleSet;
 
 /**
@@ -30,64 +29,47 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
  * @version $Id$
  */
-public class DynamicPermission extends SecurityEntityImpl implements Permission
+public interface DynamicPermission extends Permission
 {
-
-    private Set roleSet = new RoleSet();
-
-
     /**
-     * @return
+     * Get the roles that this permission belongs to
+     * 
+     * @return a set of roles
      */
-    public RoleSet getRoles() {
-        if (roleSet instanceof RoleSet)
-            return (RoleSet) roleSet;
-        else {
-            roleSet = new RoleSet(roleSet);
-            return (RoleSet) roleSet;
-        }
-    }
+    public RoleSet getRoles();
 
     /**
-     * @param roleSet
+     * Set the roles that this permission belongs to
+     * 
+     * @param roleSet a set of roles
      */
-    public void setRoles(RoleSet roleSet) {
-        if (roleSet != null)
-            this.roleSet = roleSet;
-        else
-            this.roleSet = new RoleSet();
-    }
+    public void setRoles(RoleSet roleSet);
 
     /**
-     * Add a role to the RoleSet
+     * Add a role to this permission
+     * 
      * @param role the role to add
      */
-    public void addRole(Role role) {
-        getRoles().add(role);
-    }
+    public void addRole(Role role);
 
     /**
-     * Remove a role from the RoleSet
+     * Remove a role from this permission
+     * 
      * @param role the role to remove
      */
-    public void removeRole(Role role) {
-        getRoles().remove(role);
-    }
+    public void removeRole(Role role);
 
     /**
+     * Set the roles that this permission belongs to as Set
      * 
-     * @param roles
+     * @param roles a set of roles
      */
-    public void setRolesAsSet(Set roles) {
-        this.roleSet = roles;
-    }
+    public void setRolesAsSet(Set roles);
 
     /**
+     * Get the roles that this permission belongs to as Set
      * 
-     * @return
+     * @return a set of roles
      */
-    public Set getRolesAsSet() {
-        return roleSet;
-    }
-
+    public Set getRolesAsSet();
 }

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicRole.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicRole.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicRole.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicRole.java Tue Apr  3 14:24:38 2007
@@ -17,10 +17,9 @@
 
 import java.util.Set;
 
+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.Group;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
 import org.apache.fulcrum.security.util.GroupSet;
 import org.apache.fulcrum.security.util.PermissionSet;
 
@@ -32,109 +31,85 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
  * @version $Id$
  */
-public class DynamicRole extends SecurityEntityImpl implements Role
+public interface DynamicRole extends Role
 {
-    private Set permissionSet = new PermissionSet();
+    /**
+     * Get the permission that are part of this role
+     * 
+     * @return a set of permissions
+     */
+    public PermissionSet getPermissions();
+
+    /**
+     * Get the permission that are part of this role as Set
+     * 
+     * @return a set of permissions
+     */
+    public Set getPermissionsAsSet();
+
+    /**
+     * Set the permission that are part of this role
+     * 
+     * @param permissionSet a set of permissions
+     */
+    public void setPermissions(PermissionSet permissionSet);
 
-    private Set groupSet = new GroupSet();
     /**
-     * @return
+     * Set the permission that are part of this role as Set
+     * 
+     * @param permissions a set of permissions
      */
-    public PermissionSet getPermissions()
-    {
-    	if( permissionSet instanceof PermissionSet )
-    		return (PermissionSet) permissionSet;
-    	else {
-    		permissionSet = new PermissionSet(permissionSet);
-    		return (PermissionSet)permissionSet;
-    	}
-    }
-    /**
-     * @return
-     */
-    public Set getPermissionsAsSet()
-    {
-        return permissionSet;
-    }
-
-    public void setPermissionsAsSet(Set permissions)
-    {
-        this.permissionSet = permissions;
-    }
-    /**
-     * @param permissionSet
-     */
-    public void setPermissions(PermissionSet permissionSet)
-    {
-    	if( permissionSet != null )
-    		this.permissionSet = permissionSet;
-    	else
-    		this.permissionSet = new PermissionSet();
-    }
+    public void setPermissionsAsSet(Set permissions);
 
     /**
     * This method should only be used by a RoleManager.  Not directly.
     * @param permission
     */
-    public void addPermission(Permission permission)
-    {
-        getPermissions().add(permission);
-    }
+    public void addPermission(Permission permission);
+
     /**
      * This method should only be used by a RoleManager.  Not directly.
      * @param permission
      */
-    public void removePermission(Permission permission)
-    {
-        getPermissions().remove(permission);
-    }
-
-    /**
-    	* @return
-    	*/
-    public GroupSet getGroups()
-    {
-    	if( groupSet instanceof GroupSet )
-    		return (GroupSet) groupSet;
-    	else {
-    		groupSet = new GroupSet(groupSet);
-    		return (GroupSet)groupSet;
-    	}
-    }
-    /**
-    	* @param groupSet
-    	*/
-    public void setGroups(GroupSet groupSet)
-    {
-    	if( groupSet != null )
-    		this.groupSet = groupSet;
-    	else
-    		this.groupSet = new GroupSet();
-    }
+    public void removePermission(Permission permission);
 
     /**
-    * This method should only be used by a RoleManager.  Not directly.
-    * @param group
-    */
-    public void addGroup(Group group)
-    {
-        getGroups().add(group);
-    }
-    /**
-	* This method should only be used by a RoleManager.  Not directly.
-	* @param group
-	*/
-    public void removeGroup(Group group)
-    {
-        getGroups().remove(group);
-    }
-
-    public void setGroupsAsSet(Set groups)
-    {
-        this.groupSet = groups;
-    }
-    public Set getGroupsAsSet()
-    {
-        return groupSet;
-    }
+     * Get the groups this role belongs to
+     * 
+     * @return a set of groups
+     */
+    public GroupSet getGroups();
+
+    /**
+     * Set the groups this role belongs to
+     * 
+     * @param groups the set of groups
+     */
+    public void setGroups(GroupSet groups);
+
+    /**
+     * This method should only be used by a RoleManager.  Not directly.
+     * @param group
+     */
+    public void removeGroup(Group group);
+
+    /**
+     * This method should only be used by a RoleManager.  Not directly.
+     * @param group
+     */
+    public void addGroup(Group group);
+
+    /**
+     * Set the groups this role belongs to as a Set
+     * 
+     * @param groups the set of groups
+     */
+    public void setGroupsAsSet(Set groups);
+
+    /**
+     * Get the groups this role belongs to as a Set
+     * 
+     * @return a set of groups
+     */
+    public Set getGroupsAsSet();
 }

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicUser.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicUser.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicUser.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/DynamicUser.java Tue Apr  3 14:24:38 2007
@@ -16,14 +16,9 @@
  *  limitations under the License.
  */
 
-import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.fulcrum.security.entity.Group;
-import org.apache.fulcrum.security.entity.User;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
-import org.apache.fulcrum.security.util.GroupSet;
+import org.apache.fulcrum.security.model.basic.entity.BasicUser;
 
 /**
  * Represents the "simple" model where permissions are related to roles, roles
@@ -37,126 +32,27 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
  * @version $Id$
  */
-public class DynamicUser extends SecurityEntityImpl implements User
+public interface DynamicUser extends BasicUser
 {
     /**
-     * Serial number
-     */
-    private static final long serialVersionUID = 2841311062371647853L;
-
-    private String password;
-
-    private Set groupSet = new GroupSet();
-
-    private Set delegators = new HashSet();
-
-    private Set delegatees = new HashSet();
-
-    /**
      * @return Returns the delegatees.
      */
-    public Set getDelegatees()
-    {
-        return delegatees;
-    }
+    public Set getDelegatees();
 
     /**
      * @param delegatees
      *            The delegatees to set.
      */
-    public void setDelegatees(Set delegatees)
-    {
-        this.delegatees = delegatees;
-    }
+    public void setDelegatees(Set delegatees);
 
     /**
      * @return Returns the delegators.
      */
-    public Set getDelegators()
-    {
-        return delegators;
-    }
+    public Set getDelegators();
 
     /**
      * @param delegates
      *            The delegators to set.
      */
-    public void setDelegators(Set delegates)
-    {
-        this.delegators = delegates;
-    }
-
-    /**
-     * @return
-     */
-    public String getPassword()
-    {
-        return password;
-    }
-
-    /**
-     * @param password
-     */
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    /**
-     * @return
-     */
-    public GroupSet getGroups()
-    {
-        if (groupSet instanceof GroupSet)
-            return (GroupSet) groupSet;
-        else
-        {
-            groupSet = new GroupSet(groupSet);
-            return (GroupSet) groupSet;
-        }
-    }
-
-    /**
-     * @param groups
-     */
-    public void setGroups(GroupSet groups)
-    {
-        if (groups != null)
-            this.groupSet = groups;
-        else
-            this.groupSet = new GroupSet();
-    }
-
-    public void removeGroup(Group group)
-    {
-        getGroups().remove(group);
-    }
-
-    public void addGroup(Group group)
-    {
-        getGroups().add(group);
-    }
-
-    public void setGroupsAsSet(Set groups)
-    {
-        this.groupSet = groups;
-    }
-
-    public Set getGroupsAsSet()
-    {
-        return groupSet;
-    }
-
-    /**
-     * Calculate a hash code for this object
-     * 
-     * @see org.apache.fulcrum.security.entity.impl.SecurityEntityImpl#hashCode()
-     */
-    public int hashCode()
-    {
-        return new HashCodeBuilder(45, 13)
-                    .append(getPassword())
-                    .appendSuper(super.hashCode())
-                    .toHashCode();
-    }
+    public void setDelegators(Set delegates);
 }

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicGroupImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicGroupImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicGroupImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicGroupImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,76 @@
+package org.apache.fulcrum.security.model.dynamic.entity.impl;
+/*
+ *  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.Set;
+
+import org.apache.fulcrum.security.entity.Role;
+import org.apache.fulcrum.security.model.basic.entity.impl.BasicGroupImpl;
+import org.apache.fulcrum.security.model.dynamic.entity.DynamicGroup;
+import org.apache.fulcrum.security.util.RoleSet;
+
+/**
+ * Represents the "dynamic" model where permissions are related to roles,
+ * roles are related to groups and groups are related to userSet,
+ * all in many to many relationships.
+ * 
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
+ * @version $Id: DynamicGroup.java 223057 2004-07-05 19:28:23Z epugh $
+ */
+public class DynamicGroupImpl extends BasicGroupImpl implements DynamicGroup
+{
+    private Set roleSet = new RoleSet();
+
+    /**
+     * @return
+     */
+    public RoleSet getRoles()
+    {
+    	if( roleSet instanceof RoleSet )
+    		return (RoleSet) roleSet;
+    	else {
+    		roleSet = new RoleSet(roleSet);
+    		return (RoleSet)roleSet;
+    	}
+    }
+    /**
+     * @param roleSet
+     */
+    public void setRoles(RoleSet roleSet)
+    {
+    	if( roleSet != null )
+    		this.roleSet = roleSet;
+    	else
+    		this.roleSet = new RoleSet();
+    }
+    public void addRole(Role role)
+    {
+        getRoles().add(role);
+    }
+    public void removeRole(Role role)
+    {
+        getRoles().remove(role);
+    }
+
+	public void setRolesAsSet(Set roles)
+	{
+		this.roleSet = roles;
+	}
+	public Set getRolesAsSet()
+	{
+		return roleSet;
+	}    
+}

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicPermissionImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicPermissionImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicPermissionImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicPermissionImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,92 @@
+package org.apache.fulcrum.security.model.dynamic.entity.impl;
+/*
+ *  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.Set;
+
+import org.apache.fulcrum.security.entity.Role;
+import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.dynamic.entity.DynamicPermission;
+import org.apache.fulcrum.security.util.RoleSet;
+
+/**
+ * Represents the "simple" model where permissions are related to roles,
+ * roles are related to groups and groups are related to users,
+ * all in many to many relationships.
+ *
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
+ * @version $Id: DynamicPermission.java 223059 2004-07-07 16:49:09Z epugh $
+ */
+public class DynamicPermissionImpl extends SecurityEntityImpl implements DynamicPermission
+{
+
+    private Set roleSet = new RoleSet();
+
+
+    /**
+     * @return
+     */
+    public RoleSet getRoles() {
+        if (roleSet instanceof RoleSet)
+            return (RoleSet) roleSet;
+        else {
+            roleSet = new RoleSet(roleSet);
+            return (RoleSet) roleSet;
+        }
+    }
+
+    /**
+     * @param roleSet
+     */
+    public void setRoles(RoleSet roleSet) {
+        if (roleSet != null)
+            this.roleSet = roleSet;
+        else
+            this.roleSet = new RoleSet();
+    }
+
+    /**
+     * Add a role to the RoleSet
+     * @param role the role to add
+     */
+    public void addRole(Role role) {
+        getRoles().add(role);
+    }
+
+    /**
+     * Remove a role from the RoleSet
+     * @param role the role to remove
+     */
+    public void removeRole(Role role) {
+        getRoles().remove(role);
+    }
+
+    /**
+     * 
+     * @param roles
+     */
+    public void setRolesAsSet(Set roles) {
+        this.roleSet = roles;
+    }
+
+    /**
+     * 
+     * @return
+     */
+    public Set getRolesAsSet() {
+        return roleSet;
+    }
+}

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicRoleImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicRoleImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicRoleImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicRoleImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,140 @@
+package org.apache.fulcrum.security.model.dynamic.entity.impl;
+/*
+ *  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.Set;
+
+import org.apache.fulcrum.security.entity.Group;
+import org.apache.fulcrum.security.entity.Permission;
+import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.dynamic.entity.DynamicRole;
+import org.apache.fulcrum.security.util.GroupSet;
+import org.apache.fulcrum.security.util.PermissionSet;
+
+/**
+ * Represents the "simple" model where permissions are related to roles,
+ * roles are related to groups and groups are related to users,
+ * all in many to many relationships.
+ *
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
+ * @version $Id: DynamicRole.java 437451 2006-08-27 20:20:44Z tv $
+ */
+public class DynamicRoleImpl extends SecurityEntityImpl implements DynamicRole
+{
+    private Set permissionSet = new PermissionSet();
+
+    private Set groupSet = new GroupSet();
+    /**
+     * @return
+     */
+    public PermissionSet getPermissions()
+    {
+    	if( permissionSet instanceof PermissionSet )
+    		return (PermissionSet) permissionSet;
+    	else {
+    		permissionSet = new PermissionSet(permissionSet);
+    		return (PermissionSet)permissionSet;
+    	}
+    }
+    /**
+     * @return
+     */
+    public Set getPermissionsAsSet()
+    {
+        return permissionSet;
+    }
+
+    public void setPermissionsAsSet(Set permissions)
+    {
+        this.permissionSet = permissions;
+    }
+    /**
+     * @param permissionSet
+     */
+    public void setPermissions(PermissionSet permissionSet)
+    {
+    	if( permissionSet != null )
+    		this.permissionSet = permissionSet;
+    	else
+    		this.permissionSet = new PermissionSet();
+    }
+
+    /**
+    * This method should only be used by a RoleManager.  Not directly.
+    * @param permission
+    */
+    public void addPermission(Permission permission)
+    {
+        getPermissions().add(permission);
+    }
+    /**
+     * This method should only be used by a RoleManager.  Not directly.
+     * @param permission
+     */
+    public void removePermission(Permission permission)
+    {
+        getPermissions().remove(permission);
+    }
+
+    /**
+    	* @return
+    	*/
+    public GroupSet getGroups()
+    {
+    	if( groupSet instanceof GroupSet )
+    		return (GroupSet) groupSet;
+    	else {
+    		groupSet = new GroupSet(groupSet);
+    		return (GroupSet)groupSet;
+    	}
+    }
+    /**
+    	* @param groupSet
+    	*/
+    public void setGroups(GroupSet groupSet)
+    {
+    	if( groupSet != null )
+    		this.groupSet = groupSet;
+    	else
+    		this.groupSet = new GroupSet();
+    }
+
+    /**
+    * This method should only be used by a RoleManager.  Not directly.
+    * @param group
+    */
+    public void addGroup(Group group)
+    {
+        getGroups().add(group);
+    }
+    /**
+	* This method should only be used by a RoleManager.  Not directly.
+	* @param group
+	*/
+    public void removeGroup(Group group)
+    {
+        getGroups().remove(group);
+    }
+
+    public void setGroupsAsSet(Set groups)
+    {
+        this.groupSet = groups;
+    }
+    public Set getGroupsAsSet()
+    {
+        return groupSet;
+    }
+}

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicUserImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicUserImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicUserImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/entity/impl/DynamicUserImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,81 @@
+package org.apache.fulcrum.security.model.dynamic.entity.impl;
+
+/*
+ *  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.HashSet;
+import java.util.Set;
+
+import org.apache.fulcrum.security.model.basic.entity.impl.BasicUserImpl;
+import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
+
+/**
+ * Represents the "simple" model where permissions are related to roles, roles
+ * are related to groups and groups are related to users, all in many to many
+ * relationships.
+ * 
+ * Users have a set of delegates and delegatee's. If user A has B in their
+ * delegates - B assumes A's groups,roles and permissions If user C has D in
+ * their delegatees - C assumes D's groups,roles and permissions
+ * 
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
+ * @version $Id: DynamicUser.java 437451 2006-08-27 20:20:44Z tv $
+ */
+public class DynamicUserImpl extends BasicUserImpl implements DynamicUser
+{
+    /**
+     * Serial number
+     */
+    private static final long serialVersionUID = 2841311062371647853L;
+
+    private Set delegators = new HashSet();
+
+    private Set delegatees = new HashSet();
+
+    /**
+     * @return Returns the delegatees.
+     */
+    public Set getDelegatees()
+    {
+        return delegatees;
+    }
+
+    /**
+     * @param delegatees
+     *            The delegatees to set.
+     */
+    public void setDelegatees(Set delegatees)
+    {
+        this.delegatees = delegatees;
+    }
+
+    /**
+     * @return Returns the delegators.
+     */
+    public Set getDelegators()
+    {
+        return delegators;
+    }
+
+    /**
+     * @param delegates
+     *            The delegators to set.
+     */
+    public void setDelegators(Set delegates)
+    {
+        this.delegators = delegates;
+    }
+}

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineGroup.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineGroup.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineGroup.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineGroup.java Tue Apr  3 14:24:38 2007
@@ -16,11 +16,9 @@
  *  limitations under the License.
  */
 
-import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.fulcrum.security.entity.Group;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
 
 /**
  * Represents the "turbine" model where permissions are in a many to many
@@ -30,31 +28,33 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
  * @version $Id$
  */
-public class TurbineGroup extends SecurityEntityImpl implements Group {
-    private Set userGroupRoleSet = new HashSet();
-
+public interface TurbineGroup extends Group 
+{
     /**
-     * @return
+     * Get the User/Group/Role set associated with this group
+     * 
+     * @return a set of User/GRoup/Role relations
      */
-    public Set getUserGroupRoleSet() {
-
-        return userGroupRoleSet;
-    }
+    public Set getUserGroupRoleSet();
 
     /**
-     * @param userGroupRoleSet
+     * Get the User/Group/Role set associated with this group
+     * 
+     * @param userGroupRoleSet a set of User/GRoup/Role relations
      */
-    public void setUserGroupRoleSet(Set userGroupRoleSet) {
-        this.userGroupRoleSet = userGroupRoleSet;
-
-    }
-
-    public void addUserGroupRole(TurbineUserGroupRole userGroupRole) {
-        getUserGroupRoleSet().add(userGroupRole);
-    }
-
-    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole) {
-        getUserGroupRoleSet().remove(userGroupRole);
-    }
+    public void setUserGroupRoleSet(Set userGroupRoleSet);
+    
+    /**
+     * Add a User/Group/Role relation to this group
+     * 
+     * @param userGroupRole a User/GRoup/Role relation to add
+     */
+    public void addUserGroupRole(TurbineUserGroupRole userGroupRole);
 
+    /**
+     * Remove a User/Group/Role relation from this group
+     * 
+     * @param userGroupRole a User/GRoup/Role relation to remove
+     */
+    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole);
 }

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbinePermission.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbinePermission.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbinePermission.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbinePermission.java Tue Apr  3 14:24:38 2007
@@ -20,7 +20,6 @@
 
 import org.apache.fulcrum.security.entity.Permission;
 import org.apache.fulcrum.security.entity.Role;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
 import org.apache.fulcrum.security.util.RoleSet;
 
 /**
@@ -31,61 +30,47 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
  * @version $Id$
  */
-public class TurbinePermission extends SecurityEntityImpl implements Permission {
-    private Set roleSet = new RoleSet();
-
+public interface TurbinePermission extends Permission 
+{
     /**
-     * @return
+     * Get the roles that this permission belongs to
+     * 
+     * @return a set of roles
      */
-    public RoleSet getRoles() {
-        if (roleSet instanceof RoleSet)
-            return (RoleSet) roleSet;
-        else {
-            roleSet = new RoleSet(roleSet);
-            return (RoleSet) roleSet;
-        }
-    }
+    public RoleSet getRoles();
 
     /**
-     * @return
+     * Set the roles that this permission belongs to
+     * 
+     * @param roleSet a set of roles
      */
-    public Set getRolesAsSet() {
-        return roleSet;
-    }
-
-    public void setRolesAsSet(Set roles) {
-        this.roleSet = roles;
-    }
+    public void setRoles(RoleSet roleSet);
 
     /**
-     * @param roleSet
+     * Add a role to this permission
+     * 
+     * @param role the role to add
      */
-    public void setRoles(RoleSet roleSet) {
-        if (roleSet != null)
-            this.roleSet = roleSet;
-        else
-            this.roleSet = new RoleSet();
-    }
+    public void addRole(Role role);
 
     /**
-     * This method should only be used by a RoleManager. Not directly.
+     * Remove a role from this permission
      * 
-     * @param permission
+     * @param role the role to remove
      */
-    public void addRole(Role role) {
-        getRoles().add(role);
-    }
+    public void removeRole(Role role);
 
     /**
-     * This method should only be used by a RoleManager. Not directly.
+     * Set the roles that this permission belongs to as Set
      * 
-     * @param permission
+     * @param roles a set of roles
      */
-    public void removeRole(Role role) {
-        getRoles().remove(role);
-    }
+    public void setRolesAsSet(Set roles);
 
-   
-
-   
+    /**
+     * Get the roles that this permission belongs to as Set
+     * 
+     * @return a set of roles
+     */
+    public Set getRolesAsSet();
 }

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineRole.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineRole.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineRole.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineRole.java Tue Apr  3 14:24:38 2007
@@ -16,12 +16,10 @@
  *  limitations under the License.
  */
 
-import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.fulcrum.security.entity.Permission;
 import org.apache.fulcrum.security.entity.Role;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
 import org.apache.fulcrum.security.util.PermissionSet;
 
 /**
@@ -32,107 +30,73 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
  * @version $Id$
  */
-public class TurbineRole extends SecurityEntityImpl implements Role
+public interface TurbineRole extends Role
 {
-    private Set permissionSet = new PermissionSet();
-
-    private Set userGroupRoleSet = new HashSet();
-
     /**
-     * @return
+     * Get the permission that are part of this role
+     * 
+     * @return a set of permissions
      */
-    public PermissionSet getPermissions()
-    {
-        if (permissionSet instanceof PermissionSet)
-            return (PermissionSet) permissionSet;
-        else
-        {
-            permissionSet = new PermissionSet(permissionSet);
-            return (PermissionSet) permissionSet;
-        }
-    }
+    public PermissionSet getPermissions();
 
     /**
-     * @return
+     * Get the permission that are part of this role as Set
+     * 
+     * @return a set of permissions
      */
-    public Set getPermissionsAsSet()
-    {
-        return permissionSet;
-    }
-
-    public void setPermissionsAsSet(Set permissions)
-    {
-        this.permissionSet = permissions;
-    }
+    public Set getPermissionsAsSet();
 
     /**
-     * @param permissionSet
+     * Set the permission that are part of this role
+     * 
+     * @param permissionSet a set of permissions
      */
-    public void setPermissions(PermissionSet permissionSet)
-    {
-        if (permissionSet != null)
-            this.permissionSet = permissionSet;
-        else
-            this.permissionSet = new PermissionSet();
-    }
+    public void setPermissions(PermissionSet permissionSet);
 
     /**
-     * This method should only be used by a RoleManager. Not directly.
+     * Set the permission that are part of this role as Set
      * 
-     * @param permission
+     * @param permissions a set of permissions
      */
-    public void addPermission(Permission permission)
-    {
-        getPermissions().add(permission);
-    }
+    public void setPermissionsAsSet(Set permissions);
 
     /**
-     * This method should only be used by a RoleManager. Not directly.
-     * 
+    * This method should only be used by a RoleManager.  Not directly.
+    * @param permission
+    */
+    public void addPermission(Permission permission);
+
+    /**
+     * This method should only be used by a RoleManager.  Not directly.
      * @param permission
      */
-    public void removePermission(Permission permission)
-    {
-        getPermissions().remove(permission);
-    }
+    public void removePermission(Permission permission);
 
     /**
-     * @return
+     * Get the User/Group/Role set associated with this role
+     * 
+     * @return a set of User/GRoup/Role relations
      */
-    public Set getUserGroupRoleSet()
-    {
-
-        return userGroupRoleSet;
-    }
+    public Set getUserGroupRoleSet();
 
     /**
-     * @param userGroupRoleSet
+     * Get the User/Group/Role set associated with this group
+     * 
+     * @param userGroupRoleSet a set of User/GRoup/Role relations
      */
-    public void setUserGroupRoleSet(Set userGroupRoleSet)
-    {
-
-        this.userGroupRoleSet = userGroupRoleSet;
-
-    }
-
+    public void setUserGroupRoleSet(Set userGroupRoleSet);
+    
     /**
-     * This method should only be used by a RoleManager. Not directly.
+     * Add a User/Group/Role relation to this role
      * 
-     * @param group
+     * @param userGroupRole a User/GRoup/Role relation to add
      */
-    public void addUserGroupRole(TurbineUserGroupRole userGroupRole)
-    {
-        getUserGroupRoleSet().add(userGroupRole);
-    }
+    public void addUserGroupRole(TurbineUserGroupRole userGroupRole);
 
     /**
-     * This method should only be used by a RoleManager. Not directly.
+     * Remove a User/Group/Role relation from this role
      * 
-     * @param group
+     * @param userGroupRole a User/GRoup/Role relation to remove
      */
-    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole)
-    {
-        getUserGroupRoleSet().remove(userGroupRole);
-    }
-
+    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole);
 }

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUser.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUser.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUser.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUser.java Tue Apr  3 14:24:38 2007
@@ -16,12 +16,9 @@
  *  limitations under the License.
  */
 
-import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.apache.fulcrum.security.entity.User;
-import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
 
 /**
  * Represents the "turbine" model where permissions are in a many to many
@@ -31,69 +28,33 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
  * @version $Id$
  */
-public class TurbineUser extends SecurityEntityImpl implements User
+public interface TurbineUser extends User
 {
     /**
-     * Serial number
-     */
-    private static final long serialVersionUID = -7309619325167081811L;
-
-    private Set userGroupRoleSet = new HashSet();
-
-    private String password;
-
-    /**
-     * @return
-     */
-    public Set getUserGroupRoleSet()
-    {
-        return userGroupRoleSet;
-    }
-
-    /**
-     * @param userGroupRoleSet
+     * Get the User/Group/Role set associated with this user
+     * 
+     * @return a set of User/GRoup/Role relations
      */
-    public void setUserGroupRoleSet(Set userGroupRoleSet)
-    {
-        this.userGroupRoleSet = userGroupRoleSet;
-    }
+    public Set getUserGroupRoleSet();
 
     /**
-     * @return
+     * Get the User/Group/Role set associated with this user
+     * 
+     * @param userGroupRoleSet a set of User/GRoup/Role relations
      */
-    public String getPassword()
-    {
-        return password;
-    }
-
+    public void setUserGroupRoleSet(Set userGroupRoleSet);
+    
     /**
-     * @param password
+     * Add a User/Group/Role relation to this user
+     * 
+     * @param userGroupRole a User/GRoup/Role relation to add
      */
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    public void addUserGroupRole(TurbineUserGroupRole userGroupRole)
-    {
-        getUserGroupRoleSet().add(userGroupRole);
-    }
-
-    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole)
-    {
-        getUserGroupRoleSet().remove(userGroupRole);
-    }
+    public void addUserGroupRole(TurbineUserGroupRole userGroupRole);
 
     /**
-     * Calculate a hash code for this object
+     * Remove a User/Group/Role relation from this user
      * 
-     * @see org.apache.fulcrum.security.entity.impl.SecurityEntityImpl#hashCode()
+     * @param userGroupRole a User/GRoup/Role relation to remove
      */
-    public int hashCode()
-    {
-        return new HashCodeBuilder(41, 15)
-                    .append(getPassword())
-                    .appendSuper(super.hashCode())
-                    .toHashCode();
-    }
+    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole);
 }

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRole.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRole.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRole.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRole.java Tue Apr  3 14:24:38 2007
@@ -31,48 +31,57 @@
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
  * @version $Id$
  */
-public class TurbineUserGroupRole implements Serializable
+public class TurbineUserGroupRole 
+    implements Serializable
 {
     /**
      * Serial number
      */
     private static final long serialVersionUID = 265670888102016829L;
-
+    
     private User user;
-
+    
     private Group group;
-
+    
     private Role role;
-
+    
     private int hashCode;
-
+    
     private boolean hashCodeGenerated = false;
-
+    
     /**
+     * Get the group
+     * 
      * @return Returns the group.
      */
     public Group getGroup()
     {
         return group;
     }
-
+    
     /**
+     * Get the role
+     * 
      * @return Returns the role.
      */
     public Role getRole()
     {
         return role;
     }
-
+    
     /**
+     * Get the user
+     * 
      * @return Returns the user.
      */
     public User getUser()
     {
         return user;
     }
-
+    
     /**
+     * Set the group
+     * 
      * @param group
      *            The group to set.
      */
@@ -80,8 +89,10 @@
     {
         this.group = group;
     }
-
+    
     /**
+     * Set the role
+     * 
      * @param role
      *            The role to set.
      */
@@ -89,8 +100,10 @@
     {
         this.role = role;
     }
-
+    
     /**
+     * Set the user
+     * 
      * @param user
      *            The user to set.
      */
@@ -98,7 +111,7 @@
     {
         this.user = user;
     }
-
+    
     public boolean equals(Object obj)
     {
         if (null == obj)
@@ -148,7 +161,7 @@
             return true;
         }
     }
-
+    
     public int hashCode()
     {
         if (!hashCodeGenerated)
@@ -161,7 +174,7 @@
                 hcBuilder.append(role.getId());
                 hcBuilder.append(role.getName());
             }
-
+    
             User user = getUser();
             if (null != user)
             {
@@ -169,20 +182,20 @@
                 hcBuilder.append(user.getName());
                 hcBuilder.append(user.getPassword());
             }
-
+    
             Group group = getGroup();
             if (null != group)
             {
                 hcBuilder.append(group.getId());
                 hcBuilder.append(group.getName());
             }
-
+    
             this.hashCode = hcBuilder.toHashCode();
         }
         
         return this.hashCode;
     }
-
+    
     public String toString()
     {
         StringBuffer sb = new StringBuffer();

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineGroupImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineGroupImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineGroupImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineGroupImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,62 @@
+package org.apache.fulcrum.security.model.turbine.entity.impl;
+
+/*
+ *  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.HashSet;
+import java.util.Set;
+
+import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.turbine.entity.TurbineGroup;
+import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
+
+/**
+ * Represents the "turbine" model where permissions are in a many to many
+ * relationship to roles, roles are related to groups are related to users, all
+ * in many to many relationships.
+ * 
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
+ * @version $Id: TurbineGroup.java 223081 2004-10-07 15:11:58Z epugh $
+ */
+public class TurbineGroupImpl extends SecurityEntityImpl implements TurbineGroup 
+{
+    private Set userGroupRoleSet = new HashSet();
+
+    /**
+     * @return
+     */
+    public Set getUserGroupRoleSet() {
+
+        return userGroupRoleSet;
+    }
+
+    /**
+     * @param userGroupRoleSet
+     */
+    public void setUserGroupRoleSet(Set userGroupRoleSet) {
+        this.userGroupRoleSet = userGroupRoleSet;
+
+    }
+
+    public void addUserGroupRole(TurbineUserGroupRole userGroupRole) {
+        getUserGroupRoleSet().add(userGroupRole);
+    }
+
+    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole) {
+        getUserGroupRoleSet().remove(userGroupRole);
+    }
+
+}
\ No newline at end of file

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbinePermissionImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbinePermissionImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbinePermissionImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbinePermissionImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,88 @@
+package org.apache.fulcrum.security.model.turbine.entity.impl;
+
+/*
+ *  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 ofs 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.Set;
+
+import org.apache.fulcrum.security.entity.Role;
+import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.turbine.entity.TurbinePermission;
+import org.apache.fulcrum.security.util.RoleSet;
+
+/**
+ * Represents the "turbine" model where permissions are in a many to many
+ * relationship to roles, roles are related to groups are related to users, all
+ * in many to many relationships.
+ * 
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
+ * @version $Id: TurbinePermission.java 223081 2004-10-07 15:11:58Z epugh $
+ */
+public class TurbinePermissionImpl extends SecurityEntityImpl implements TurbinePermission 
+{
+    private Set roleSet = new RoleSet();
+
+    /**
+     * @return
+     */
+    public RoleSet getRoles() {
+        if (roleSet instanceof RoleSet)
+            return (RoleSet) roleSet;
+        else {
+            roleSet = new RoleSet(roleSet);
+            return (RoleSet) roleSet;
+        }
+    }
+
+    /**
+     * @return
+     */
+    public Set getRolesAsSet() {
+        return roleSet;
+    }
+
+    public void setRolesAsSet(Set roles) {
+        this.roleSet = roles;
+    }
+
+    /**
+     * @param roleSet
+     */
+    public void setRoles(RoleSet roleSet) {
+        if (roleSet != null)
+            this.roleSet = roleSet;
+        else
+            this.roleSet = new RoleSet();
+    }
+
+    /**
+     * This method should only be used by a RoleManager. Not directly.
+     * 
+     * @param permission
+     */
+    public void addRole(Role role) {
+        getRoles().add(role);
+    }
+
+    /**
+     * This method should only be used by a RoleManager. Not directly.
+     * 
+     * @param permission
+     */
+    public void removeRole(Role role) {
+        getRoles().remove(role);
+    }
+}

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineRoleImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineRoleImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineRoleImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineRoleImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,139 @@
+package org.apache.fulcrum.security.model.turbine.entity.impl;
+
+/*
+ *  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 ofs 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.HashSet;
+import java.util.Set;
+
+import org.apache.fulcrum.security.entity.Permission;
+import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.turbine.entity.TurbineRole;
+import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
+import org.apache.fulcrum.security.util.PermissionSet;
+
+/**
+ * Represents the "turbine" model where permissions are in a many to many
+ * relationship to roles, roles are related to groups are related to users, all
+ * in many to many relationships.
+ * 
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
+ * @version $Id: TurbineRole.java 437451 2006-08-27 20:20:44Z tv $
+ */
+public class TurbineRoleImpl extends SecurityEntityImpl implements TurbineRole
+{
+    private Set permissionSet = new PermissionSet();
+
+    private Set userGroupRoleSet = new HashSet();
+
+    /**
+     * @return
+     */
+    public PermissionSet getPermissions()
+    {
+        if (permissionSet instanceof PermissionSet)
+            return (PermissionSet) permissionSet;
+        else
+        {
+            permissionSet = new PermissionSet(permissionSet);
+            return (PermissionSet) permissionSet;
+        }
+    }
+
+    /**
+     * @return
+     */
+    public Set getPermissionsAsSet()
+    {
+        return permissionSet;
+    }
+
+    public void setPermissionsAsSet(Set permissions)
+    {
+        this.permissionSet = permissions;
+    }
+
+    /**
+     * @param permissionSet
+     */
+    public void setPermissions(PermissionSet permissionSet)
+    {
+        if (permissionSet != null)
+            this.permissionSet = permissionSet;
+        else
+            this.permissionSet = new PermissionSet();
+    }
+
+    /**
+     * This method should only be used by a RoleManager. Not directly.
+     * 
+     * @param permission
+     */
+    public void addPermission(Permission permission)
+    {
+        getPermissions().add(permission);
+    }
+
+    /**
+     * This method should only be used by a RoleManager. Not directly.
+     * 
+     * @param permission
+     */
+    public void removePermission(Permission permission)
+    {
+        getPermissions().remove(permission);
+    }
+
+    /**
+     * @return
+     */
+    public Set getUserGroupRoleSet()
+    {
+
+        return userGroupRoleSet;
+    }
+
+    /**
+     * @param userGroupRoleSet
+     */
+    public void setUserGroupRoleSet(Set userGroupRoleSet)
+    {
+
+        this.userGroupRoleSet = userGroupRoleSet;
+
+    }
+
+    /**
+     * This method should only be used by a RoleManager. Not directly.
+     * 
+     * @param group
+     */
+    public void addUserGroupRole(TurbineUserGroupRole userGroupRole)
+    {
+        getUserGroupRoleSet().add(userGroupRole);
+    }
+
+    /**
+     * This method should only be used by a RoleManager. Not directly.
+     * 
+     * @param group
+     */
+    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole)
+    {
+        getUserGroupRoleSet().remove(userGroupRole);
+    }
+
+}

Added: jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineUserImpl.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineUserImpl.java?view=auto&rev=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineUserImpl.java (added)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/TurbineUserImpl.java Tue Apr  3 14:24:38 2007
@@ -0,0 +1,100 @@
+package org.apache.fulcrum.security.model.turbine.entity.impl;
+
+/*
+ *  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.HashSet;
+import java.util.Set;
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.fulcrum.security.entity.impl.SecurityEntityImpl;
+import org.apache.fulcrum.security.model.turbine.entity.TurbineUser;
+import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
+
+/**
+ * Represents the "turbine" model where permissions are in a many to many
+ * relationship to roles, roles are related to groups are related to users, all
+ * in many to many relationships.
+ * 
+ * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
+ * @version $Id: TurbineUser.java 437451 2006-08-27 20:20:44Z tv $
+ */
+public class TurbineUserImpl extends SecurityEntityImpl implements TurbineUser
+{
+    /**
+     * Serial number
+     */
+    private static final long serialVersionUID = -7309619325167081811L;
+
+    private Set userGroupRoleSet = new HashSet();
+
+    private String password;
+
+    /**
+     * @return
+     */
+    public Set getUserGroupRoleSet()
+    {
+        return userGroupRoleSet;
+    }
+
+    /**
+     * @param userGroupRoleSet
+     */
+    public void setUserGroupRoleSet(Set userGroupRoleSet)
+    {
+        this.userGroupRoleSet = userGroupRoleSet;
+    }
+
+    /**
+     * @return
+     */
+    public String getPassword()
+    {
+        return password;
+    }
+
+    /**
+     * @param password
+     */
+    public void setPassword(String password)
+    {
+        this.password = password;
+    }
+
+    public void addUserGroupRole(TurbineUserGroupRole userGroupRole)
+    {
+        getUserGroupRoleSet().add(userGroupRole);
+    }
+
+    public void removeUserGroupRole(TurbineUserGroupRole userGroupRole)
+    {
+        getUserGroupRoleSet().remove(userGroupRole);
+    }
+
+    /**
+     * Calculate a hash code for this object
+     * 
+     * @see org.apache.fulcrum.security.entity.impl.SecurityEntityImpl#hashCode()
+     */
+    public int hashCode()
+    {
+        return new HashCodeBuilder(41, 15)
+                    .append(getPassword())
+                    .appendSuper(super.hashCode())
+                    .toHashCode();
+    }
+}

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/CryptoAuthenticatorTest.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/CryptoAuthenticatorTest.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/CryptoAuthenticatorTest.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/CryptoAuthenticatorTest.java Tue Apr  3 14:24:38 2007
@@ -16,7 +16,7 @@
  */
 
 import org.apache.fulcrum.security.entity.User;
-import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
+import org.apache.fulcrum.security.model.dynamic.entity.impl.DynamicUserImpl;
 import org.apache.fulcrum.testcontainer.BaseUnitTest;
 
 /**
@@ -50,7 +50,7 @@
     }
     public void testAuthenticate() throws Exception
     {
-        User user = new DynamicUser();
+        User user = new DynamicUserImpl();
         user.setName("Bob");
         user.setPassword(preDefinedResult);
         Authenticator authenticator = (Authenticator)lookup(Authenticator.ROLE);

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/NoOpAuthenticatorTest.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/NoOpAuthenticatorTest.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/NoOpAuthenticatorTest.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/NoOpAuthenticatorTest.java Tue Apr  3 14:24:38 2007
@@ -15,11 +15,11 @@
  *  limitations under the License.
  */
 
-import org.apache.fulcrum.security.entity.User;
-import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
-
 import junit.framework.TestCase;
 
+import org.apache.fulcrum.security.entity.User;
+import org.apache.fulcrum.security.model.dynamic.entity.impl.DynamicUserImpl;
+
 /**
  *
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
@@ -29,7 +29,7 @@
 {
     public void testAuthenticate() throws Exception
     {
-    	User user = new DynamicUser();
+    	User user = new DynamicUserImpl();
     	user.setName("Bob");
     	user.setPassword("myPassword");
     	Authenticator authenticator = new NoOpAuthenticator();

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/TextMatchAuthenticatorTest.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/TextMatchAuthenticatorTest.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/TextMatchAuthenticatorTest.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/authenticator/TextMatchAuthenticatorTest.java Tue Apr  3 14:24:38 2007
@@ -15,11 +15,11 @@
  *  limitations under the License.
  */
 
-import org.apache.fulcrum.security.entity.User;
-import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
-
 import junit.framework.TestCase;
 
+import org.apache.fulcrum.security.entity.User;
+import org.apache.fulcrum.security.model.dynamic.entity.impl.DynamicUserImpl;
+
 
 /**
  *
@@ -30,7 +30,7 @@
 {
     public void testAuthenticate() throws Exception
     {
-    	User user = new DynamicUser();
+    	User user = new DynamicUserImpl();
     	user.setName("Bob");
     	user.setPassword("myPassword");
     	Authenticator authenticator = new TextMatchAuthenticator();

Modified: jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/model/ACLFactoryTest.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/model/ACLFactoryTest.java?view=diff&rev=525284&r1=525283&r2=525284
==============================================================================
--- jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/model/ACLFactoryTest.java (original)
+++ jakarta/turbine/fulcrum/trunk/security/api/src/test/org/apache/fulcrum/security/model/ACLFactoryTest.java Tue Apr  3 14:24:38 2007
@@ -19,11 +19,17 @@
 import org.apache.fulcrum.security.model.basic.BasicAccessControlList;
 import org.apache.fulcrum.security.model.basic.entity.BasicGroup;
 import org.apache.fulcrum.security.model.basic.entity.BasicUser;
+import org.apache.fulcrum.security.model.basic.entity.impl.BasicGroupImpl;
+import org.apache.fulcrum.security.model.basic.entity.impl.BasicUserImpl;
 import org.apache.fulcrum.security.model.dynamic.DynamicAccessControlList;
 import org.apache.fulcrum.security.model.dynamic.entity.DynamicGroup;
 import org.apache.fulcrum.security.model.dynamic.entity.DynamicPermission;
 import org.apache.fulcrum.security.model.dynamic.entity.DynamicRole;
 import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
+import org.apache.fulcrum.security.model.dynamic.entity.impl.DynamicGroupImpl;
+import org.apache.fulcrum.security.model.dynamic.entity.impl.DynamicPermissionImpl;
+import org.apache.fulcrum.security.model.dynamic.entity.impl.DynamicRoleImpl;
+import org.apache.fulcrum.security.model.dynamic.entity.impl.DynamicUserImpl;
 import org.apache.fulcrum.testcontainer.BaseUnitTest;
 
 /**
@@ -46,16 +52,16 @@
         this.setConfigurationFileName("src/test/ACLComponentConfig.xml");
 
         ACLFactory factory = (ACLFactory) lookup(ACLFactory.ROLE);
-        DynamicUser user = new DynamicUser();
+        DynamicUser user = new DynamicUserImpl();
         user.setName("bob");
         user.setId(new Integer(1));
-        DynamicGroup group = new DynamicGroup();
+        DynamicGroup group = new DynamicGroupImpl();
         group.setName("group1");
         group.setId(new Integer(1));
-        DynamicRole role = new DynamicRole();
+        DynamicRole role = new DynamicRoleImpl();
         role.setName("role1");
         role.setId(new Integer(1));
-        DynamicPermission permission = new DynamicPermission();
+        DynamicPermission permission = new DynamicPermissionImpl();
         permission.setName("permission1");
         permission.setId(new Integer(1));
         role.addPermission(permission);
@@ -74,10 +80,10 @@
         this.setConfigurationFileName("src/test/ACLComponentConfig.xml");
 
         ACLFactory factory = (ACLFactory) lookup(ACLFactory.ROLE);
-        BasicUser user = new BasicUser();
+        BasicUser user = new BasicUserImpl();
         user.setName("bob");
         user.setId(new Integer(1));
-        BasicGroup group = new BasicGroup();
+        BasicGroup group = new BasicGroupImpl();
         group.setName("group1");
         group.setId(new Integer(1));
         user.addGroup(group);



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