You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2020/11/26 21:21:11 UTC
[archiva] 01/02: Update after redback API changes
This is an automated email from the ASF dual-hosted git repository.
martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git
commit a2442befca1e7b9c9f81cc434d86cf7b7ed8cd41
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Mon Nov 16 17:26:53 2020 +0100
Update after redback API changes
---
.../consumers/lucene/test/TestRBACManager.java | 24 +++++++++++
.../consumers/lucene/test/TestRoleManager.java | 2 +-
.../archiva/web/security/ArchivaRbacManager.java | 50 +++++++++++++++++++++-
.../apache/archiva/web/rss/RoleManagerStub.java | 2 +-
4 files changed, 75 insertions(+), 3 deletions(-)
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRBACManager.java b/archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRBACManager.java
index adcc425..26e891d 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRBACManager.java
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRBACManager.java
@@ -79,12 +79,24 @@ public class TestRBACManager implements RBACManager
}
@Override
+ public Role createRole( String id, String name )
+ {
+ return null;
+ }
+
+ @Override
public boolean roleExists( String name )
{
return false;
}
@Override
+ public boolean roleExistsById( String id ) throws RbacManagerException
+ {
+ return false;
+ }
+
+ @Override
public boolean roleExists( Role role )
{
return false;
@@ -112,6 +124,12 @@ public class TestRBACManager implements RBACManager
}
@Override
+ public Role getRoleById( String id ) throws RbacObjectNotFoundException, RbacManagerException
+ {
+ return null;
+ }
+
+ @Override
public Map<String, Role> getRoles( Collection<String> roleNames )
throws RbacObjectNotFoundException, RbacManagerException
{
@@ -168,6 +186,12 @@ public class TestRBACManager implements RBACManager
}
@Override
+ public void removeRoleById( String id ) throws RbacObjectNotFoundException, RbacManagerException
+ {
+
+ }
+
+ @Override
public Permission createPermission( String name )
throws RbacManagerException
{
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRoleManager.java b/archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRoleManager.java
index 8f3bb64..dd87dfc 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRoleManager.java
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRoleManager.java
@@ -61,7 +61,7 @@ public class TestRoleManager
}
@Override
- public void updateRole( String templateId, String oldResource, String newResource )
+ public void moveTemplatedRole( String templateId, String oldResource, String newResource )
throws RoleManagerException
{
//To change body of implemented methods use File | Settings | File Templates.
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java b/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java
index 67dc4b7..d0995b7 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java
+++ b/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java
@@ -80,6 +80,10 @@ public class ArchivaRbacManager
private Cache<String, Role> rolesCache;
@Inject
+ @Named( value = "cache#rolesById" )
+ private Cache<String, Role> rolesByIdCache;
+
+ @Inject
@Named( value = "cache#userAssignments" )
private Cache<String, UserAssignment> userAssignmentsCache;
@@ -134,6 +138,7 @@ public class ArchivaRbacManager
operationsCache.clear();
permissionsCache.clear();
rolesCache.clear();
+ rolesByIdCache.clear();
userAssignmentsCache.clear();
userPermissionsCache.clear();
effectiveRoleSetCache.clear();
@@ -161,6 +166,12 @@ public class ArchivaRbacManager
}
@Override
+ public Role createRole( String id, String name )
+ {
+ return getRbacManagerForWrite( ).createRole( id, name );
+ }
+
+ @Override
public Role saveRole( Role role )
throws RbacObjectInvalidException, RbacManagerException
{
@@ -235,6 +246,7 @@ public class ArchivaRbacManager
if ( role != null )
{
rolesCache.put( role.getName(), role );
+ rolesByIdCache.put( role.getId( ), role );
return role;
}
}
@@ -248,7 +260,42 @@ public class ArchivaRbacManager
{
throw new RbacManagerException( lastException.getMessage(), lastException );
}
- return null;
+ throw new RbacObjectNotFoundException( "Role not found " + roleName );
+ }
+
+ @Override
+ public Role getRoleById( String id ) throws RbacObjectNotFoundException, RbacManagerException
+ {
+ Role el = rolesByIdCache.get( id );
+ if ( el != null )
+ {
+ return el;
+ }
+
+ Exception lastException = null;
+ for ( RBACManager rbacManager : rbacManagersPerId.values() )
+ {
+ try
+ {
+ Role role = rbacManager.getRoleById( id );
+ if ( role != null )
+ {
+ rolesCache.put( role.getName(), role );
+ rolesByIdCache.put( role.getId( ), role );
+ return role;
+ }
+ }
+ catch ( Exception e )
+ {
+ lastException = e;
+ }
+ }
+ log.debug( "cannot find role for id: ‘{}", id );
+ if ( lastException != null )
+ {
+ throw new RbacManagerException( lastException.getMessage(), lastException );
+ }
+ throw new RbacObjectNotFoundException( "Role not found " + id );
}
@Override
@@ -295,6 +342,7 @@ public class ArchivaRbacManager
{
rbacManager.removeRole( role );
rolesCache.remove( role.getName() );
+ rolesByIdCache.remove( role.getId( ) );
allFailed = false;
}
catch ( Exception e )
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/web/rss/RoleManagerStub.java b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/web/rss/RoleManagerStub.java
index 7b3e312..442f21d 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/web/rss/RoleManagerStub.java
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/web/rss/RoleManagerStub.java
@@ -61,7 +61,7 @@ public class RoleManagerStub
}
@Override
- public void updateRole( String templateId, String oldResource, String newResource )
+ public void moveTemplatedRole( String templateId, String oldResource, String newResource )
throws RoleManagerException
{
//To change body of implemented methods use File | Settings | File Templates.