]> source.dussan.org Git - archiva.git/commitdiff
fix unit tests while implementing [MRM-1505] in rev 1163444
authorOlivier Lamy <olamy@apache.org>
Wed, 31 Aug 2011 10:30:09 +0000 (10:30 +0000)
committerOlivier Lamy <olamy@apache.org>
Wed, 31 Aug 2011 10:30:09 +0000 (10:30 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1163565 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java

index 8e296ac07016da6ad4cd525ae28d25d43bae3ba4..d42103d87446f6c009ebff2115fbc8151b747d5d 100644 (file)
@@ -280,24 +280,17 @@ public class DefaultManagedRepositoryAdmin
 
         triggerAuditEvent( repositoryId, null, AuditEvent.DELETE_MANAGED_REPO, auditInformation );
 
-        RepositorySession repositorySession = repositorySessionFactory.createSession();
-        try
-        {
-            MetadataRepository metadataRepository = repositorySession.getRepository();
-            metadataRepository.removeRepository( repository.getId() );
-            log.debug( "call repositoryStatisticsManager.deleteStatistics" );
-            repositoryStatisticsManager.deleteStatistics( metadataRepository, repository.getId() );
-            repositorySession.save();
-        }
-        catch ( MetadataRepositoryException e )
-        {
-            throw new RepositoryAdminException( e.getMessage(), e );
-        }
-        finally
+        deleteManagedRepository( repository, deleteContent, config, false );
+
+        // stage repo exists ?
+        ManagedRepositoryConfiguration stagingRepository =
+            archivaConfiguration.getConfiguration().findManagedRepositoryById( repositoryId + STAGE_REPO_ID_END );
+        if ( stagingRepository != null )
         {
-            repositorySession.close();
+            // do not trigger event when deleting the staged one
+            //triggerAuditEvent( stagingRepository.getId(), null, AuditEvent.DELETE_MANAGED_REPO, auditInformation );
+            deleteManagedRepository( stagingRepository, deleteContent, config, true );
         }
-        config.removeManagedRepository( repository );
 
         try
         {
@@ -308,6 +301,35 @@ public class DefaultManagedRepositoryAdmin
             throw new RepositoryAdminException( "Error saving configuration for delete action" + e.getMessage() );
         }
 
+        return Boolean.TRUE;
+    }
+
+    private Boolean deleteManagedRepository( ManagedRepositoryConfiguration repository, boolean deleteContent,
+                                             Configuration config, boolean stagedOne )
+        throws RepositoryAdminException
+    {
+        if ( !stagedOne )
+        {
+            RepositorySession repositorySession = repositorySessionFactory.createSession();
+            try
+            {
+                MetadataRepository metadataRepository = repositorySession.getRepository();
+                metadataRepository.removeRepository( repository.getId() );
+                log.debug( "call repositoryStatisticsManager.deleteStatistics" );
+                repositoryStatisticsManager.deleteStatistics( metadataRepository, repository.getId() );
+                repositorySession.save();
+            }
+            catch ( MetadataRepositoryException e )
+            {
+                throw new RepositoryAdminException( e.getMessage(), e );
+            }
+            finally
+            {
+                repositorySession.close();
+            }
+        }
+        config.removeManagedRepository( repository );
+
         if ( deleteContent )
         {
             // TODO could be async ? as directory can be huge
@@ -318,6 +340,7 @@ public class DefaultManagedRepositoryAdmin
             }
         }
 
+
         // olamy: copy list for reading as a unit test in webapp fail with ConcurrentModificationException
         List<ProxyConnectorConfiguration> proxyConnectors =
             new ArrayList<ProxyConnectorConfiguration>( config.getProxyConnectors() );
@@ -329,7 +352,7 @@ public class DefaultManagedRepositoryAdmin
             }
         }
 
-        Map<String, List<String>> repoToGroupMap = archivaConfiguration.getConfiguration().getRepositoryToGroupMap();
+        Map<String, List<String>> repoToGroupMap = config.getRepositoryToGroupMap();
         if ( repoToGroupMap != null )
         {
             if ( repoToGroupMap.containsKey( repository.getId() ) )
@@ -352,15 +375,6 @@ public class DefaultManagedRepositoryAdmin
             throw new RepositoryAdminException(
                 "fail to remove repository roles for repository " + repository.getId() + " : " + e.getMessage(), e );
         }
-
-        // stage repo exists ?
-        ManagedRepositoryConfiguration stagingRepository =
-            archivaConfiguration.getConfiguration().findManagedRepositoryById( repositoryId + STAGE_REPO_ID_END );
-        if ( stagingRepository != null )
-        {
-            deleteManagedRepository( stagingRepository.getId(), auditInformation, deleteContent );
-        }
-
         return Boolean.TRUE;
     }
 
index 6d09a066e6ceffb27ef3dc288f0e0224fd640408..cd446165c411b98fa4e22aa7e92dd809f8cb7acf 100644 (file)
@@ -101,6 +101,7 @@ public class DeleteManagedRepositoryAction
         {
             addActionError(
                 "Unable to delete repository, content may already be partially removed: " + e.getMessage() );
+            log.error( e.getMessage(), e );
             result = ERROR;
         }
         return result;
index 59200542af10e0896f201834384ea42cce10b045..ee940535faf43270ad5ccc19c6ad5a5489a35c3d 100644 (file)
@@ -42,7 +42,6 @@ import javax.inject.Inject;
  * AddManagedRepositoryAction
  *
  * @version $Id$
- * plexus.component role="com.opensymphony.xwork2.Action" role-hint="editManagedRepositoryAction" instantiation-strategy="per-lookup"
  */
 @Controller( "editManagedRepositoryAction" )
 @Scope( "prototype" )
index fa67af57831ae9ea8bf14dce8b0fdc97b4e3ec4e..ca8398ec77de95b36c936278eb427f073c7e3691 100644 (file)
@@ -340,6 +340,10 @@ public class DeleteManagedRepositoryActionTest
         archivaConfigurationControl.setReturnValue( stageRepoConfiguration );
 
         archivaConfiguration.save( configuration );
+
+        // save for staging repo delete
+        archivaConfiguration.save( configuration );
+
         archivaConfigurationControl.replay();
 
         action.setRepoid( REPO_ID );