From 44d96f29ad5f611f240d43372894f517c661dcd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 1 Aug 2018 09:59:23 +0200 Subject: [PATCH 1/2] Initialize missing user database at startup --- .../src/main/java/sonia/scm/user/DefaultUserManager.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java b/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java index 563e140434..25f8c61b3b 100644 --- a/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java +++ b/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java @@ -40,6 +40,7 @@ import com.google.inject.Inject; import com.google.inject.Singleton; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import sonia.scm.EagerSingleton; import sonia.scm.HandlerEventType; import sonia.scm.ManagerDaoAdapter; import sonia.scm.SCMContextProvider; @@ -55,7 +56,11 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import java.io.IOException; import java.io.InputStream; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; //~--- JDK imports ------------------------------------------------------------ @@ -63,7 +68,7 @@ import java.util.*; * * @author Sebastian Sdorra */ -@Singleton +@Singleton @EagerSingleton public class DefaultUserManager extends AbstractUserManager { From 41170a1c8344bb3dd43e897e391faa5cf9ff0756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 1 Aug 2018 11:40:09 +0200 Subject: [PATCH 2/2] Fix error for multiple creation of repositories --- .../java/sonia/scm/ManagerDaoAdapter.java | 7 +++++- .../repository/DefaultRepositoryManager.java | 25 ++++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) 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()) ); }