taylor 2002/07/16 10:27:07
Modified: src/java/org/apache/jetspeed/om/dbpsml/map
JetspeedGroupProfileMapBuilder.java
JetspeedRoleProfileMapBuilder.java
JetspeedUserProfileMapBuilder.java
src/java/org/apache/jetspeed/om/registry/base
BaseSecurityEntry.java
src/java/org/apache/jetspeed/services/security
CachedAcl.java JetspeedSecurityCache.java
SecurityCacheImpl.java SecurityCacheService.java
TestPermissionManagement.java
TestRoleManagement.java TestSecurityCache.java
src/java/org/apache/jetspeed/services/security/turbine
TurbineAuthentication.java
TurbinePermissionManagement.java
TurbineRoleManagement.java
webapp/WEB-INF/conf JetspeedSecurity.properties
JetspeedSecurity.template
webapp/WEB-INF/db jetspeed.properties jetspeed.script
Removed: src/java/org/apache/jetspeed/services/security
CachedRole.java
Log:
- Integrated SecurityCache into other security services.
- added option to disable/enable security cache
Revision Changes Path
1.6 +1 -1
jakarta-jetspeed/src/java/org/apache/jetspeed/om/dbpsml/map/JetspeedGroupProfileMapBuilder.java
Index: JetspeedGroupProfileMapBuilder.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/dbpsml/map/JetspeedGroupProfileMapBuilder.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JetspeedGroupProfileMapBuilder.java 5 Jul 2002 03:38:02 -0000 1.5
+++ JetspeedGroupProfileMapBuilder.java 16 Jul 2002 17:27:03 -0000 1.6
@@ -11,7 +11,7 @@
/**
* This class was autogenerated by Torque on:
*
- * [Thu Jul 04 20:28:30 PDT 2002]
+ * [Mon Jul 15 14:50:15 PDT 2002]
*
*/
public class JetspeedGroupProfileMapBuilder implements MapBuilder
1.6 +1 -1
jakarta-jetspeed/src/java/org/apache/jetspeed/om/dbpsml/map/JetspeedRoleProfileMapBuilder.java
Index: JetspeedRoleProfileMapBuilder.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/dbpsml/map/JetspeedRoleProfileMapBuilder.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JetspeedRoleProfileMapBuilder.java 5 Jul 2002 03:38:02 -0000 1.5
+++ JetspeedRoleProfileMapBuilder.java 16 Jul 2002 17:27:04 -0000 1.6
@@ -11,7 +11,7 @@
/**
* This class was autogenerated by Torque on:
*
- * [Thu Jul 04 20:28:30 PDT 2002]
+ * [Mon Jul 15 14:50:15 PDT 2002]
*
*/
public class JetspeedRoleProfileMapBuilder implements MapBuilder
1.6 +1 -1
jakarta-jetspeed/src/java/org/apache/jetspeed/om/dbpsml/map/JetspeedUserProfileMapBuilder.java
Index: JetspeedUserProfileMapBuilder.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/dbpsml/map/JetspeedUserProfileMapBuilder.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JetspeedUserProfileMapBuilder.java 5 Jul 2002 03:38:02 -0000 1.5
+++ JetspeedUserProfileMapBuilder.java 16 Jul 2002 17:27:04 -0000 1.6
@@ -11,7 +11,7 @@
/**
* This class was autogenerated by Torque on:
*
- * [Thu Jul 04 20:28:30 PDT 2002]
+ * [Mon Jul 15 14:50:15 PDT 2002]
*
*/
public class JetspeedUserProfileMapBuilder implements MapBuilder
1.3 +11 -6
jakarta-jetspeed/src/java/org/apache/jetspeed/om/registry/base/BaseSecurityEntry.java
Index: BaseSecurityEntry.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/registry/base/BaseSecurityEntry.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BaseSecurityEntry.java 28 Jun 2002 05:37:31 -0000 1.2
+++ BaseSecurityEntry.java 16 Jul 2002 17:27:04 -0000 1.3
@@ -174,16 +174,20 @@
}
+ static Object sync = new Object();
+
private void buildAccessMap()
{
Map actionMap = null;
SecurityAccess accessElement = null;
- if (accessMap == null)
- accessMap = new HashMap();
-
- accessMap.clear();
-
+ synchronized(sync)
+ {
+ if (accessMap == null)
+ accessMap = new HashMap();
+
+ accessMap.clear();
+ }
// Build allow map
for ( Iterator accessIterator = getAccesses().iterator();
accessIterator.hasNext();)
{
@@ -191,6 +195,7 @@
// Get action map of the action. Create one if none exists
String action = accessElement.getAction();
+
if (action == null)
action = ALL_ACTIONS;
1.2 +10 -19
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/CachedAcl.java
Index: CachedAcl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/CachedAcl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CachedAcl.java 15 Jul 2002 21:40:58 -0000 1.1
+++ CachedAcl.java 16 Jul 2002 17:27:04 -0000 1.2
@@ -91,33 +91,24 @@
return roles.values().iterator();
}
+
public void setRoles(Iterator roles)
{
- try
- {
- while (roles.hasNext())
- {
- Role role = (Role)roles.next();
- CachedRole acl = new CachedRole(role);
- acl.setPermissions(JetspeedSecurity.getPermissions(role.getName()));
- this.roles.put(acl.getRole().getName(), acl);
- }
- }
- catch (JetspeedSecurityException e)
+ while (roles.hasNext())
{
- Log.error(e);
- }
+ Role role = (Role)roles.next();
+ this.roles.put(role.getName(), role);
+ }
}
- public CachedRole getRole(String roleName)
+ public Role getRole(String roleName)
{
- CachedRole role = (CachedRole)roles.get(roleName);
- return role;
+ return (Role)roles.get(roleName);
}
- public void addRole(CachedRole role)
+ public void addRole(Role role)
{
- roles.put(role.getRole().getName(), role);
+ roles.put(role.getName(), role);
}
public boolean hasRole(String roleName)
1.4 +43 -36
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/JetspeedSecurityCache.java
Index: JetspeedSecurityCache.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/JetspeedSecurityCache.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JetspeedSecurityCache.java 15 Jul 2002 21:40:58 -0000 1.3
+++ JetspeedSecurityCache.java 16 Jul 2002 17:27:05 -0000 1.4
@@ -101,78 +101,85 @@
*
* @param JetspeedUser the user to cache all role and permission information for.
*/
- public static void load(JetspeedUser user)
+ public static void load(String username)
throws JetspeedSecurityException
{
- getService().load(user);
+ getService().load(username);
}
- public static void unload(JetspeedUser user)
- throws JetspeedSecurityException
+ public static void unload(String username)
{
- getService().unload(user);
+ getService().unload(username);
}
+ public static void loadRolePermissions()
+ {
+ getService().loadRolePermissions();
+ }
- public static Role getRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException
+ public static Role getRole(String username, String roleName)
{
- return getService().getRole(user, roleName);
+ return getService().getRole(username, roleName);
}
- public static void addRole(JetspeedUser user, Role role)
- throws JetspeedSecurityException
+ public static void addRole(String username, Role role)
{
- getService().addRole(user, role);
+ getService().addRole(username, role);
}
- public static boolean hasRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException
+ public static boolean hasRole(String username, String roleName)
{
- return getService().hasRole(user, roleName);
+ return getService().hasRole(username, roleName);
}
- public static void removeRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException
+ public static void removeRole(String username, String roleName)
{
- getService().removeRole(user, roleName);
+ getService().removeRole(username, roleName);
}
- public static Iterator getRoles(JetspeedUser user)
- throws JetspeedSecurityException
+ public static Iterator getRoles(String username)
+ {
+ return getService().getRoles(username);
+ }
+
+ public static CachedAcl getAcl(String username)
{
- return getService().getRoles(user);
+ return getService().getAcl(username);
}
+ public static void removeAllRoles(String rolename)
+ {
+ getService().removeAllRoles(rolename);
+ }
- public static Permission getPermission(JetspeedUser user, String roleName,
String permissionName)
- throws JetspeedSecurityException
+ public static void removeAllPermissions(String permissionName)
+ {
+ getService().removeAllPermissions(permissionName);
+ }
+
+ public static Permission getPermission(String roleName, String permissionName)
{
- return getService().getPermission(user, roleName, permissionName);
+ return getService().getPermission(roleName, permissionName);
}
- public static void addPermission(JetspeedUser user, String roleName, Permission
permission)
- throws JetspeedSecurityException
+ public static void addPermission(String roleName, Permission permission)
{
- getService().addPermission(user, roleName, permission);
+ getService().addPermission(roleName, permission);
}
- public static boolean hasPermission(JetspeedUser user, String roleName, String
permissionName)
- throws JetspeedSecurityException
+ public static boolean hasPermission(String roleName, String permissionName)
{
- return getService().hasPermission(user, roleName, permissionName);
+ return getService().hasPermission(roleName, permissionName);
}
- public static void removePermission(JetspeedUser user, String roleName, String
permissionName)
- throws JetspeedSecurityException
+ public static void removePermission(String roleName, String permissionName)
{
- getService().removePermission(user, roleName, permissionName);
+ getService().removePermission(roleName, permissionName);
}
- public static Iterator getPermissions(JetspeedUser user, String roleName)
- throws JetspeedSecurityException
+ public static Iterator getPermissions(String roleName)
{
- return getService().getPermissions(user, roleName);
+ return getService().getPermissions(roleName);
}
}
1.4 +97 -76
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/SecurityCacheImpl.java
Index: SecurityCacheImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/SecurityCacheImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SecurityCacheImpl.java 15 Jul 2002 21:40:58 -0000 1.3
+++ SecurityCacheImpl.java 16 Jul 2002 17:27:05 -0000 1.4
@@ -66,6 +66,7 @@
import org.apache.turbine.services.TurbineBaseService;
import org.apache.turbine.services.InitializationException;
import org.apache.turbine.services.resources.ResourceService;
+import org.apache.turbine.util.Log;
import org.apache.jetspeed.services.JetspeedSecurity;
import org.apache.jetspeed.om.security.JetspeedUser;
@@ -85,7 +86,7 @@
implements SecurityCacheService
{
protected Map acls = new HashMap();
-
+ protected Map perms = new HashMap();
/*
* Utility method for accessing the service
@@ -104,50 +105,47 @@
*
* @param JetspeedUser the user to cache all role and permission information for.
*/
- public void load(JetspeedUser user)
+ public void load(String username)
throws JetspeedSecurityException
{
- CachedAcl acl = new CachedAcl(user.getUserName());
- acl.setRoles(JetspeedSecurity.getRoles(user.getUserName()));
- acls.put(user.getUserName(), acl);
+ CachedAcl acl = new CachedAcl(username);
+ acl.setRoles(JetspeedSecurity.getRoles(username));
+ acls.put(username, acl);
+ if (perms.size() == 0)
+ {
+ loadRolePermissions();
+ }
}
- public void unload(JetspeedUser user)
- throws JetspeedSecurityException
+ public void unload(String username)
{
- acls.remove(user.getUserName());
+ acls.remove(username);
}
- public Role getRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException
+ public Role getRole(String username, String roleName)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
+ CachedAcl acl = (CachedAcl)acls.get(username);
if (acl == null)
{
return null;
}
- CachedRole crole = (CachedRole)acl.getRole(roleName);
- if (null != crole)
- {
- return crole.getRole();
- }
- return null;
+ return acl.getRole(roleName);
}
- public void addRole(JetspeedUser user, Role role)
- throws JetspeedSecurityException
+ public void addRole(String username, Role role)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
+ CachedAcl acl = (CachedAcl)acls.get(username);
if (null != acl)
{
- acl.addRole(new CachedRole(role));
+ acl.addRole(role);
}
+ perms.put(role.getName(), new HashMap());
+
}
- public boolean hasRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException
+ public boolean hasRole(String username, String roleName)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
+ CachedAcl acl = (CachedAcl)acls.get(username);
if (null != acl)
{
return acl.hasRole(roleName);
@@ -155,20 +153,24 @@
return false;
}
- public void removeRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException
+ public void removeRole(String username, String roleName)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
+ CachedAcl acl = (CachedAcl)acls.get(username);
if (null != acl)
{
acl.removeRole(roleName);
}
+ perms.remove(roleName);
}
- public Iterator getRoles(JetspeedUser user)
- throws JetspeedSecurityException
+ public CachedAcl getAcl(String username)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
+ return (CachedAcl)acls.get(username);
+ }
+
+ public Iterator getRoles(String username)
+ {
+ CachedAcl acl = (CachedAcl)acls.get(username);
if (null != acl)
{
return acl.getRoles();
@@ -176,80 +178,99 @@
return null;
}
- public Permission getPermission(JetspeedUser user, String roleName, String
permissionName)
- throws JetspeedSecurityException
+ public Permission getPermission(String roleName, String permissionName)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
- if (null != acl)
+ Map map = (Map)perms.get(roleName);
+ if (null != map)
{
- CachedRole crole = (CachedRole)acl.getRole(roleName);
- if (null != crole)
- {
- return crole.getPermission(permissionName);
- }
+ return (Permission)map.get(permissionName);
}
return null;
}
- public void addPermission(JetspeedUser user, String roleName, Permission
permission)
- throws JetspeedSecurityException
+ public void addPermission(String roleName, Permission permission)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
- if (null != acl)
+ Map map = (Map)perms.get(roleName);
+ if (null != map)
{
- CachedRole crole = (CachedRole)acl.getRole(roleName);
- if (null != crole)
- {
- crole.addPermission(permission);
- }
+ map.put(permission.getName(), permission);
}
}
- public boolean hasPermission(JetspeedUser user, String roleName, String
permissionName)
- throws JetspeedSecurityException
+ public boolean hasPermission(String roleName, String permissionName)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
- if (null != acl)
+ Map map = (Map)perms.get(roleName);
+ if (null != map)
{
- CachedRole crole = (CachedRole)acl.getRole(roleName);
- if (null != crole)
- {
- return crole.hasPermission(permissionName);
- }
+ return map.containsKey(permissionName);
}
return false;
}
- public void removePermission(JetspeedUser user, String roleName, String
permissionName)
- throws JetspeedSecurityException
+ public void removePermission(String roleName, String permissionName)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
- if (null != acl)
+ Map map = (Map)perms.get(roleName);
+ if (null != map)
{
- CachedRole crole = (CachedRole)acl.getRole(roleName);
- if (null != crole)
- {
- crole.removePermission(permissionName);
- }
+ map.remove(permissionName);
}
}
- public Iterator getPermissions(JetspeedUser user, String roleName)
- throws JetspeedSecurityException
+ public Iterator getPermissions(String roleName)
{
- CachedAcl acl = (CachedAcl)acls.get(user.getUserName());
- if (null != acl)
+ Map map = (Map)perms.get(roleName);
+ if (map != null)
{
- CachedRole crole = (CachedRole)acl.getRole(roleName);
- if (null != crole)
- {
- return crole.getPermissions();
- }
+ return map.values().iterator();
}
return null;
}
+ public void removeAllRoles(String rolename)
+ {
+ Iterator iterator = acls.values().iterator();
+ while (iterator.hasNext())
+ {
+ CachedAcl acl = (CachedAcl)iterator.next();
+ acl.removeRole(rolename);
+ }
+ perms.remove(rolename);
+ }
+
+ public void removeAllPermissions(String permissionName)
+ {
+ Iterator iterator = perms.values().iterator();
+ while (iterator.hasNext())
+ {
+ Map map = (Map)iterator.next();
+ map.remove(permissionName);
+ }
+ }
+
+ public void loadRolePermissions()
+ {
+ try
+ {
+ Iterator roles = JetspeedSecurity.getRoles();
+ while (roles.hasNext())
+ {
+ Role role = (Role)roles.next();
+ Map map = new HashMap();
+ Iterator prms = JetspeedSecurity.getPermissions(role.getName());
+ while (prms.hasNext())
+ {
+ Permission perm = (Permission)prms.next();
+ map.put(perm.getName(), perm);
+ }
+ perms.put(role.getName(), map);
+ }
+ }
+ catch (JetspeedSecurityException e)
+ {
+ Log.error(e);
+ }
+ }
///////////////////////////////////////////////////////////////////////////
// Service Init
///////////////////////////////////////////////////////////////////////////
1.4 +39 -34
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/SecurityCacheService.java
Index: SecurityCacheService.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/SecurityCacheService.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SecurityCacheService.java 15 Jul 2002 21:40:58 -0000 1.3
+++ SecurityCacheService.java 16 Jul 2002 17:27:05 -0000 1.4
@@ -77,53 +77,58 @@
public String SERVICE_NAME = "SecurityCache";
/*
- *
- * The class that is created by the default JetspeedUserFactory is configured
- * in the JetspeedSecurity properties:
+ * Loads the security cache for the given user.
*
- * services.JetspeedSecurity.user.class=
- * org.apache.jetspeed.om.security.BaseJetspeedUser
- *
- * @param JetspeedUser the user to cache all role and permission information for.
+ * @param username the user to cache all role and permission information for.
*/
- public void load(JetspeedUser user)
- throws JetspeedSecurityException;
-
- public void unload(JetspeedUser user)
+ public void load(String username)
throws JetspeedSecurityException;
-
-
- public Role getRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException;
+ /*
+ * UnLoads the security cache for the given user.
+ *
+ * @param username the user to cache all role and permission information for.
+ */
+ public void unload(String username);
+
+
+ public void loadRolePermissions();
+
+ /**
+ * Retrieves a role from the cache for the given username.
+ *
+ * @param username The name key of the user.
+ * @param roleName The name of the role.
+ */
+ public Role getRole(String username, String roleName);
- public void addRole(JetspeedUser user, Role role)
- throws JetspeedSecurityException;
+ /**
+ * Retrieves a role from the cache for the given username.
+ *
+ */
+ public void addRole(String username, Role role);
- public boolean hasRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException;
+ public boolean hasRole(String username, String roleName);
- public void removeRole(JetspeedUser user, String roleName)
- throws JetspeedSecurityException;
+ public void removeRole(String username, String roleName);
- public Iterator getRoles(JetspeedUser user)
- throws JetspeedSecurityException;
+ public Iterator getRoles(String username);
+ public CachedAcl getAcl(String username);
- public Permission getPermission(JetspeedUser user, String roleName, String
permissionName)
- throws JetspeedSecurityException;
+ public Permission getPermission(String roleName, String permissionName);
- public void addPermission(JetspeedUser user, String roleName, Permission
permission)
- throws JetspeedSecurityException;
+ public void addPermission(String roleName, Permission permission);
- public boolean hasPermission(JetspeedUser user, String roleName, String
permissionName)
- throws JetspeedSecurityException;
+ public boolean hasPermission(String roleName, String permissionName);
- public void removePermission(JetspeedUser user, String roleName, String
permissionName)
- throws JetspeedSecurityException;
+ public void removePermission(String roleName, String permissionName);
- public Iterator getPermissions(JetspeedUser user, String roleName)
- throws JetspeedSecurityException;
+ public Iterator getPermissions(String roleName);
+
+ public void removeAllRoles(String rolename);
+
+ public void removeAllPermissions(String permissionName);
}
1.3 +12 -1
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/TestPermissionManagement.java
Index: TestPermissionManagement.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/TestPermissionManagement.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestPermissionManagement.java 28 Jun 2002 05:37:34 -0000 1.2
+++ TestPermissionManagement.java 16 Jul 2002 17:27:05 -0000 1.3
@@ -75,6 +75,8 @@
import org.apache.jetspeed.om.security.Permission;
import org.apache.jetspeed.om.security.JetspeedPermissionFactory;
+import org.apache.jetspeed.services.security.JetspeedSecurityCache;
+
/**
* Unit test for PermissionManagement interface
*
@@ -130,6 +132,7 @@
PermissionManagement service = getService();
Permission permission = null;
HashMap map = new HashMap();
+ JetspeedSecurityCache.loadRolePermissions();
try
{
@@ -163,6 +166,7 @@
PermissionManagement service = getService();
Permission permission = null;
HashMap map = new HashMap();
+ JetspeedSecurityCache.loadRolePermissions();
try
{
@@ -206,6 +210,7 @@
{
PermissionManagement service = getService();
Permission permission = null;
+ JetspeedSecurityCache.loadRolePermissions();
try
{
@@ -244,6 +249,7 @@
{
PermissionManagement service = getService();
Permission permission = null;
+ JetspeedSecurityCache.loadRolePermissions();
try
{
@@ -275,6 +281,7 @@
public void testGetPermission() throws Exception
{
PermissionManagement service = getService();
+ JetspeedSecurityCache.loadRolePermissions();
try
{
@@ -299,6 +306,7 @@
public void testSavePermission() throws Exception
{
PermissionManagement service = getService();
+ JetspeedSecurityCache.loadRolePermissions();
try
{
@@ -322,6 +330,7 @@
{
PermissionManagement service = getService();
Permission permission = null;
+ JetspeedSecurityCache.loadRolePermissions();
try
{
@@ -362,6 +371,7 @@
{
PermissionManagement service = getService();
Permission permission = null;
+ JetspeedSecurityCache.loadRolePermissions();
try
{
@@ -393,6 +403,7 @@
{
PermissionManagement service = getService();
Permission permission = null;
+ JetspeedSecurityCache.loadRolePermissions();
try
{
1.3 +3 -1
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/TestRoleManagement.java
Index: TestRoleManagement.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/TestRoleManagement.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestRoleManagement.java 28 Jun 2002 05:37:34 -0000 1.2
+++ TestRoleManagement.java 16 Jul 2002 17:27:05 -0000 1.3
@@ -75,6 +75,8 @@
import org.apache.jetspeed.om.security.Role;
import org.apache.jetspeed.om.security.JetspeedRoleFactory;
+import org.apache.jetspeed.services.security.JetspeedSecurityCache;
+
/**
* Unit test for RoleManagement interface
*
1.2 +54 -23
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/TestSecurityCache.java
Index: TestSecurityCache.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/TestSecurityCache.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestSecurityCache.java 15 Jul 2002 21:40:58 -0000 1.1
+++ TestSecurityCache.java 16 Jul 2002 17:27:05 -0000 1.2
@@ -132,14 +132,14 @@
try
{
JetspeedUser user = JetspeedSecurity.getUser("turbine");
- service.load(user);
- Role role = service.getRole(user, "user");
+ service.load(user.getUserName());
+ Role role = service.getRole(user.getUserName(), "user");
assertTrue(role.getName().equals("user"));
- assertTrue(service.hasRole(user, "user"));
- assertTrue(service.hasPermission(user, "user", "view"));
- assertTrue(service.hasPermission(user, "user", "customize"));
- assertTrue(service.hasPermission(user, "user", "maximize"));
- assertTrue(!service.hasPermission(user, "user", "failure"));
+ assertTrue(service.hasRole(user.getUserName(), "user"));
+ assertTrue(service.hasPermission("user", "view"));
+ assertTrue(service.hasPermission("user", "customize"));
+ assertTrue(service.hasPermission("user", "maximize"));
+ assertTrue(!service.hasPermission("user", "failure"));
}
catch (Exception e)
{
@@ -158,36 +158,36 @@
try
{
JetspeedUser user = JetspeedSecurity.getUser("anon");
- service.load(user);
+ service.load(user.getUserName());
- Role role1 = service.getRole(user, "guest");
+ Role role1 = service.getRole(user.getUserName(), "guest");
assertTrue(role1.getName().equals("guest"));
- assertTrue(service.hasPermission(user, "guest", "view"));
+ assertTrue(service.hasPermission("guest", "view"));
// add role
Role role2 = JetspeedSecurity.getRole("user");
- service.addRole(user, role2);
- assertTrue(service.hasRole(user, "user"));
- assertTrue(service.getRole(user,"user").getName().equals("user"));
+ service.addRole(user.getUserName(), role2);
+ assertTrue(service.hasRole(user.getUserName(), "user"));
+
assertTrue(service.getRole(user.getUserName(),"user").getName().equals("user"));
// remove role
- service.removeRole(user, "user");
- assertTrue(!service.hasRole(user, "user"));
- Role role3 = service.getRole(user,"user");
+ service.removeRole(user.getUserName(), "user");
+ assertTrue(!service.hasRole(user.getUserName(), "user"));
+ Role role3 = service.getRole(user.getUserName(),"user");
assertTrue(null == role3);
// add permission
Permission perm1 = JetspeedSecurity.getPermission("detach");
assertTrue(null != perm1);
- service.addPermission(user, "guest", perm1);
- Permission permission = service.getPermission(user, "guest", "detach");
+ service.addPermission("guest", perm1);
+ Permission permission = service.getPermission("guest", "detach");
assertTrue(permission.getName().equals("detach"));
- assertTrue(service.hasPermission(user, "guest", "detach"));
+ assertTrue(service.hasPermission("guest", "detach"));
// remove permission
- service.removePermission(user, "guest", "detach");
- assertTrue(!service.hasPermission(user, "guest", "detach"));
- Permission perm2 = service.getPermission(user, "guest", "detach");
+ service.removePermission("guest", "detach");
+ assertTrue(!service.hasPermission( "guest", "detach"));
+ Permission perm2 = service.getPermission( "guest", "detach");
assertTrue(null == perm2);
}
@@ -200,6 +200,37 @@
}
+ public void testRemoveAll() throws Exception
+ {
+ SecurityCacheService service = getService();
+ try
+ {
+ Role role = JetspeedSecurity.getRole("admin");
+ JetspeedUser anon = JetspeedSecurity.getUser("anon");
+ service.load(anon.getUserName());
+ JetspeedUser turbine = JetspeedSecurity.getUser("turbine");
+ service.load(turbine.getUserName());
+
+ service.addRole(anon.getUserName(), role);
+ service.addRole(turbine.getUserName(), role);
+
+ assertTrue(service.hasRole(anon.getUserName(), role.getName()));
+ assertTrue(service.hasRole(turbine.getUserName(), role.getName()));
+
+ service.removeAllRoles("admin");
+
+ assertTrue(!service.hasRole(anon.getUserName(), role.getName()));
+ assertTrue(!service.hasRole(turbine.getUserName(), role.getName()));
+
+ }
+ catch (Exception e)
+ {
+ fail(StringUtils.stackTrace(e));
+ }
+
+ System.out.println("Completed removeAll Test OK ");
+
+ }
/*
Configuration object to run Turbine outside a servlet container
1.3 +18 -3
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/TurbineAuthentication.java
Index: TurbineAuthentication.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/TurbineAuthentication.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TurbineAuthentication.java 28 Jun 2002 05:37:36 -0000 1.2
+++ TurbineAuthentication.java 16 Jul 2002 17:27:06 -0000 1.3
@@ -77,6 +77,7 @@
import org.apache.jetspeed.services.security.UnknownUserException;
import org.apache.jetspeed.services.security.UserException;
import org.apache.jetspeed.services.security.JetspeedSecurityException;
+import org.apache.jetspeed.services.security.JetspeedSecurityCache;
import org.apache.jetspeed.services.rundata.JetspeedRunDataService;
import org.apache.jetspeed.services.rundata.JetspeedRunData;
import org.apache.turbine.services.rundata.RunDataService;
@@ -101,6 +102,9 @@
private final static String CONFIG_ANONYMOUS_USER = "user.anonymous";
String anonymousUser = "anon";
+ private final static String CACHING_ENABLE = "caching.enable";
+ private boolean cachingEnable = true;
+
/**
* Given a public credential(username) and private credential(password),
@@ -150,6 +154,10 @@
{
user.updateLastLogin();
putUserIntoContext(user);
+ if (cachingEnable)
+ {
+ JetspeedSecurityCache.load(username);
+ }
}
catch (Exception e)
{
@@ -176,7 +184,10 @@
user = JetspeedUserManagement.getUser(new
UserNamePrincipal(anonymousUser));
user.setHasLoggedIn(new Boolean(false));
putUserIntoContext(user);
-
+ if (cachingEnable)
+ {
+ JetspeedSecurityCache.load(user.getUserName());
+ }
}
catch (JetspeedSecurityException e)
{
@@ -199,6 +210,10 @@
{
try
{
+ //if (cachingEnable)
+ //{
+ // JetspeedSecurityCache.unload(getUserFromContext().getUserName());
+ //}
getAnonymousUser();
}
catch (Exception e)
@@ -226,7 +241,7 @@
.getResources(JetspeedSecurityService.SERVICE_NAME);
anonymousUser = serviceConf.getString(CONFIG_ANONYMOUS_USER, anonymousUser);
-
+ cachingEnable = serviceConf.getBoolean( CACHING_ENABLE, cachingEnable );
this.runDataService =
(JetspeedRunDataService)TurbineServices.getInstance()
1.3 +33 -2
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/TurbinePermissionManagement.java
Index: TurbinePermissionManagement.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/TurbinePermissionManagement.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TurbinePermissionManagement.java 28 Jun 2002 05:37:36 -0000 1.2
+++ TurbinePermissionManagement.java 16 Jul 2002 17:27:06 -0000 1.3
@@ -63,6 +63,8 @@
// Jetspeed Security
import org.apache.jetspeed.services.security.PermissionManagement;
+import org.apache.jetspeed.services.security.JetspeedSecurityCache;
+import org.apache.jetspeed.services.security.CachedAcl;
import org.apache.jetspeed.om.security.JetspeedUser;
import org.apache.jetspeed.om.security.BaseJetspeedUser;
@@ -120,7 +122,8 @@
private final static String CASCADE_DELETE = "programmatic.cascade.delete";
private final static boolean DEFAULT_CASCADE_DELETE = true;
private boolean cascadeDelete;
-
+ private final static String CACHING_ENABLE = "caching.enable";
+ private boolean cachingEnable = true;
///////////////////////////////////////////////////////////////////////////
// Permission Management Interfaces
@@ -143,6 +146,14 @@
Role role = null;
try
{
+ if (cachingEnable)
+ {
+ Iterator iterator = JetspeedSecurityCache.getPermissions(rolename);
+ if (iterator != null)
+ {
+ return iterator;
+ }
+ }
role = JetspeedSecurity.getRole(rolename);
}
catch(JetspeedSecurityException e)
@@ -307,6 +318,11 @@
}
TurbinePermissionPeer.doDelete(criteria, conn);
conn.commit();
+
+ if (cachingEnable)
+ {
+ JetspeedSecurityCache.removeAllPermissions(permissionName);
+ }
}
catch(Exception e)
{
@@ -348,6 +364,10 @@
criteria.add(TurbineRolePermissionPeer.ROLE_ID, role.getId());
criteria.add(TurbineRolePermissionPeer.PERMISSION_ID,
permission.getId());
TurbineRolePermissionPeer.doInsert(criteria);
+ if (cachingEnable)
+ {
+ JetspeedSecurityCache.addPermission(roleName,permission);
+ }
}
catch(Exception e)
{
@@ -378,6 +398,10 @@
criteria.add(TurbineRolePermissionPeer.ROLE_ID, role.getId());
criteria.add(TurbineRolePermissionPeer.PERMISSION_ID,
permission.getId());
TurbineRolePermissionPeer.doDelete(criteria);
+ if (cachingEnable)
+ {
+ JetspeedSecurityCache.removePermission(roleName, permissionName);
+ }
}
catch(Exception e)
{
@@ -404,6 +428,11 @@
try
{
+ if (cachingEnable)
+ {
+ return JetspeedSecurityCache.hasPermission(roleName,
permissionName);
+ }
+
Role role = JetspeedSecurity.getRole(roleName);
Permission permission = this.getPermission(permissionName);
@@ -437,6 +466,7 @@
throws JetspeedSecurityException
{
Vector permissions;
+
try
{
Criteria criteria = new Criteria();
@@ -537,6 +567,7 @@
.getService(RunDataService.SERVICE_NAME);
cascadeDelete = serviceConf.getBoolean( CASCADE_DELETE,
DEFAULT_CASCADE_DELETE );
+ cachingEnable = serviceConf.getBoolean( CACHING_ENABLE, cachingEnable );
setInit(true);
}
1.3 +39 -1
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/TurbineRoleManagement.java
Index: TurbineRoleManagement.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/TurbineRoleManagement.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TurbineRoleManagement.java 28 Jun 2002 05:37:36 -0000 1.2
+++ TurbineRoleManagement.java 16 Jul 2002 17:27:06 -0000 1.3
@@ -63,6 +63,8 @@
// Jetspeed Security
import org.apache.jetspeed.services.security.RoleManagement;
+import org.apache.jetspeed.services.security.JetspeedSecurityCache;
+import org.apache.jetspeed.services.security.CachedAcl;
import org.apache.jetspeed.om.security.JetspeedUser;
import org.apache.jetspeed.om.security.BaseJetspeedUser;
@@ -129,6 +131,8 @@
private final static String CASCADE_DELETE = "programmatic.cascade.delete";
private final static boolean DEFAULT_CASCADE_DELETE = true;
private boolean cascadeDelete;
+ private final static String CACHING_ENABLE = "caching.enable";
+ private boolean cachingEnable = true;
///////////////////////////////////////////////////////////////////////////
@@ -152,6 +156,14 @@
JetspeedUser user = null;
try
{
+ if (cachingEnable)
+ {
+ Iterator result = JetspeedSecurityCache.getRoles(username);
+ if (null != result)
+ {
+ return result;
+ }
+ }
user = JetspeedSecurity.getUser(new UserNamePrincipal(username));
}
catch(JetspeedSecurityException e)
@@ -367,6 +379,11 @@
TurbineRolePeer.doDelete(criteria, conn);
PsmlManager.removeRoleDocuments(role);
conn.commit();
+
+ if (cachingEnable)
+ {
+ JetspeedSecurityCache.removeAllRoles(rolename);
+ }
}
catch(Exception e)
{
@@ -407,6 +424,11 @@
criteria.add(TurbineUserGroupRolePeer.GROUP_ID,
JetspeedSecurity.JETSPEED_GROUP_ID);
criteria.add(TurbineUserGroupRolePeer.ROLE_ID, role.getId());
TurbineUserGroupRolePeer.doInsert(criteria);
+
+ if (cachingEnable)
+ {
+ JetspeedSecurityCache.addRole(username, role);
+ }
}
catch(Exception e)
{
@@ -436,6 +458,12 @@
criteria.add(TurbineUserGroupRolePeer.GROUP_ID,
JetspeedSecurity.JETSPEED_GROUP_ID);
criteria.add(TurbineUserGroupRolePeer.ROLE_ID, role.getId());
TurbineUserGroupRolePeer.doDelete(criteria);
+
+ if (cachingEnable)
+ {
+ JetspeedSecurityCache.removeRole(username, rolename);
+ }
+
}
catch(Exception e)
{
@@ -460,6 +488,14 @@
try
{
+ if (cachingEnable)
+ {
+ CachedAcl acl = JetspeedSecurityCache.getAcl(username);
+ if (null != acl)
+ {
+ return acl.hasRole(rolename);
+ }
+ }
JetspeedUser user = JetspeedSecurity.getUser(username);
Role role = this.getRole(rolename);
@@ -594,6 +630,8 @@
.getService(RunDataService.SERVICE_NAME);
cascadeDelete = serviceConf.getBoolean( CASCADE_DELETE,
DEFAULT_CASCADE_DELETE );
+ cachingEnable = serviceConf.getBoolean( CACHING_ENABLE, cachingEnable );
+
setInit(true);
}
1.7 +4 -1 jakarta-jetspeed/webapp/WEB-INF/conf/JetspeedSecurity.properties
Index: JetspeedSecurity.properties
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/webapp/WEB-INF/conf/JetspeedSecurity.properties,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- JetspeedSecurity.properties 15 Jul 2002 21:40:58 -0000 1.6
+++ JetspeedSecurity.properties 16 Jul 2002 17:27:07 -0000 1.7
@@ -122,6 +122,9 @@
# anonymous user
services.JetspeedSecurity.user.anonymous=anon
+# Caching
+services.JetspeedSecurity.caching.enable=true
+
#########################################
# Action buttons #
#########################################
1.4 +4 -1 jakarta-jetspeed/webapp/WEB-INF/conf/JetspeedSecurity.template
Index: JetspeedSecurity.template
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/conf/JetspeedSecurity.template,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JetspeedSecurity.template 15 Jul 2002 21:40:58 -0000 1.3
+++ JetspeedSecurity.template 16 Jul 2002 17:27:07 -0000 1.4
@@ -122,6 +122,9 @@
# anonymous user
services.JetspeedSecurity.user.anonymous=anon
+# Caching
+services.JetspeedSecurity.caching.enable=true
+
#########################################
# Action buttons #
#########################################
1.14 +1 -1 jakarta-jetspeed/webapp/WEB-INF/db/jetspeed.properties
Index: jetspeed.properties
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/db/jetspeed.properties,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- jetspeed.properties 15 Jul 2002 21:40:58 -0000 1.13
+++ jetspeed.properties 16 Jul 2002 17:27:07 -0000 1.14
@@ -1,4 +1,4 @@
#Hypersonic SQL database
-#Mon Jul 15 14:21:50 PDT 2002
+#Tue Jul 16 09:48:08 PDT 2002
version=1.4
modified=yes
1.17 +15 -4 jakarta-jetspeed/webapp/WEB-INF/db/jetspeed.script
Index: jetspeed.script
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/db/jetspeed.script,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- jetspeed.script 15 Jul 2002 21:40:58 -0000 1.16
+++ jetspeed.script 16 Jul 2002 17:27:07 -0000 1.17
@@ -131,10 +131,21 @@
INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(390,1,1)
INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(400,1,1)
INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(410,1,1)
-INSERT INTO ID_TABLE VALUES(1,'TURBINE_PERMISSION',290,10)
-INSERT INTO ID_TABLE VALUES(2,'TURBINE_ROLE',370,10)
-INSERT INTO ID_TABLE VALUES(3,'TURBINE_GROUP',300,10)
-INSERT INTO ID_TABLE VALUES(4,'TURBINE_USER',420,10)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(420,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(430,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(440,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(450,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(460,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(470,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(480,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(490,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(500,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(510,1,1)
+INSERT INTO TURBINE_USER_GROUP_ROLE VALUES(520,1,1)
+INSERT INTO ID_TABLE VALUES(1,'TURBINE_PERMISSION',400,10)
+INSERT INTO ID_TABLE VALUES(2,'TURBINE_ROLE',480,10)
+INSERT INTO ID_TABLE VALUES(3,'TURBINE_GROUP',410,10)
+INSERT INTO ID_TABLE VALUES(4,'TURBINE_USER',530,10)
INSERT INTO ID_TABLE VALUES(5,'TURBINE_SCHEDULED_JOB',100,10)
INSERT INTO ID_TABLE VALUES(6,'TURBINE_ROLE_PERMISSION',100,10)
INSERT INTO ID_TABLE VALUES(7,'TURBINE_USER_GROUP_ROLE',100,10)
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>