mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 08:25:44 +01:00
Use namespace strategy to set new namespace
This commit is contained in:
@@ -246,11 +246,6 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
|
|||||||
|
|
||||||
public Repository rename(Repository repository, String newNamespace, String newName) {
|
public Repository rename(Repository repository, String newNamespace, String newName) {
|
||||||
|
|
||||||
if (!configuration.getNamespaceStrategy().equals("CustomNamespaceStrategy")
|
|
||||||
&& !repository.getNamespace().equals(newNamespace)) {
|
|
||||||
throw new ChangeNamespaceNotAllowedException(repository);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasNamespaceOrNameNotChanged(repository, newNamespace, newName)) {
|
if (hasNamespaceOrNameNotChanged(repository, newNamespace, newName)) {
|
||||||
throw new NoChangesMadeException(repository);
|
throw new NoChangesMadeException(repository);
|
||||||
}
|
}
|
||||||
@@ -259,8 +254,13 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
|
|||||||
if (!Strings.isNullOrEmpty(newName)) {
|
if (!Strings.isNullOrEmpty(newName)) {
|
||||||
changedRepository.setName(newName);
|
changedRepository.setName(newName);
|
||||||
}
|
}
|
||||||
if (!Strings.isNullOrEmpty(newNamespace)) {
|
|
||||||
changedRepository.setNamespace(newNamespace);
|
if (!Strings.isNullOrEmpty(newNamespace) && !repository.getNamespace().equals(newNamespace)) {
|
||||||
|
NamespaceStrategy strategy = namespaceStrategyProvider.get();
|
||||||
|
if (!strategy.canBeChanged()) {
|
||||||
|
throw new ChangeNamespaceNotAllowedException(repository);
|
||||||
|
}
|
||||||
|
changedRepository.setNamespace(strategy.createNamespace(changedRepository));
|
||||||
}
|
}
|
||||||
|
|
||||||
managerDaoAdapter.modify(
|
managerDaoAdapter.modify(
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ import static org.junit.Assert.assertTrue;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.anyString;
|
import static org.mockito.Mockito.anyString;
|
||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
import static org.mockito.Mockito.doReturn;
|
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -108,6 +107,8 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
|||||||
@Rule
|
@Rule
|
||||||
public ExpectedException thrown = ExpectedException.none();
|
public ExpectedException thrown = ExpectedException.none();
|
||||||
|
|
||||||
|
private NamespaceStrategy namespaceStrategy = mock(NamespaceStrategy.class);
|
||||||
|
|
||||||
private ScmConfiguration configuration;
|
private ScmConfiguration configuration;
|
||||||
|
|
||||||
private String mockedNamespace = "default_namespace";
|
private String mockedNamespace = "default_namespace";
|
||||||
@@ -390,6 +391,8 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
|||||||
public void shouldThrowChangeNamespaceNotAllowedException() {
|
public void shouldThrowChangeNamespaceNotAllowedException() {
|
||||||
Repository repository = new Repository("1", "hg", "space", "x");
|
Repository repository = new Repository("1", "hg", "space", "x");
|
||||||
RepositoryManager repoManager = createManager();
|
RepositoryManager repoManager = createManager();
|
||||||
|
when(namespaceStrategy.canBeChanged()).thenReturn(false);
|
||||||
|
|
||||||
thrown.expect(ChangeNamespaceNotAllowedException.class);
|
thrown.expect(ChangeNamespaceNotAllowedException.class);
|
||||||
|
|
||||||
repoManager.rename(repository, "hitchhiker", "heart-of-gold");
|
repoManager.rename(repository, "hitchhiker", "heart-of-gold");
|
||||||
@@ -397,7 +400,6 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldThrowNoChangesMadeException() {
|
public void shouldThrowNoChangesMadeException() {
|
||||||
configuration.setNamespaceStrategy("CustomNamespaceStrategy");
|
|
||||||
Repository repository = new Repository("1", "hg", "space", "x");
|
Repository repository = new Repository("1", "hg", "space", "x");
|
||||||
RepositoryManager repoManager = createManager();
|
RepositoryManager repoManager = createManager();
|
||||||
|
|
||||||
@@ -410,7 +412,6 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
|||||||
public void shouldOnlyChangeRepositoryName() {
|
public void shouldOnlyChangeRepositoryName() {
|
||||||
Repository repository = createTestRepository();
|
Repository repository = createTestRepository();
|
||||||
RepositoryManager repoManager = (RepositoryManager) manager;
|
RepositoryManager repoManager = (RepositoryManager) manager;
|
||||||
configuration.setNamespaceStrategy("UsernameNamespaceStrategy");
|
|
||||||
|
|
||||||
Repository changedRepo = repoManager.rename(repository, "default_namespace", "puzzle42");
|
Repository changedRepo = repoManager.rename(repository, "default_namespace", "puzzle42");
|
||||||
assertNotEquals(changedRepo.getName(), repository.getName());
|
assertNotEquals(changedRepo.getName(), repository.getName());
|
||||||
@@ -420,11 +421,12 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
|||||||
public void shouldRenameRepositoryNamespaceAndName() {
|
public void shouldRenameRepositoryNamespaceAndName() {
|
||||||
Repository repository = createTestRepository();
|
Repository repository = createTestRepository();
|
||||||
RepositoryManager repoManager = (RepositoryManager) manager;
|
RepositoryManager repoManager = (RepositoryManager) manager;
|
||||||
configuration.setNamespaceStrategy("CustomNamespaceStrategy");
|
when(namespaceStrategy.canBeChanged()).thenReturn(true);
|
||||||
|
when(namespaceStrategy.createNamespace(any(Repository.class))).thenReturn("hitchhiker");
|
||||||
|
|
||||||
Repository changedRepo = repoManager.rename(repository, "hitchhiker", "puzzle42");
|
Repository changedRepo = repoManager.rename(repository, "hitchhiker", "puzzle42");
|
||||||
assertNotEquals(changedRepo.getName(), repository.getName());
|
assertEquals("puzzle42", changedRepo.getName());
|
||||||
assertNotEquals(changedRepo.getNamespace(), repository.getNamespace());
|
assertEquals("hitchhiker", changedRepo.getNamespace());
|
||||||
}
|
}
|
||||||
|
|
||||||
//~--- methods --------------------------------------------------------------
|
//~--- methods --------------------------------------------------------------
|
||||||
@@ -445,7 +447,6 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
|||||||
|
|
||||||
this.configuration = new ScmConfiguration();
|
this.configuration = new ScmConfiguration();
|
||||||
|
|
||||||
NamespaceStrategy namespaceStrategy = mock(NamespaceStrategy.class);
|
|
||||||
when(namespaceStrategy.createNamespace(Mockito.any(Repository.class))).thenAnswer(invocation -> mockedNamespace);
|
when(namespaceStrategy.createNamespace(Mockito.any(Repository.class))).thenAnswer(invocation -> mockedNamespace);
|
||||||
|
|
||||||
return new DefaultRepositoryManager(configuration, contextProvider,
|
return new DefaultRepositoryManager(configuration, contextProvider,
|
||||||
|
|||||||
Reference in New Issue
Block a user