only archive repositories can be deleted, if the repository archive mode is enabled

This commit is contained in:
Sebastian Sdorra
2012-03-30 11:00:41 +02:00
parent ff2288892f
commit 78a4203590
2 changed files with 18 additions and 2 deletions

View File

@@ -46,6 +46,7 @@ import sonia.scm.ConfigurationException;
import sonia.scm.HandlerEvent; import sonia.scm.HandlerEvent;
import sonia.scm.SCMContextProvider; import sonia.scm.SCMContextProvider;
import sonia.scm.Type; import sonia.scm.Type;
import sonia.scm.config.ScmConfiguration;
import sonia.scm.repository.AbstractRepositoryManager; import sonia.scm.repository.AbstractRepositoryManager;
import sonia.scm.repository.BlameViewer; import sonia.scm.repository.BlameViewer;
import sonia.scm.repository.ChangesetViewer; import sonia.scm.repository.ChangesetViewer;
@@ -113,6 +114,8 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
* *
* *
* *
*
* @param configuration
* @param contextProvider * @param contextProvider
* @param securityContextProvider * @param securityContextProvider
* @param storeFactory * @param storeFactory
@@ -122,12 +125,13 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
*/ */
@Inject @Inject
public XmlRepositoryManager( public XmlRepositoryManager(
SCMContextProvider contextProvider, ScmConfiguration configuration, SCMContextProvider contextProvider,
Provider<WebSecurityContext> securityContextProvider, Provider<WebSecurityContext> securityContextProvider,
StoreFactory storeFactory, Set<RepositoryHandler> handlerSet, StoreFactory storeFactory, Set<RepositoryHandler> handlerSet,
Provider<Set<RepositoryListener>> repositoryListenersProvider, Provider<Set<RepositoryListener>> repositoryListenersProvider,
Provider<Set<RepositoryHook>> repositoryHooksProvider) Provider<Set<RepositoryHook>> repositoryHooksProvider)
{ {
this.configuration = configuration;
this.securityContextProvider = securityContextProvider; this.securityContextProvider = securityContextProvider;
this.store = storeFactory.getStore(XmlRepositoryDatabase.class, STORE_NAME); this.store = storeFactory.getStore(XmlRepositoryDatabase.class, STORE_NAME);
this.repositoryListenersProvider = repositoryListenersProvider; this.repositoryListenersProvider = repositoryListenersProvider;
@@ -239,6 +243,12 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
assertIsOwner(repository); assertIsOwner(repository);
if (configuration.isEnableRepositoryArchive() &&!repository.isArchived())
{
throw new RepositoryException(
"Repository could not deleted, because it is not archived.");
}
if (repositoryDB.contains(repository)) if (repositoryDB.contains(repository))
{ {
getHandler(repository).delete(repository); getHandler(repository).delete(repository);
@@ -989,6 +999,9 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
/** Field description */ /** Field description */
private final Store<XmlRepositoryDatabase> store; private final Store<XmlRepositoryDatabase> store;
/** Field description */
private ScmConfiguration configuration;
/** Field description */ /** Field description */
private Map<String, RepositoryHandler> handlerMap; private Map<String, RepositoryHandler> handlerMap;

View File

@@ -40,6 +40,7 @@ import com.google.inject.Provider;
import org.junit.Test; import org.junit.Test;
import sonia.scm.Type; import sonia.scm.Type;
import sonia.scm.config.ScmConfiguration;
import sonia.scm.repository.xml.XmlRepositoryManager; import sonia.scm.repository.xml.XmlRepositoryManager;
import sonia.scm.store.JAXBStoreFactory; import sonia.scm.store.JAXBStoreFactory;
import sonia.scm.store.StoreFactory; import sonia.scm.store.StoreFactory;
@@ -132,7 +133,9 @@ public class XmlRepositoryManagerTest extends RepositoryManagerTestBase
when(hookProvider.get()).thenReturn(new HashSet<RepositoryHook>()); when(hookProvider.get()).thenReturn(new HashSet<RepositoryHook>());
return new XmlRepositoryManager(contextProvider, ScmConfiguration configuration = new ScmConfiguration();
return new XmlRepositoryManager(configuration, contextProvider,
MockUtil.getAdminSecurityContextProvider(), MockUtil.getAdminSecurityContextProvider(),
factory, handlerSet, listenerProvider, factory, handlerSet, listenerProvider,
hookProvider); hookProvider);