diff --git a/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryHandler.java b/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryHandler.java index e22b51789c..d5a056e16f 100644 --- a/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryHandler.java +++ b/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryHandler.java @@ -49,8 +49,6 @@ import java.io.IOException; import sonia.scm.store.ConfigurationStore; import sonia.scm.store.ConfigurationStoreFactory; -import static sonia.scm.store.StoreParameters.forType; - /** * @@ -75,11 +73,10 @@ public abstract class AbstractRepositoryHandler * @param storeFactory */ protected AbstractRepositoryHandler(ConfigurationStoreFactory storeFactory) { - this.store = storeFactory.getStore( + this.store = storeFactory. forType(getConfigClass()) - .withName(getType().getName()) - .build() - ); + .withName(getType().getName()) + .build(); } //~--- get methods ---------------------------------------------------------- diff --git a/scm-core/src/main/java/sonia/scm/store/StoreFactory.java b/scm-core/src/main/java/sonia/scm/store/StoreFactory.java index a40e8cfeba..adf432d4e2 100644 --- a/scm-core/src/main/java/sonia/scm/store/StoreFactory.java +++ b/scm-core/src/main/java/sonia/scm/store/StoreFactory.java @@ -2,5 +2,9 @@ package sonia.scm.store; public interface StoreFactory { - STORE getStore(final StoreParameters storeParameters); + STORE getStore(final StoreParameters storeParameters); + + default StoreParameters.WithType forType(Class type) { + return new StoreParameters<>(this).new WithType(type); + } } diff --git a/scm-core/src/main/java/sonia/scm/store/StoreParameters.java b/scm-core/src/main/java/sonia/scm/store/StoreParameters.java index 7d3aca8aba..8abda1c86d 100644 --- a/scm-core/src/main/java/sonia/scm/store/StoreParameters.java +++ b/scm-core/src/main/java/sonia/scm/store/StoreParameters.java @@ -8,12 +8,18 @@ import sonia.scm.repository.Repository; * @author Mohamed Karray * @since 2.0.0 */ -public class StoreParameters { +public class StoreParameters { private Class type; private String name; private Repository repository; + private final StoreFactory factory; + + StoreParameters(StoreFactory factory) { + this.factory = factory; + } + public Class getType() { return type; } @@ -26,17 +32,13 @@ public class StoreParameters { return repository; } - public static WithType forType(Class type){ - return new StoreParameters().new WithType(type); - } - public class WithType { - private WithType(Class type) { + WithType(Class type) { StoreParameters.this.type = type; } - public WithTypeAndName withName(String name){ + public StoreParameters.WithTypeAndName withName(String name){ return new WithTypeAndName(name); } @@ -47,11 +49,11 @@ public class StoreParameters { StoreParameters.this.name = name; } - public WithTypeNameAndRepository forRepository(Repository repository){ + public StoreParameters.WithTypeNameAndRepository forRepository(Repository repository){ return new WithTypeNameAndRepository(repository); } - public StoreParameters build(){ - return StoreParameters.this; + public STORE build(){ + return factory.getStore(StoreParameters.this); } } @@ -60,8 +62,8 @@ public class StoreParameters { private WithTypeNameAndRepository(Repository repository) { StoreParameters.this.repository = repository; } - public StoreParameters build(){ - return StoreParameters.this; + public STORE build(){ + return factory.getStore(StoreParameters.this); } } } diff --git a/scm-dao-xml/src/main/java/sonia/scm/group/xml/XmlGroupDAO.java b/scm-dao-xml/src/main/java/sonia/scm/group/xml/XmlGroupDAO.java index 5236f9d7e7..0afc34e9c2 100644 --- a/scm-dao-xml/src/main/java/sonia/scm/group/xml/XmlGroupDAO.java +++ b/scm-dao-xml/src/main/java/sonia/scm/group/xml/XmlGroupDAO.java @@ -43,8 +43,6 @@ import sonia.scm.xml.AbstractXmlDAO; import sonia.scm.store.ConfigurationStoreFactory; -import static sonia.scm.store.StoreParameters.forType; - /** * * @author Sebastian Sdorra @@ -67,10 +65,10 @@ public class XmlGroupDAO extends AbstractXmlDAO */ @Inject public XmlGroupDAO(ConfigurationStoreFactory storeFactory) { - super(storeFactory.getStore( + super(storeFactory. forType(XmlGroupDatabase.class) .withName(STORE_NAME) - .build())); + .build()); } //~--- methods -------------------------------------------------------------- diff --git a/scm-dao-xml/src/main/java/sonia/scm/user/xml/XmlUserDAO.java b/scm-dao-xml/src/main/java/sonia/scm/user/xml/XmlUserDAO.java index 7f580c9945..2b97afc3ce 100644 --- a/scm-dao-xml/src/main/java/sonia/scm/user/xml/XmlUserDAO.java +++ b/scm-dao-xml/src/main/java/sonia/scm/user/xml/XmlUserDAO.java @@ -41,8 +41,6 @@ import sonia.scm.user.User; import sonia.scm.user.UserDAO; import sonia.scm.xml.AbstractXmlDAO; -import static sonia.scm.store.StoreParameters.forType; - /** * * @author Sebastian Sdorra @@ -66,10 +64,9 @@ public class XmlUserDAO extends AbstractXmlDAO @Inject public XmlUserDAO(ConfigurationStoreFactory storeFactory) { - super(storeFactory.getStore( - forType(XmlUserDatabase.class) + super(storeFactory.forType(XmlUserDatabase.class) .withName(STORE_NAME) - .build())); + .build()); } //~--- methods -------------------------------------------------------------- diff --git a/scm-dao-xml/src/test/java/sonia/scm/store/FileBlobStoreTest.java b/scm-dao-xml/src/test/java/sonia/scm/store/FileBlobStoreTest.java index ef694c23ac..5f78eb75a3 100644 --- a/scm-dao-xml/src/test/java/sonia/scm/store/FileBlobStoreTest.java +++ b/scm-dao-xml/src/test/java/sonia/scm/store/FileBlobStoreTest.java @@ -42,7 +42,6 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertNotNull; -import static sonia.scm.store.StoreParameters.forType; /** * @@ -66,11 +65,11 @@ public class FileBlobStoreTest extends BlobStoreTestBase @Test @SuppressWarnings("unchecked") public void shouldStoreAndLoadInRepository() { - BlobStore store = createBlobStoreFactory().getStore( + BlobStore store = createBlobStoreFactory(). forType(StoreObject.class) .withName("test") .forRepository(new Repository("id", "git", "ns", "n")) - .build()); + .build(); Blob createdBlob = store.create("abc"); List storedBlobs = store.getAll(); diff --git a/scm-dao-xml/src/test/java/sonia/scm/store/JAXBConfigurationEntryStoreTest.java b/scm-dao-xml/src/test/java/sonia/scm/store/JAXBConfigurationEntryStoreTest.java index 408318777e..a5c8049096 100644 --- a/scm-dao-xml/src/test/java/sonia/scm/store/JAXBConfigurationEntryStoreTest.java +++ b/scm-dao-xml/src/test/java/sonia/scm/store/JAXBConfigurationEntryStoreTest.java @@ -50,7 +50,6 @@ import java.util.UUID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static sonia.scm.store.StoreParameters.forType; //~--- JDK imports ------------------------------------------------------------ @@ -133,10 +132,10 @@ public class JAXBConfigurationEntryStoreTest ConfigurationEntryStore store = createPermissionStore(RESOURCE_FIXED, name); store.put("a45", new AssignedPermission("tuser4", "repository:create")); - store = createConfigurationStoreFactory().getStore( + store = createConfigurationStoreFactory(). forType(AssignedPermission.class) .withName(name) - .build()); + .build(); AssignedPermission ap = store.get("a45"); @@ -232,9 +231,9 @@ public class JAXBConfigurationEntryStoreTest } copy(resource, name); - return createConfigurationStoreFactory().getStore( + return createConfigurationStoreFactory(). forType(AssignedPermission.class) .withName(name) - .build()); + .build(); } } diff --git a/scm-dao-xml/src/test/java/sonia/scm/store/JAXBConfigurationStoreTest.java b/scm-dao-xml/src/test/java/sonia/scm/store/JAXBConfigurationStoreTest.java index ace6cb39c4..4760f2b0fc 100644 --- a/scm-dao-xml/src/test/java/sonia/scm/store/JAXBConfigurationStoreTest.java +++ b/scm-dao-xml/src/test/java/sonia/scm/store/JAXBConfigurationStoreTest.java @@ -35,11 +35,8 @@ package sonia.scm.store; import org.junit.Test; import sonia.scm.repository.Repository; -import java.io.IOException; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static sonia.scm.store.StoreParameters.forType; /** * Unit tests for {@link JAXBConfigurationStore}. @@ -57,13 +54,13 @@ public class JAXBConfigurationStoreTest extends StoreTestBase { @Test @SuppressWarnings("unchecked") - public void shouldStoreAndLoadInRepository() throws IOException + public void shouldStoreAndLoadInRepository() { - ConfigurationStore store = createStoreFactory().getStore( + ConfigurationStore store = createStoreFactory(). forType(StoreObject.class) .withName("test") .forRepository(new Repository("id", "git", "ns", "n")) - .build()); + .build(); store.set(new StoreObject("value")); StoreObject storeObject = store.get(); diff --git a/scm-dao-xml/src/test/java/sonia/scm/store/JAXBDataStoreTest.java b/scm-dao-xml/src/test/java/sonia/scm/store/JAXBDataStoreTest.java index bd4ccedb66..e3df72c2e7 100644 --- a/scm-dao-xml/src/test/java/sonia/scm/store/JAXBDataStoreTest.java +++ b/scm-dao-xml/src/test/java/sonia/scm/store/JAXBDataStoreTest.java @@ -40,7 +40,6 @@ import sonia.scm.security.UUIDKeyGenerator; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static sonia.scm.store.StoreParameters.forType; /** * @@ -62,17 +61,17 @@ public class JAXBDataStoreTest extends DataStoreTestBase { @Override protected DataStore getDataStore(Class type, Repository repository) { - return createDataStoreFactory().getStore(forType(type) + return createDataStoreFactory().forType(type) .withName("test") .forRepository(repository) - .build()); + .build(); } @Override protected DataStore getDataStore(Class type) { - return createDataStoreFactory().getStore(forType(type) + return createDataStoreFactory().forType(type) .withName("test") - .build()); + .build(); } @Test diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/lfs/LfsBlobStoreFactory.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/lfs/LfsBlobStoreFactory.java index a03868505f..59fff8cd2f 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/lfs/LfsBlobStoreFactory.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/lfs/LfsBlobStoreFactory.java @@ -38,8 +38,6 @@ import sonia.scm.repository.Repository; import sonia.scm.store.BlobStore; import sonia.scm.store.BlobStoreFactory; -import static sonia.scm.store.StoreParameters.forType; - /** * Creates {@link BlobStore} objects to store lfs objects. * @@ -78,11 +76,9 @@ public class LfsBlobStoreFactory { */ @SuppressWarnings("unchecked") public BlobStore getLfsBlobStore(Repository repository) { - return blobStoreFactory.getStore( - forType(String.class) + return blobStoreFactory.forType(String.class) .withName(repository.getId() + GIT_LFS_REPOSITORY_POSTFIX) .forRepository(repository) - .build() - ); + .build(); } } diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java index d3eca1d6e0..ed25dc2f6b 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryHandlerTest.java @@ -33,6 +33,7 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -44,6 +45,8 @@ import java.io.File; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; //~--- JDK imports ------------------------------------------------------------ @@ -81,6 +84,10 @@ public class GitRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase { assertTrue(refs.isDirectory()); } + @Before + public void initFactory() { + when(factory.forType(any())).thenCallRealMethod(); + } @Override protected RepositoryHandler createRepositoryHandler(ConfigurationStoreFactory factory, diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsBlobStoreFactoryTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsBlobStoreFactoryTest.java index 8cc36a2ec4..23077a9f5f 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsBlobStoreFactoryTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/web/lfs/LfsBlobStoreFactoryTest.java @@ -41,9 +41,11 @@ import sonia.scm.repository.Repository; import sonia.scm.store.BlobStoreFactory; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; /** * Unit tests for {@link LfsBlobStoreFactory}. @@ -61,6 +63,7 @@ public class LfsBlobStoreFactoryTest { @Test public void getBlobStore() { + when(blobStoreFactory.forType(any())).thenCallRealMethod(); Repository repository = new Repository("the-id", "GIT", "space", "the-name"); lfsBlobStoreFactory.getLfsBlobStore(repository); @@ -73,7 +76,7 @@ public class LfsBlobStoreFactoryTest { })); // make sure there have been no further usages of the factory - verifyNoMoreInteractions(blobStoreFactory); + verify(blobStoreFactory, times(1)).getStore(any()); } } diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java index 7a13c06eb2..9f351ba9e1 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/HgRepositoryHandlerTest.java @@ -34,6 +34,7 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -44,6 +45,8 @@ import java.io.File; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; //~--- JDK imports ------------------------------------------------------------ @@ -67,6 +70,11 @@ public class HgRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase { assertTrue(hgDirectory.isDirectory()); } + @Before + public void initFactory() { + when(factory.forType(any())).thenCallRealMethod(); + } + @Override protected RepositoryHandler createRepositoryHandler(ConfigurationStoreFactory factory, RepositoryLocationResolver locationResolver, File directory) { HgRepositoryHandler handler = new HgRepositoryHandler(factory, new HgContextProvider(), locationResolver); diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java index 04e8cf5c06..4b7f6486b4 100644 --- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java +++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/SvnRepositoryHandlerTest.java @@ -32,6 +32,7 @@ package sonia.scm.repository; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -42,12 +43,14 @@ import sonia.scm.store.ConfigurationStore; import sonia.scm.store.ConfigurationStoreFactory; import java.io.File; +import java.io.IOException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.initMocks; //~--- JDK imports ------------------------------------------------------------ @@ -55,15 +58,11 @@ import static org.mockito.Mockito.when; * * @author Sebastian Sdorra */ -@RunWith(MockitoJUnitRunner.class) public class SvnRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase { @Mock private ConfigurationStoreFactory factory; - @Mock - private ConfigurationStore store; - @Mock private com.google.inject.Provider repositoryManagerProvider; @@ -71,6 +70,12 @@ public class SvnRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase { private HookEventFacade facade = new HookEventFacade(repositoryManagerProvider, hookContextFactory); + @Override + protected void postSetUp() throws IOException, RepositoryPathNotFoundException { + initMocks(this); + super.postSetUp(); + } + @Override protected void checkDirectory(File directory) { File format = new File(directory, "format"); @@ -102,7 +107,7 @@ public class SvnRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase { @Test public void getDirectory() { - when(factory.getStore(any())).thenReturn(store); + when(factory.forType(any())).thenCallRealMethod(); SvnRepositoryHandler repositoryHandler = new SvnRepositoryHandler(factory, facade, locationResolver); diff --git a/scm-test/src/main/java/sonia/scm/store/BlobStoreTestBase.java b/scm-test/src/main/java/sonia/scm/store/BlobStoreTestBase.java index 3c029bc781..c9355da37d 100644 --- a/scm-test/src/main/java/sonia/scm/store/BlobStoreTestBase.java +++ b/scm-test/src/main/java/sonia/scm/store/BlobStoreTestBase.java @@ -50,7 +50,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static sonia.scm.store.StoreParameters.forType; //~--- JDK imports ------------------------------------------------------------ @@ -70,12 +69,11 @@ public abstract class BlobStoreTestBase extends AbstractTestBase @Before public void createBlobStore() { - store = createBlobStoreFactory().getStore( + store = createBlobStoreFactory(). forType(Blob.class) .withName("test") .forRepository(RepositoryTestData.createHeartOfGold()) - .build() - ); + .build(); store.clear(); } diff --git a/scm-test/src/main/java/sonia/scm/store/ConfigurationEntryStoreTestBase.java b/scm-test/src/main/java/sonia/scm/store/ConfigurationEntryStoreTestBase.java index df08a98f60..961ad92a70 100644 --- a/scm-test/src/main/java/sonia/scm/store/ConfigurationEntryStoreTestBase.java +++ b/scm-test/src/main/java/sonia/scm/store/ConfigurationEntryStoreTestBase.java @@ -34,8 +34,6 @@ package sonia.scm.store; import sonia.scm.repository.Repository; -import static sonia.scm.store.StoreParameters.forType; - /** * * @author Sebastian Sdorra @@ -53,18 +51,16 @@ public abstract class ConfigurationEntryStoreTestBase extends KeyValueStoreTestB //~--- get methods ---------------------------------------------------------- @Override protected ConfigurationEntryStore getDataStore(Class type) { - StoreParameters params = forType(type) + return this.createConfigurationStoreFactory().forType(type) .withName(storeName) .build(); - return this.createConfigurationStoreFactory().getStore(params); } @Override protected ConfigurationEntryStore getDataStore(Class type, Repository repository) { - StoreParameters params = forType(type) - .withName(repoStoreName) - .forRepository(repository) - .build(); - return this.createConfigurationStoreFactory().getStore(params); + return this.createConfigurationStoreFactory().forType(type) + .withName(repoStoreName) + .forRepository(repository) + .build(); } } diff --git a/scm-test/src/main/java/sonia/scm/store/DataStoreTestBase.java b/scm-test/src/main/java/sonia/scm/store/DataStoreTestBase.java index b1d1b49ebb..71525a8352 100644 --- a/scm-test/src/main/java/sonia/scm/store/DataStoreTestBase.java +++ b/scm-test/src/main/java/sonia/scm/store/DataStoreTestBase.java @@ -39,7 +39,6 @@ import sonia.scm.repository.RepositoryTestData; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static sonia.scm.store.StoreParameters.forType; /** * @@ -57,12 +56,6 @@ public abstract class DataStoreTestBase extends KeyValueStoreTestBase protected abstract DataStoreFactory createDataStoreFactory(); - protected StoreParameters getStoreParametersWithRepository(Repository repository) { - return forType(StoreObject.class) - .withName("test") - .forRepository(repository) - .build(); - } //~--- get methods ---------------------------------------------------------- @@ -76,7 +69,10 @@ public abstract class DataStoreTestBase extends KeyValueStoreTestBase StoreObject obj = new StoreObject("test-1"); Repository repository = RepositoryTestData.createHeartOfGold(); - DataStore store = dataStoreFactory.getStore(getStoreParametersWithRepository(repository)); + DataStore store = dataStoreFactory.forType(StoreObject.class) + .withName("test") + .forRepository(repository) + .build(); String id = store.put(obj); diff --git a/scm-test/src/main/java/sonia/scm/store/StoreTestBase.java b/scm-test/src/main/java/sonia/scm/store/StoreTestBase.java index 5bd665582a..7e03e51bdc 100644 --- a/scm-test/src/main/java/sonia/scm/store/StoreTestBase.java +++ b/scm-test/src/main/java/sonia/scm/store/StoreTestBase.java @@ -40,7 +40,6 @@ import sonia.scm.AbstractTestBase; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static sonia.scm.store.StoreParameters.forType; //~--- JDK imports ------------------------------------------------------------ @@ -67,7 +66,7 @@ public abstract class StoreTestBase extends AbstractTestBase @Test public void testGet() { - ConfigurationStore store = createStoreFactory().getStore(forType(StoreObject.class).withName("test").build()); + ConfigurationStore store = createStoreFactory().forType(StoreObject.class).withName("test").build(); assertNotNull(store); @@ -83,7 +82,7 @@ public abstract class StoreTestBase extends AbstractTestBase @Test public void testSet() { - ConfigurationStore store = createStoreFactory().getStore(forType(StoreObject.class).withName("test").build()); + ConfigurationStore store = createStoreFactory().forType(StoreObject.class).withName("test").build(); assertNotNull(store); diff --git a/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java b/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java index 9f2bb86365..7a8c3e2afd 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java +++ b/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java @@ -55,7 +55,6 @@ import sonia.scm.event.ScmEventBus; import sonia.scm.group.GroupEvent; import sonia.scm.store.ConfigurationEntryStore; import sonia.scm.store.ConfigurationEntryStoreFactory; -import sonia.scm.store.StoreParameters; import sonia.scm.user.UserEvent; import sonia.scm.util.ClassLoaders; @@ -77,8 +76,6 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; -import static sonia.scm.store.StoreParameters.forType; - /** * TODO add events * @@ -114,10 +111,10 @@ public class DefaultSecuritySystem implements SecuritySystem @SuppressWarnings("unchecked") public DefaultSecuritySystem(ConfigurationEntryStoreFactory storeFactory) { - store = storeFactory.getStore( + store = storeFactory. forType(AssignedPermission.class) .withName(NAME) - .build()); + .build(); readAvailablePermissions(); } diff --git a/scm-webapp/src/main/java/sonia/scm/security/SecureKeyResolver.java b/scm-webapp/src/main/java/sonia/scm/security/SecureKeyResolver.java index 72a7751515..d4a2331088 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/SecureKeyResolver.java +++ b/scm-webapp/src/main/java/sonia/scm/security/SecureKeyResolver.java @@ -47,7 +47,6 @@ import sonia.scm.store.ConfigurationEntryStore; import sonia.scm.store.ConfigurationEntryStoreFactory; import static com.google.common.base.Preconditions.*; -import static sonia.scm.store.StoreParameters.forType; //~--- JDK imports ------------------------------------------------------------ @@ -91,10 +90,10 @@ public class SecureKeyResolver extends SigningKeyResolverAdapter @SuppressWarnings("unchecked") public SecureKeyResolver(ConfigurationEntryStoreFactory storeFactory) { - store = storeFactory.getStore( + store = storeFactory. forType(SecureKey.class) .withName(STORE_NAME) - .build()); + .build(); } //~--- methods -------------------------------------------------------------- diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AutoCompleteResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AutoCompleteResourceTest.java index 1dc93522a1..604d3a70e2 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AutoCompleteResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AutoCompleteResourceTest.java @@ -67,6 +67,7 @@ public class AutoCompleteResourceTest { xmlDB = mock(XmlDatabase.class); when(storeConfig.get()).thenReturn(xmlDB); when(storeFactory.getStore(any())).thenReturn(storeConfig); + when(storeFactory.forType(any())).thenCallRealMethod(); XmlUserDAO userDao = new XmlUserDAO(storeFactory); this.userDao = spy(userDao); XmlGroupDAO groupDAO = new XmlGroupDAO(storeFactory); diff --git a/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java b/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java index 81b237de2a..8be2b4c831 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java @@ -48,6 +48,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.argThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -125,6 +126,7 @@ public class SecureKeyResolverTest { ConfigurationEntryStoreFactory factory = mock(ConfigurationEntryStoreFactory.class); + when(factory.forType(any())).thenCallRealMethod(); when(factory.getStore(argThat(storeParameters -> { assertThat(storeParameters.getName()).isEqualTo(SecureKeyResolver.STORE_NAME); assertThat(storeParameters.getType()).isEqualTo(SecureKey.class);