From 78a4203590a19b63402772e07eb6ec306a1f53cb Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 30 Mar 2012 11:00:41 +0200 Subject: [PATCH] only archive repositories can be deleted, if the repository archive mode is enabled --- .../scm/repository/xml/XmlRepositoryManager.java | 15 ++++++++++++++- .../scm/repository/XmlRepositoryManagerTest.java | 5 ++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java index 79a42a53a4..d2c64c419a 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/xml/XmlRepositoryManager.java @@ -46,6 +46,7 @@ import sonia.scm.ConfigurationException; import sonia.scm.HandlerEvent; import sonia.scm.SCMContextProvider; import sonia.scm.Type; +import sonia.scm.config.ScmConfiguration; import sonia.scm.repository.AbstractRepositoryManager; import sonia.scm.repository.BlameViewer; import sonia.scm.repository.ChangesetViewer; @@ -113,6 +114,8 @@ public class XmlRepositoryManager extends AbstractRepositoryManager * * * + * + * @param configuration * @param contextProvider * @param securityContextProvider * @param storeFactory @@ -122,12 +125,13 @@ public class XmlRepositoryManager extends AbstractRepositoryManager */ @Inject public XmlRepositoryManager( - SCMContextProvider contextProvider, + ScmConfiguration configuration, SCMContextProvider contextProvider, Provider securityContextProvider, StoreFactory storeFactory, Set handlerSet, Provider> repositoryListenersProvider, Provider> repositoryHooksProvider) { + this.configuration = configuration; this.securityContextProvider = securityContextProvider; this.store = storeFactory.getStore(XmlRepositoryDatabase.class, STORE_NAME); this.repositoryListenersProvider = repositoryListenersProvider; @@ -239,6 +243,12 @@ public class XmlRepositoryManager extends AbstractRepositoryManager assertIsOwner(repository); + if (configuration.isEnableRepositoryArchive() &&!repository.isArchived()) + { + throw new RepositoryException( + "Repository could not deleted, because it is not archived."); + } + if (repositoryDB.contains(repository)) { getHandler(repository).delete(repository); @@ -989,6 +999,9 @@ public class XmlRepositoryManager extends AbstractRepositoryManager /** Field description */ private final Store store; + /** Field description */ + private ScmConfiguration configuration; + /** Field description */ private Map handlerMap; diff --git a/scm-webapp/src/test/java/sonia/scm/repository/XmlRepositoryManagerTest.java b/scm-webapp/src/test/java/sonia/scm/repository/XmlRepositoryManagerTest.java index dd501461c9..bad6b8e237 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/XmlRepositoryManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/XmlRepositoryManagerTest.java @@ -40,6 +40,7 @@ import com.google.inject.Provider; import org.junit.Test; import sonia.scm.Type; +import sonia.scm.config.ScmConfiguration; import sonia.scm.repository.xml.XmlRepositoryManager; import sonia.scm.store.JAXBStoreFactory; import sonia.scm.store.StoreFactory; @@ -132,7 +133,9 @@ public class XmlRepositoryManagerTest extends RepositoryManagerTestBase when(hookProvider.get()).thenReturn(new HashSet()); - return new XmlRepositoryManager(contextProvider, + ScmConfiguration configuration = new ScmConfiguration(); + + return new XmlRepositoryManager(configuration, contextProvider, MockUtil.getAdminSecurityContextProvider(), factory, handlerSet, listenerProvider, hookProvider);