From d111b2f894fb328cfc64aeb1e1507c43dfda5efa Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Wed, 31 Aug 2011 10:30:09 +0000 Subject: [PATCH] fix unit tests while implementing [MRM-1505] in rev 1163444 git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1163565 13f79535-47bb-0310-9956-ffa450edef68 --- .../DefaultManagedRepositoryAdmin.java | 66 +++++++++++-------- .../DeleteManagedRepositoryAction.java | 1 + .../EditManagedRepositoryAction.java | 1 - .../DeleteManagedRepositoryActionTest.java | 4 ++ 4 files changed, 45 insertions(+), 27 deletions(-) diff --git a/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java b/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java index 8e296ac07..d42103d87 100644 --- a/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java +++ b/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java @@ -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 proxyConnectors = new ArrayList( config.getProxyConnectors() ); @@ -329,7 +352,7 @@ public class DefaultManagedRepositoryAdmin } } - Map> repoToGroupMap = archivaConfiguration.getConfiguration().getRepositoryToGroupMap(); + Map> 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; } diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java index 6d09a066e..cd446165c 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java @@ -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; diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java index 59200542a..ee940535f 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java @@ -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" ) diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java index fa67af578..ca8398ec7 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java +++ b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java @@ -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 ); -- 2.39.5