You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2013/02/21 15:37:38 UTC
svn commit: r1448661 -
/archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java
Author: olamy
Date: Thu Feb 21 14:37:38 2013
New Revision: 1448661
URL: http://svn.apache.org/r1448661
Log:
add some caching in the chained rbac manager
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java?rev=1448661&r1=1448660&r2=1448661&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java Thu Feb 21 14:37:38 2013
@@ -185,6 +185,13 @@ public class ArchivaRbacManager
public Role getRole( String roleName )
throws RbacObjectNotFoundException, RbacManagerException
{
+
+ Role el = rolesCache.get( roleName );
+ if ( el != null )
+ {
+ return el;
+ }
+
Exception lastException = null;
for ( RBACManager rbacManager : rbacManagersPerId.values() )
{
@@ -193,6 +200,7 @@ public class ArchivaRbacManager
Role role = rbacManager.getRole( roleName );
if ( role != null )
{
+ rolesCache.put( role.getName(), role );
return role;
}
}
@@ -250,6 +258,7 @@ public class ArchivaRbacManager
try
{
rbacManager.removeRole( role );
+ rolesCache.remove( role.getName() );
allFailed = false;
}
catch ( Exception e )
@@ -305,6 +314,13 @@ public class ArchivaRbacManager
public Permission getPermission( String permissionName )
throws RbacObjectNotFoundException, RbacManagerException
{
+
+ Permission el = permissionsCache.get( permissionName );
+ if ( el != null )
+ {
+ return el;
+ }
+
Exception lastException = null;
for ( RBACManager rbacManager : rbacManagersPerId.values() )
{
@@ -313,6 +329,7 @@ public class ArchivaRbacManager
Permission p = rbacManager.getPermission( permissionName );
if ( p != null )
{
+ permissionsCache.put( permissionName, p );
return p;
}
}
@@ -369,6 +386,7 @@ public class ArchivaRbacManager
try
{
rbacManager.removePermission( permission );
+ permissionsCache.remove( permission.getName() );
allFailed = false;
}
catch ( Exception e )
@@ -417,6 +435,13 @@ public class ArchivaRbacManager
public Operation getOperation( String operationName )
throws RbacObjectNotFoundException, RbacManagerException
{
+
+ Operation el = operationsCache.get( operationName );
+ if ( el != null )
+ {
+ return el;
+ }
+
Exception lastException = null;
for ( RBACManager rbacManager : rbacManagersPerId.values() )
{
@@ -425,6 +450,7 @@ public class ArchivaRbacManager
Operation o = rbacManager.getOperation( operationName );
if ( o != null )
{
+ operationsCache.put( operationName, o );
return o;
}
}
@@ -481,6 +507,7 @@ public class ArchivaRbacManager
try
{
rbacManager.removeOperation( operation );
+ operationsCache.remove( operation.getName() );
allFailed = false;
}
catch ( Exception e )
@@ -531,6 +558,12 @@ public class ArchivaRbacManager
throws RbacObjectNotFoundException, RbacManagerException
{
+ Resource el = resourcesCache.get( resourceIdentifier );
+ if ( el != null )
+ {
+ return el;
+ }
+
Exception lastException = null;
for ( RBACManager rbacManager : rbacManagersPerId.values() )
{
@@ -539,6 +572,7 @@ public class ArchivaRbacManager
Resource r = rbacManager.getResource( resourceIdentifier );
if ( r != null )
{
+ resourcesCache.put( resourceIdentifier, r );
return r;
}
}
@@ -595,6 +629,7 @@ public class ArchivaRbacManager
try
{
rbacManager.removeResource( resource );
+ resourcesCache.remove( resource.getIdentifier() );
allFailed = false;
}
catch ( Exception e )
@@ -643,6 +678,11 @@ public class ArchivaRbacManager
public UserAssignment getUserAssignment( String principal )
throws RbacObjectNotFoundException, RbacManagerException
{
+ UserAssignment el = userAssignmentsCache.get( principal );
+ if ( el != null )
+ {
+ return el;
+ }
Exception lastException = null;
for ( RBACManager rbacManager : rbacManagersPerId.values() )
@@ -652,6 +692,7 @@ public class ArchivaRbacManager
UserAssignment ua = rbacManager.getUserAssignment( principal );
if ( ua != null )
{
+ userAssignmentsCache.put( principal, ua );
return ua;
}
}
@@ -782,6 +823,7 @@ public class ArchivaRbacManager
try
{
rbacManager.removeUserAssignment( userAssignment );
+ userAssignmentsCache.remove( userAssignment.getPrincipal() );
allFailed = false;
}
catch ( Exception e )
@@ -800,6 +842,12 @@ public class ArchivaRbacManager
public boolean roleExists( String name )
throws RbacManagerException
{
+ Role r = rolesCache.get( name );
+ if ( r != null )
+ {
+ return true;
+ }
+
boolean allFailed = true;
Exception lastException = null;
for ( RBACManager rbacManager : rbacManagersPerId.values() )