diff --git a/scm-test/src/main/java/sonia/scm/store/InMemoryConfigurationEntryStoreFactory.java b/scm-test/src/main/java/sonia/scm/store/InMemoryConfigurationEntryStoreFactory.java index 48e60684b6..3e5d3a8dac 100644 --- a/scm-test/src/main/java/sonia/scm/store/InMemoryConfigurationEntryStoreFactory.java +++ b/scm-test/src/main/java/sonia/scm/store/InMemoryConfigurationEntryStoreFactory.java @@ -1,28 +1,23 @@ package sonia.scm.store; +import java.util.HashMap; +import java.util.Map; + public class InMemoryConfigurationEntryStoreFactory implements ConfigurationEntryStoreFactory { + private final Map stores = new HashMap<>(); - - - private ConfigurationEntryStore store; - - public static ConfigurationEntryStoreFactory create() { - return new InMemoryConfigurationEntryStoreFactory(new InMemoryConfigurationEntryStore()); - } - - public InMemoryConfigurationEntryStoreFactory() { - } - - public InMemoryConfigurationEntryStoreFactory(ConfigurationEntryStore store) { - this.store = store; + public static InMemoryConfigurationEntryStoreFactory create() { + return new InMemoryConfigurationEntryStoreFactory(); } @Override public ConfigurationEntryStore getStore(TypedStoreParameters storeParameters) { - if (store != null) { - return store; - } - return new InMemoryConfigurationEntryStore<>(); + String name = storeParameters.getName(); + return get(name); + } + + public InMemoryConfigurationEntryStore get(String name) { + return stores.computeIfAbsent(name, x -> new InMemoryConfigurationEntryStore()); } } diff --git a/scm-test/src/main/java/sonia/scm/store/InMemoryConfigurationStoreFactory.java b/scm-test/src/main/java/sonia/scm/store/InMemoryConfigurationStoreFactory.java index ee21703c4a..aaa5b6c593 100644 --- a/scm-test/src/main/java/sonia/scm/store/InMemoryConfigurationStoreFactory.java +++ b/scm-test/src/main/java/sonia/scm/store/InMemoryConfigurationStoreFactory.java @@ -35,6 +35,9 @@ package sonia.scm.store; //~--- non-JDK imports -------------------------------------------------------- +import java.util.HashMap; +import java.util.Map; + /** * In memory configuration store factory for testing purposes. * @@ -44,24 +47,19 @@ package sonia.scm.store; */ public class InMemoryConfigurationStoreFactory implements ConfigurationStoreFactory { - private ConfigurationStore store; + private final Map stores = new HashMap<>(); - public static ConfigurationStoreFactory create() { - return new InMemoryConfigurationStoreFactory(new InMemoryConfigurationStore()); - } - - public InMemoryConfigurationStoreFactory() { - } - - public InMemoryConfigurationStoreFactory(ConfigurationStore store) { - this.store = store; + public static InMemoryConfigurationStoreFactory create() { + return new InMemoryConfigurationStoreFactory(); } @Override public ConfigurationStore getStore(TypedStoreParameters storeParameters) { - if (store != null) { - return store; - } - return new InMemoryConfigurationStore<>(); + String name = storeParameters.getName(); + return get(name); + } + + public ConfigurationStore get(String name) { + return stores.computeIfAbsent(name, x -> new InMemoryConfigurationStore()); } } diff --git a/scm-webapp/src/test/java/sonia/scm/update/UpdateEngineTest.java b/scm-webapp/src/test/java/sonia/scm/update/UpdateEngineTest.java index 02ff0967bb..746eabc2ea 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/UpdateEngineTest.java +++ b/scm-webapp/src/test/java/sonia/scm/update/UpdateEngineTest.java @@ -16,7 +16,7 @@ import static sonia.scm.version.Version.parse; class UpdateEngineTest { - ConfigurationEntryStoreFactory storeFactory = new InMemoryConfigurationEntryStoreFactory(new InMemoryConfigurationEntryStore()); + ConfigurationEntryStoreFactory storeFactory = new InMemoryConfigurationEntryStoreFactory(); List processedUpdates = new ArrayList<>(); diff --git a/scm-webapp/src/test/java/sonia/scm/update/repository/XmlRepositoryV1UpdateStepTest.java b/scm-webapp/src/test/java/sonia/scm/update/repository/XmlRepositoryV1UpdateStepTest.java index 6c977a3cb6..2145164062 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/repository/XmlRepositoryV1UpdateStepTest.java +++ b/scm-webapp/src/test/java/sonia/scm/update/repository/XmlRepositoryV1UpdateStepTest.java @@ -51,7 +51,7 @@ class XmlRepositoryV1UpdateStepTest { @Mock MigrationStrategyDao migrationStrategyDao; - ConfigurationEntryStoreFactory configurationEntryStoreFactory = new InMemoryConfigurationEntryStoreFactory(new InMemoryConfigurationEntryStore()); + InMemoryConfigurationEntryStoreFactory configurationEntryStoreFactory = new InMemoryConfigurationEntryStoreFactory(); @Captor ArgumentCaptor storeCaptor; @@ -137,7 +137,7 @@ class XmlRepositoryV1UpdateStepTest { void shouldExtractPropertiesFromRepositories() throws JAXBException { updateStep.doUpdate(); - ConfigurationEntryStore store = configurationEntryStoreFactory.withType(null).withName("").build(); + ConfigurationEntryStore store = configurationEntryStoreFactory.get("repository-properties-v1"); assertThat(store.getAll()) .hasSize(3); } diff --git a/scm-webapp/src/test/java/sonia/scm/update/security/XmlSecurityV1UpdateStepTest.java b/scm-webapp/src/test/java/sonia/scm/update/security/XmlSecurityV1UpdateStepTest.java index f8949d73a5..d0115e3426 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/security/XmlSecurityV1UpdateStepTest.java +++ b/scm-webapp/src/test/java/sonia/scm/update/security/XmlSecurityV1UpdateStepTest.java @@ -26,6 +26,7 @@ import java.util.List; import static java.util.stream.Collectors.toList; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; +import static sonia.scm.store.InMemoryConfigurationEntryStoreFactory.create; @ExtendWith(MockitoExtension.class) @ExtendWith(TempDirectory.class) @@ -40,8 +41,8 @@ class XmlSecurityV1UpdateStepTest { @BeforeEach void mockScmHome(@TempDirectory.TempDir Path tempDir) { when(contextProvider.getBaseDirectory()).thenReturn(tempDir.toFile()); - assignedPermissionStore = new InMemoryConfigurationEntryStore<>(); - ConfigurationEntryStoreFactory inMemoryConfigurationEntryStoreFactory = new InMemoryConfigurationEntryStoreFactory(assignedPermissionStore); + InMemoryConfigurationEntryStoreFactory inMemoryConfigurationEntryStoreFactory = create(); + assignedPermissionStore = inMemoryConfigurationEntryStoreFactory.get("security"); updateStep = new XmlSecurityV1UpdateStep(contextProvider, inMemoryConfigurationEntryStoreFactory); } diff --git a/scm-webapp/src/test/java/sonia/scm/update/user/XmlUserV1UpdateStepTest.java b/scm-webapp/src/test/java/sonia/scm/update/user/XmlUserV1UpdateStepTest.java index de3ab3cead..9de169d93d 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/user/XmlUserV1UpdateStepTest.java +++ b/scm-webapp/src/test/java/sonia/scm/update/user/XmlUserV1UpdateStepTest.java @@ -12,6 +12,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import sonia.scm.security.AssignedPermission; import sonia.scm.security.DefaultKeyGenerator; import sonia.scm.store.ConfigurationEntryStore; +import sonia.scm.store.ConfigurationEntryStoreFactory; import sonia.scm.store.JAXBConfigurationEntryStoreFactory; import sonia.scm.update.UpdateStepTestUtil; import sonia.scm.user.User; @@ -46,7 +47,7 @@ class XmlUserV1UpdateStepTest { @BeforeEach void mockScmHome(@TempDirectory.TempDir Path tempDir) { testUtil = new UpdateStepTestUtil(tempDir); - JAXBConfigurationEntryStoreFactory storeFactory = new JAXBConfigurationEntryStoreFactory(testUtil.getContextProvider(), null, new DefaultKeyGenerator()); + ConfigurationEntryStoreFactory storeFactory = new JAXBConfigurationEntryStoreFactory(testUtil.getContextProvider(), null, new DefaultKeyGenerator()); updateStep = new XmlUserV1UpdateStep(testUtil.getContextProvider(), userDAO, storeFactory); }