diff --git a/scm-ui/pom.xml b/scm-ui/pom.xml
index 58c935ad21..e05c9b0ade 100644
--- a/scm-ui/pom.xml
+++ b/scm-ui/pom.xml
@@ -68,6 +68,7 @@
+ ${skipTests}
diff --git a/scm-webapp/src/main/java/sonia/scm/ManagerDaoAdapter.java b/scm-webapp/src/main/java/sonia/scm/ManagerDaoAdapter.java
index b94ce934f6..abc9ab2fd9 100644
--- a/scm-webapp/src/main/java/sonia/scm/ManagerDaoAdapter.java
+++ b/scm-webapp/src/main/java/sonia/scm/ManagerDaoAdapter.java
@@ -4,6 +4,7 @@ import com.github.sdorra.ssp.PermissionCheck;
import sonia.scm.util.AssertUtil;
import java.util.function.Function;
+import java.util.function.Predicate;
import java.util.function.Supplier;
public class ManagerDaoAdapter {
@@ -38,9 +39,13 @@ public class ManagerDaoAdapter {
}
public T create(T newObject, Supplier permissionCheck, AroundHandler beforeCreate, AroundHandler afterCreate) throws E {
+ return create(newObject, permissionCheck, beforeCreate, afterCreate, dao::contains);
+ }
+
+ public T create(T newObject, Supplier permissionCheck, AroundHandler beforeCreate, AroundHandler afterCreate, Predicate existsCheck) throws E {
permissionCheck.get().check();
AssertUtil.assertIsValid(newObject);
- if (dao.contains(newObject)) {
+ if (existsCheck.test(newObject)) {
throw alreadyExistsException.apply(newObject);
}
newObject.setCreationDate(System.currentTimeMillis());
diff --git a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java
index 6998893652..69e969f9cb 100644
--- a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java
+++ b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java
@@ -42,14 +42,30 @@ import com.google.inject.Singleton;
import org.apache.shiro.concurrent.SubjectAwareExecutorService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import sonia.scm.*;
+import sonia.scm.ArgumentIsInvalidException;
+import sonia.scm.ConfigurationException;
+import sonia.scm.HandlerEventType;
+import sonia.scm.ManagerDaoAdapter;
+import sonia.scm.SCMContextProvider;
+import sonia.scm.Type;
import sonia.scm.config.ScmConfiguration;
import sonia.scm.security.KeyGenerator;
-import sonia.scm.util.*;
+import sonia.scm.util.AssertUtil;
+import sonia.scm.util.CollectionAppender;
+import sonia.scm.util.HttpUtil;
+import sonia.scm.util.IOUtil;
+import sonia.scm.util.Util;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
@@ -138,7 +154,8 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
}
fireEvent(HandlerEventType.BEFORE_CREATE, newRepository);
},
- newRepository -> fireEvent(HandlerEventType.CREATE, newRepository)
+ newRepository -> fireEvent(HandlerEventType.CREATE, newRepository),
+ newRepository -> repositoryDAO.contains(newRepository.getNamespaceAndName())
);
}