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.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<WebSecurityContext> securityContextProvider,
StoreFactory storeFactory, Set<RepositoryHandler> handlerSet,
Provider<Set<RepositoryListener>> repositoryListenersProvider,
Provider<Set<RepositoryHook>> 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<XmlRepositoryDatabase> store;
/** Field description */
private ScmConfiguration configuration;
/** Field description */
private Map<String, RepositoryHandler> handlerMap;

View File

@@ -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<RepositoryHook>());
return new XmlRepositoryManager(contextProvider,
ScmConfiguration configuration = new ScmConfiguration();
return new XmlRepositoryManager(configuration, contextProvider,
MockUtil.getAdminSecurityContextProvider(),
factory, handlerSet, listenerProvider,
hookProvider);