]> source.dussan.org Git - archiva.git/commitdiff
Update after redback API changes
authorMartin Stockhammer <martin_s@apache.org>
Mon, 16 Nov 2020 16:26:53 +0000 (17:26 +0100)
committerMartin Stockhammer <martin_s@apache.org>
Mon, 16 Nov 2020 16:26:53 +0000 (17:26 +0100)
archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRBACManager.java
archiva-modules/archiva-base/archiva-consumers/archiva-indexer-consumers/src/test/java/org/apache/archiva/consumers/lucene/test/TestRoleManager.java
archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaRbacManager.java
archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/web/rss/RoleManagerStub.java

index adcc42550f77e23fdce0eb607a4754c418148919..26e891dcb6ed4defec94a9edc86cd1e943220ca3 100644 (file)
@@ -78,12 +78,24 @@ public class TestRBACManager implements RBACManager
         return null;
     }
 
+    @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 )
     {
@@ -111,6 +123,12 @@ public class TestRBACManager implements RBACManager
         return null;
     }
 
+    @Override
+    public Role getRoleById( String id ) throws RbacObjectNotFoundException, RbacManagerException
+    {
+        return null;
+    }
+
     @Override
     public Map<String, Role> getRoles( Collection<String> roleNames )
         throws RbacObjectNotFoundException, RbacManagerException
@@ -167,6 +185,12 @@ public class TestRBACManager implements RBACManager
         //To change body of implemented methods use File | Settings | File Templates.
     }
 
+    @Override
+    public void removeRoleById( String id ) throws RbacObjectNotFoundException, RbacManagerException
+    {
+
+    }
+
     @Override
     public Permission createPermission( String name )
         throws RbacManagerException
index 8f3bb644f70e3d658ff18e4f610b4ede14403c4d..dd87dfc040072001bc747cfcc97fcc4ff4b570ad 100644 (file)
@@ -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.
index 67dc4b7a439c8d71615cabf5f945d3f76684b0db..d0995b73512e0e4efc3b74ea02719dfaff2f6698 100644 (file)
@@ -79,6 +79,10 @@ public class ArchivaRbacManager
     @Named( value = "cache#roles" )
     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();
@@ -160,6 +165,12 @@ public class ArchivaRbacManager
         return getRbacManagerForWrite().createRole( name );
     }
 
+    @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 )
index 7b3e312008b4c1e4795190271e781566323c7149..442f21d37977aca59768954123841ef26ec22d90 100644 (file)
@@ -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.