Author: oching
Date: Tue Nov 21 03:43:09 2006
New Revision: 477635

URL: http://svn.apache.org/viewvc?view=rev&rev=477635
Log:
PR: MRM-231

Added deletion of user profiles associated with a specific repository once that 
repository is deleted.

Modified:
    
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/AbstractDeleteRepositoryAction.java
    
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/DeleteRepositoryAction.java

Modified: 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/AbstractDeleteRepositoryAction.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/AbstractDeleteRepositoryAction.java?view=diff&rev=477635&r1=477634&r2=477635
==============================================================================
--- 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/AbstractDeleteRepositoryAction.java
 (original)
+++ 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/AbstractDeleteRepositoryAction.java
 Tue Nov 21 03:43:09 2006
@@ -28,6 +28,8 @@
 import org.codehaus.plexus.security.ui.web.interceptor.SecureActionBundle;
 import org.codehaus.plexus.security.ui.web.interceptor.SecureActionException;
 import org.codehaus.plexus.xwork.action.PlexusActionSupport;
+import org.codehaus.plexus.rbac.profile.RoleProfileManager;
+import org.codehaus.plexus.rbac.profile.RoleProfileException;
 
 import java.io.IOException;
 
@@ -55,6 +57,10 @@
      */
     private String operation = "unmodified";
 
+    /**
+     * @plexus.requirement role-hint="archiva"
+     */
+    protected RoleProfileManager roleProfileManager;
     public String execute()
         throws ConfigurationStoreException, IOException, 
InvalidConfigurationException, ConfigurationChangeException
     {
@@ -92,7 +98,7 @@
     protected abstract AbstractRepositoryConfiguration getRepository( 
Configuration configuration );
 
     protected abstract void removeRepository( Configuration configuration,
-                                              AbstractRepositoryConfiguration 
existingRepository );
+        AbstractRepositoryConfiguration existingRepository );
 
     public String input()
     {
@@ -138,4 +144,5 @@
 
         return bundle;
     }
+
 }

Modified: 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/DeleteRepositoryAction.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/DeleteRepositoryAction.java?view=diff&rev=477635&r1=477634&r2=477635
==============================================================================
--- 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/DeleteRepositoryAction.java
 (original)
+++ 
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/DeleteRepositoryAction.java
 Tue Nov 21 03:43:09 2006
@@ -20,6 +20,7 @@
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.RepositoryConfiguration;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.rbac.profile.RoleProfileException;
 
 import java.io.IOException;
 
@@ -39,6 +40,16 @@
     protected void removeRepository( Configuration configuration, 
AbstractRepositoryConfiguration existingRepository )
     {
         configuration.removeRepository( (RepositoryConfiguration) 
existingRepository );
+
+        try
+        {
+            removeRepositoryRoles( existingRepository );
+        }
+        catch ( RoleProfileException e )
+        {
+            getLogger().error( "Error removing user roles associated with 
repository " +
+                existingRepository.getId() );
+        }
     }
 
     protected void removeContents( AbstractRepositoryConfiguration 
existingRepository )
@@ -47,5 +58,20 @@
         RepositoryConfiguration repository = (RepositoryConfiguration) 
existingRepository;
         getLogger().info( "Removing " + repository.getDirectory() );
         FileUtils.deleteDirectory( repository.getDirectory() );
+    }
+
+    /**
+     * Remove user roles associated with the repository
+     * 
+     * @param existingRepository
+     * @throws RoleProfileException
+     */
+    private void removeRepositoryRoles( AbstractRepositoryConfiguration 
existingRepository )
+        throws RoleProfileException
+    {
+        roleProfileManager.deleteDynamicRole( "archiva-repository-manager", 
existingRepository.getId() );
+        roleProfileManager.deleteDynamicRole( "archiva-repository-observer", 
existingRepository.getId() );
+
+        getLogger().info( "removed user roles associated with repository " + 
existingRepository.getId() );
     }
 }


Reply via email to