From 4f0ccd302047d49b32275fd4dcc1a269154d5b46 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Wed, 31 Aug 2011 07:12:47 +0000 Subject: [PATCH] [MRM-1505] api to configure ManagedRepository fix delete of staged repo too. git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1163510 13f79535-47bb-0310-9956-ffa450edef68 --- .../DefaultManagedRepositoryAdmin.java | 21 ++++++++++++------- .../managed/ManagedRepositoryAdminTest.java | 18 ++++++++++++++-- 2 files changed, 30 insertions(+), 9 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 69eb0104e..8e296ac07 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 @@ -75,6 +75,8 @@ public class DefaultManagedRepositoryAdmin private Logger log = LoggerFactory.getLogger( getClass() ); + public static final String STAGE_REPO_ID_END = "-stage"; + @Inject private ArchivaConfiguration archivaConfiguration; @@ -108,7 +110,7 @@ public class DefaultManagedRepositoryAdmin for ( ManagedRepositoryConfiguration repoConfig : managedRepoConfigs ) { - // TODO add staging repo too + // TODO add staging repo information back too ManagedRepository repo = new ManagedRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getLocation(), repoConfig.getLayout(), repoConfig.isSnapshots(), repoConfig.isReleases(), @@ -263,10 +265,6 @@ public class DefaultManagedRepositoryAdmin } - // FIXME delete stagedRepo if exists !!!! - // find it tru : - // stagingRepository = - // archivaConfiguration.getConfiguration().findManagedRepositoryById( repoid + "-stage" ); public Boolean deleteManagedRepository( String repositoryId, AuditInformation auditInformation, boolean deleteContent ) throws RepositoryAdminException @@ -354,6 +352,15 @@ 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; } @@ -521,9 +528,9 @@ public class DefaultManagedRepositoryAdmin private ManagedRepositoryConfiguration getStageRepoConfig( ManagedRepositoryConfiguration repository ) { ManagedRepositoryConfiguration stagingRepository = new ManagedRepositoryConfiguration(); - stagingRepository.setId( repository.getId() + "-stage" ); + stagingRepository.setId( repository.getId() + STAGE_REPO_ID_END ); stagingRepository.setLayout( repository.getLayout() ); - stagingRepository.setName( repository.getName() + "-stage" ); + stagingRepository.setName( repository.getName() + STAGE_REPO_ID_END ); stagingRepository.setBlockRedeployments( repository.isBlockRedeployments() ); stagingRepository.setDaysOlder( repository.getDaysOlder() ); stagingRepository.setDeleteReleasedSnapshots( repository.isDeleteReleasedSnapshots() ); diff --git a/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java b/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java index c230e088c..69b9e6654 100644 --- a/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java +++ b/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java @@ -49,6 +49,8 @@ public class ManagedRepositoryAdminTest @Inject protected RoleManager roleManager; + public static final String STAGE_REPO_ID_END = DefaultManagedRepositoryAdmin.STAGE_REPO_ID_END; + @Test public void getAllManagedRepos() throws Exception @@ -109,7 +111,6 @@ public class ManagedRepositoryAdminTest managedRepositoryAdmin.deleteManagedRepository( repoId, getFakeAuditInformation(), false ); - // deleteContents false assertTrue( repoDir.exists() ); @@ -221,16 +222,28 @@ public class ManagedRepositoryAdminTest assertTemplateRoleExists( repoId ); + assertTrue( repoDir.exists() ); + + assertNotNull( managedRepositoryAdmin.getManagedRepository( repoId + STAGE_REPO_ID_END ) ); + + assertTemplateRoleExists( repoId + STAGE_REPO_ID_END ); + + assertTrue( new File( repoLocation + STAGE_REPO_ID_END ).exists() ); + managedRepositoryAdmin.deleteManagedRepository( repoId, getFakeAuditInformation(), true ); assertFalse( repoDir.exists() ); + assertFalse( new File( repoLocation + STAGE_REPO_ID_END ).exists() ); + repos = managedRepositoryAdmin.getManagedRepositories(); assertNotNull( repos ); assertEquals( initialSize, repos.size() ); assertTemplateRoleNotExists( repoId ); + assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END ); + mockAuditListener.clearEvents(); } @@ -265,7 +278,8 @@ public class ManagedRepositoryAdminTest assertEquals( "root", mockAuditListener.getAuditEvents().get( 0 ).getUserId() ); } - private File clearRepoLocation(String path) throws Exception + private File clearRepoLocation( String path ) + throws Exception { File repoDir = new File( path ); if ( repoDir.exists() ) -- 2.39.5