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 4fd4682456..d5d71ce532 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java @@ -52,6 +52,7 @@ import sonia.scm.util.CollectionAppender; import sonia.scm.util.IOUtil; import sonia.scm.util.Util; +import javax.inject.Provider; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -84,7 +85,7 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager { private final KeyGenerator keyGenerator; private final RepositoryDAO repositoryDAO; private final Set types; - private NamespaceStrategy namespaceStrategy; + private final Provider namespaceStrategyProvider; private final ManagerDaoAdapter managerDaoAdapter; @@ -92,11 +93,11 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager { public DefaultRepositoryManager(ScmConfiguration configuration, SCMContextProvider contextProvider, KeyGenerator keyGenerator, RepositoryDAO repositoryDAO, Set handlerSet, - NamespaceStrategy namespaceStrategy) { + Provider namespaceStrategyProvider) { this.configuration = configuration; this.keyGenerator = keyGenerator; this.repositoryDAO = repositoryDAO; - this.namespaceStrategy = namespaceStrategy; + this.namespaceStrategyProvider = namespaceStrategyProvider; ThreadFactory factory = new ThreadFactoryBuilder() .setNameFormat(THREAD_NAME).build(); @@ -130,7 +131,7 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager { public Repository create(Repository repository, boolean initRepository) { repository.setId(keyGenerator.createKey()); - repository.setNamespace(namespaceStrategy.createNamespace(repository)); + repository.setNamespace(namespaceStrategyProvider.get().createNamespace(repository)); logger.info("create repository {}/{} of type {} in namespace {}", repository.getNamespace(), repository.getName(), repository.getType(), repository.getNamespace()); diff --git a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerPerfTest.java b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerPerfTest.java index f3ff9fd0f9..b94c483dd0 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerPerfTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerPerfTest.java @@ -34,6 +34,7 @@ import com.google.common.base.Stopwatch; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.google.inject.Provider; +import com.google.inject.util.Providers; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; @@ -117,8 +118,8 @@ public class DefaultRepositoryManagerPerfTest { contextProvider, keyGenerator, repositoryDAO, - handlerSet, - namespaceStrategy + handlerSet, + Providers.of(namespaceStrategy) ); setUpTestRepositories(); diff --git a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java index 416babfab0..0ad4ca0e9f 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java @@ -37,6 +37,7 @@ import com.github.sdorra.shiro.ShiroRule; import com.github.sdorra.shiro.SubjectAware; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import com.google.inject.util.Providers; import org.apache.shiro.authz.UnauthorizedException; import org.apache.shiro.util.ThreadContext; import org.junit.Before; @@ -445,7 +446,7 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase { when(namespaceStrategy.createNamespace(Mockito.any(Repository.class))).thenAnswer(invocation -> mockedNamespace); return new DefaultRepositoryManager(configuration, contextProvider, - keyGenerator, repositoryDAO, handlerSet, namespaceStrategy); + keyGenerator, repositoryDAO, handlerSet, Providers.of(namespaceStrategy)); } private void createRepository(RepositoryManager m, Repository repository) {