mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-10 23:45:44 +01:00
POC for spaces strategy
This commit is contained in:
@@ -39,24 +39,22 @@ import com.github.sdorra.ssp.PermissionObject;
|
|||||||
import com.github.sdorra.ssp.StaticPermissions;
|
import com.github.sdorra.ssp.StaticPermissions;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import sonia.scm.BasicPropertiesAware;
|
import sonia.scm.BasicPropertiesAware;
|
||||||
import sonia.scm.ModelObject;
|
import sonia.scm.ModelObject;
|
||||||
import sonia.scm.util.HttpUtil;
|
import sonia.scm.util.HttpUtil;
|
||||||
import sonia.scm.util.Util;
|
import sonia.scm.util.Util;
|
||||||
import sonia.scm.util.ValidationUtil;
|
import sonia.scm.util.ValidationUtil;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Source code repository.
|
* Source code repository.
|
||||||
@@ -443,6 +441,10 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
|||||||
|| ValidationUtil.isMailAddressValid(contact));
|
|| ValidationUtil.isMailAddressValid(contact));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSpace() {
|
||||||
|
return space;
|
||||||
|
}
|
||||||
|
|
||||||
//~--- set methods ----------------------------------------------------------
|
//~--- set methods ----------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -570,6 +572,9 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
|||||||
this.healthCheckFailures = healthCheckFailures;
|
this.healthCheckFailures = healthCheckFailures;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSpace(String space) {
|
||||||
|
this.space = space;
|
||||||
|
}
|
||||||
//~--- fields ---------------------------------------------------------------
|
//~--- fields ---------------------------------------------------------------
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
@@ -609,4 +614,6 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
|||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
|
private String space;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package sonia.scm.repository;
|
||||||
|
|
||||||
|
import sonia.scm.plugin.ExtensionPoint;
|
||||||
|
|
||||||
|
@ExtensionPoint(multi = true)
|
||||||
|
public interface SpacesStrategy {
|
||||||
|
String getCurrentSpace();
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package sonia.scm.repository;
|
||||||
|
|
||||||
|
import sonia.scm.plugin.Extension;
|
||||||
|
|
||||||
|
@Extension
|
||||||
|
public class StaticSpacesStrategy implements SpacesStrategy {
|
||||||
|
@Override
|
||||||
|
public String getCurrentSpace() {
|
||||||
|
return "test";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,14 +39,10 @@ import com.google.common.base.Throwables;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
import com.google.inject.Module;
|
import com.google.inject.Module;
|
||||||
|
|
||||||
import org.apache.shiro.guice.web.ShiroWebModule;
|
import org.apache.shiro.guice.web.ShiroWebModule;
|
||||||
|
import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
|
|
||||||
|
|
||||||
import sonia.scm.api.v2.resources.MapperModule;
|
import sonia.scm.api.v2.resources.MapperModule;
|
||||||
import sonia.scm.cache.CacheManager;
|
import sonia.scm.cache.CacheManager;
|
||||||
import sonia.scm.debug.DebugModule;
|
import sonia.scm.debug.DebugModule;
|
||||||
@@ -61,14 +57,13 @@ import sonia.scm.upgrade.UpgradeManager;
|
|||||||
import sonia.scm.user.UserManager;
|
import sonia.scm.user.UserManager;
|
||||||
import sonia.scm.util.IOUtil;
|
import sonia.scm.util.IOUtil;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.Collections;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
import javax.servlet.ServletContextEvent;
|
import javax.servlet.ServletContextEvent;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -140,7 +135,7 @@ public class ScmContextListener extends GuiceResteasyBootstrapServletContextList
|
|||||||
moduleList.add(new EagerSingletonModule());
|
moduleList.add(new EagerSingletonModule());
|
||||||
moduleList.add(ShiroWebModule.guiceFilterModule());
|
moduleList.add(ShiroWebModule.guiceFilterModule());
|
||||||
moduleList.add(new WebElementModule(pluginLoader));
|
moduleList.add(new WebElementModule(pluginLoader));
|
||||||
moduleList.add(new ScmServletModule(context, pluginLoader, overrides));
|
moduleList.add(new ScmServletModule(context, pluginLoader, overrides, pluginLoader.getExtensionProcessor()));
|
||||||
moduleList.add(
|
moduleList.add(
|
||||||
new ScmSecurityModule(context, pluginLoader.getExtensionProcessor())
|
new ScmSecurityModule(context, pluginLoader.getExtensionProcessor())
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -42,10 +42,8 @@ import com.google.inject.name.Names;
|
|||||||
import com.google.inject.servlet.RequestScoped;
|
import com.google.inject.servlet.RequestScoped;
|
||||||
import com.google.inject.servlet.ServletModule;
|
import com.google.inject.servlet.ServletModule;
|
||||||
import com.google.inject.throwingproviders.ThrowingProviderBinder;
|
import com.google.inject.throwingproviders.ThrowingProviderBinder;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import sonia.scm.api.rest.ObjectMapperProvider;
|
import sonia.scm.api.rest.ObjectMapperProvider;
|
||||||
import sonia.scm.cache.CacheManager;
|
import sonia.scm.cache.CacheManager;
|
||||||
import sonia.scm.cache.GuavaCacheManager;
|
import sonia.scm.cache.GuavaCacheManager;
|
||||||
@@ -58,8 +56,15 @@ import sonia.scm.group.GroupManagerProvider;
|
|||||||
import sonia.scm.group.xml.XmlGroupDAO;
|
import sonia.scm.group.xml.XmlGroupDAO;
|
||||||
import sonia.scm.io.DefaultFileSystem;
|
import sonia.scm.io.DefaultFileSystem;
|
||||||
import sonia.scm.io.FileSystem;
|
import sonia.scm.io.FileSystem;
|
||||||
|
import sonia.scm.net.SSLContextProvider;
|
||||||
|
import sonia.scm.net.ahc.AdvancedHttpClient;
|
||||||
|
import sonia.scm.net.ahc.ContentTransformer;
|
||||||
|
import sonia.scm.net.ahc.DefaultAdvancedHttpClient;
|
||||||
|
import sonia.scm.net.ahc.JsonContentTransformer;
|
||||||
|
import sonia.scm.net.ahc.XmlContentTransformer;
|
||||||
import sonia.scm.plugin.DefaultPluginLoader;
|
import sonia.scm.plugin.DefaultPluginLoader;
|
||||||
import sonia.scm.plugin.DefaultPluginManager;
|
import sonia.scm.plugin.DefaultPluginManager;
|
||||||
|
import sonia.scm.plugin.ExtensionProcessor;
|
||||||
import sonia.scm.plugin.PluginLoader;
|
import sonia.scm.plugin.PluginLoader;
|
||||||
import sonia.scm.plugin.PluginManager;
|
import sonia.scm.plugin.PluginManager;
|
||||||
import sonia.scm.repository.DefaultRepositoryManager;
|
import sonia.scm.repository.DefaultRepositoryManager;
|
||||||
@@ -70,6 +75,7 @@ import sonia.scm.repository.RepositoryDAO;
|
|||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
import sonia.scm.repository.RepositoryManagerProvider;
|
import sonia.scm.repository.RepositoryManagerProvider;
|
||||||
import sonia.scm.repository.RepositoryProvider;
|
import sonia.scm.repository.RepositoryProvider;
|
||||||
|
import sonia.scm.repository.SpacesStrategy;
|
||||||
import sonia.scm.repository.api.HookContextFactory;
|
import sonia.scm.repository.api.HookContextFactory;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
import sonia.scm.repository.spi.HookEventFacade;
|
import sonia.scm.repository.spi.HookEventFacade;
|
||||||
@@ -78,19 +84,25 @@ import sonia.scm.resources.DefaultResourceManager;
|
|||||||
import sonia.scm.resources.DevelopmentResourceManager;
|
import sonia.scm.resources.DevelopmentResourceManager;
|
||||||
import sonia.scm.resources.ResourceManager;
|
import sonia.scm.resources.ResourceManager;
|
||||||
import sonia.scm.resources.ScriptResourceServlet;
|
import sonia.scm.resources.ScriptResourceServlet;
|
||||||
|
import sonia.scm.schedule.QuartzScheduler;
|
||||||
|
import sonia.scm.schedule.Scheduler;
|
||||||
|
import sonia.scm.security.AuthorizationChangedEventProducer;
|
||||||
import sonia.scm.security.CipherHandler;
|
import sonia.scm.security.CipherHandler;
|
||||||
import sonia.scm.security.CipherUtil;
|
import sonia.scm.security.CipherUtil;
|
||||||
|
import sonia.scm.security.ConfigurableLoginAttemptHandler;
|
||||||
import sonia.scm.security.DefaultKeyGenerator;
|
import sonia.scm.security.DefaultKeyGenerator;
|
||||||
import sonia.scm.security.DefaultSecuritySystem;
|
import sonia.scm.security.DefaultSecuritySystem;
|
||||||
import sonia.scm.security.KeyGenerator;
|
import sonia.scm.security.KeyGenerator;
|
||||||
|
import sonia.scm.security.LoginAttemptHandler;
|
||||||
import sonia.scm.security.SecuritySystem;
|
import sonia.scm.security.SecuritySystem;
|
||||||
import sonia.scm.store.BlobStoreFactory;
|
import sonia.scm.store.BlobStoreFactory;
|
||||||
import sonia.scm.store.ConfigurationEntryStoreFactory;
|
import sonia.scm.store.ConfigurationEntryStoreFactory;
|
||||||
|
import sonia.scm.store.ConfigurationStoreFactory;
|
||||||
import sonia.scm.store.DataStoreFactory;
|
import sonia.scm.store.DataStoreFactory;
|
||||||
import sonia.scm.store.FileBlobStoreFactory;
|
import sonia.scm.store.FileBlobStoreFactory;
|
||||||
import sonia.scm.store.JAXBConfigurationEntryStoreFactory;
|
import sonia.scm.store.JAXBConfigurationEntryStoreFactory;
|
||||||
import sonia.scm.store.JAXBDataStoreFactory;
|
|
||||||
import sonia.scm.store.JAXBConfigurationStoreFactory;
|
import sonia.scm.store.JAXBConfigurationStoreFactory;
|
||||||
|
import sonia.scm.store.JAXBDataStoreFactory;
|
||||||
import sonia.scm.template.MustacheTemplateEngine;
|
import sonia.scm.template.MustacheTemplateEngine;
|
||||||
import sonia.scm.template.TemplateEngine;
|
import sonia.scm.template.TemplateEngine;
|
||||||
import sonia.scm.template.TemplateEngineFactory;
|
import sonia.scm.template.TemplateEngineFactory;
|
||||||
@@ -107,31 +119,17 @@ import sonia.scm.user.UserManagerProvider;
|
|||||||
import sonia.scm.user.xml.XmlUserDAO;
|
import sonia.scm.user.xml.XmlUserDAO;
|
||||||
import sonia.scm.util.DebugServlet;
|
import sonia.scm.util.DebugServlet;
|
||||||
import sonia.scm.util.ScmConfigurationUtil;
|
import sonia.scm.util.ScmConfigurationUtil;
|
||||||
|
import sonia.scm.web.UserAgentParser;
|
||||||
import sonia.scm.web.cgi.CGIExecutorFactory;
|
import sonia.scm.web.cgi.CGIExecutorFactory;
|
||||||
import sonia.scm.web.cgi.DefaultCGIExecutorFactory;
|
import sonia.scm.web.cgi.DefaultCGIExecutorFactory;
|
||||||
import sonia.scm.web.filter.LoggingFilter;
|
import sonia.scm.web.filter.LoggingFilter;
|
||||||
import sonia.scm.web.security.AdministrationContext;
|
import sonia.scm.web.security.AdministrationContext;
|
||||||
import sonia.scm.web.security.DefaultAdministrationContext;
|
import sonia.scm.web.security.DefaultAdministrationContext;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
import sonia.scm.store.ConfigurationStoreFactory;
|
|
||||||
|
|
||||||
import javax.net.ssl.SSLContext;
|
import javax.net.ssl.SSLContext;
|
||||||
import sonia.scm.net.SSLContextProvider;
|
import javax.servlet.ServletContext;
|
||||||
import sonia.scm.net.ahc.AdvancedHttpClient;
|
|
||||||
import sonia.scm.net.ahc.ContentTransformer;
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
import sonia.scm.net.ahc.DefaultAdvancedHttpClient;
|
|
||||||
import sonia.scm.net.ahc.JsonContentTransformer;
|
|
||||||
import sonia.scm.net.ahc.XmlContentTransformer;
|
|
||||||
import sonia.scm.schedule.QuartzScheduler;
|
|
||||||
import sonia.scm.schedule.Scheduler;
|
|
||||||
import sonia.scm.security.ConfigurableLoginAttemptHandler;
|
|
||||||
import sonia.scm.security.LoginAttemptHandler;
|
|
||||||
import sonia.scm.security.AuthorizationChangedEventProducer;
|
|
||||||
import sonia.scm.web.UserAgentParser;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -202,17 +200,18 @@ public class ScmServletModule extends ServletModule
|
|||||||
* Constructs ...
|
* Constructs ...
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* @param servletContext
|
* @param servletContext
|
||||||
* @param pluginLoader
|
* @param pluginLoader
|
||||||
* @param overrides
|
* @param overrides
|
||||||
|
* @param extensionProcessor
|
||||||
*/
|
*/
|
||||||
ScmServletModule(ServletContext servletContext,
|
ScmServletModule(ServletContext servletContext,
|
||||||
DefaultPluginLoader pluginLoader, ClassOverrides overrides)
|
DefaultPluginLoader pluginLoader, ClassOverrides overrides, ExtensionProcessor extensionProcessor)
|
||||||
{
|
{
|
||||||
this.servletContext = servletContext;
|
this.servletContext = servletContext;
|
||||||
this.pluginLoader = pluginLoader;
|
this.pluginLoader = pluginLoader;
|
||||||
this.overrides = overrides;
|
this.overrides = overrides;
|
||||||
|
this.extensionProcessor = extensionProcessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
//~--- methods --------------------------------------------------------------
|
//~--- methods --------------------------------------------------------------
|
||||||
@@ -284,6 +283,9 @@ public class ScmServletModule extends ServletModule
|
|||||||
bind(UserDAO.class, XmlUserDAO.class);
|
bind(UserDAO.class, XmlUserDAO.class);
|
||||||
bind(RepositoryDAO.class, XmlRepositoryDAO.class);
|
bind(RepositoryDAO.class, XmlRepositoryDAO.class);
|
||||||
|
|
||||||
|
Class<? extends SpacesStrategy> mySpaceStrategy = extensionProcessor.byExtensionPoint(SpacesStrategy.class).iterator().next();
|
||||||
|
bind(SpacesStrategy.class, mySpaceStrategy);
|
||||||
|
|
||||||
bindDecorated(RepositoryManager.class, DefaultRepositoryManager.class,
|
bindDecorated(RepositoryManager.class, DefaultRepositoryManager.class,
|
||||||
RepositoryManagerProvider.class);
|
RepositoryManagerProvider.class);
|
||||||
bindDecorated(UserManager.class, DefaultUserManager.class,
|
bindDecorated(UserManager.class, DefaultUserManager.class,
|
||||||
@@ -476,4 +478,6 @@ public class ScmServletModule extends ServletModule
|
|||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private final ServletContext servletContext;
|
private final ServletContext servletContext;
|
||||||
|
|
||||||
|
private final ExtensionProcessor extensionProcessor;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,12 +41,9 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
|
|
||||||
import org.apache.shiro.concurrent.SubjectAwareExecutorService;
|
import org.apache.shiro.concurrent.SubjectAwareExecutorService;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import sonia.scm.ArgumentIsInvalidException;
|
import sonia.scm.ArgumentIsInvalidException;
|
||||||
import sonia.scm.ConfigurationException;
|
import sonia.scm.ConfigurationException;
|
||||||
import sonia.scm.HandlerEventType;
|
import sonia.scm.HandlerEventType;
|
||||||
@@ -60,10 +57,8 @@ import sonia.scm.util.HttpUtil;
|
|||||||
import sonia.scm.util.IOUtil;
|
import sonia.scm.util.IOUtil;
|
||||||
import sonia.scm.util.Util;
|
import sonia.scm.util.Util;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
@@ -76,7 +71,7 @@ import java.util.concurrent.ExecutorService;
|
|||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ThreadFactory;
|
import java.util.concurrent.ThreadFactory;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default implementation of {@link RepositoryManager}.
|
* Default implementation of {@link RepositoryManager}.
|
||||||
@@ -105,17 +100,19 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
|||||||
* @param repositoryDAO
|
* @param repositoryDAO
|
||||||
* @param handlerSet
|
* @param handlerSet
|
||||||
* @param repositoryMatcher
|
* @param repositoryMatcher
|
||||||
|
* @param spaceStrategy
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public DefaultRepositoryManager(ScmConfiguration configuration,
|
public DefaultRepositoryManager(ScmConfiguration configuration,
|
||||||
SCMContextProvider contextProvider, KeyGenerator keyGenerator,
|
SCMContextProvider contextProvider, KeyGenerator keyGenerator,
|
||||||
RepositoryDAO repositoryDAO, Set<RepositoryHandler> handlerSet,
|
RepositoryDAO repositoryDAO, Set<RepositoryHandler> handlerSet,
|
||||||
RepositoryMatcher repositoryMatcher)
|
RepositoryMatcher repositoryMatcher, SpacesStrategy spaceStrategy)
|
||||||
{
|
{
|
||||||
this.configuration = configuration;
|
this.configuration = configuration;
|
||||||
this.keyGenerator = keyGenerator;
|
this.keyGenerator = keyGenerator;
|
||||||
this.repositoryDAO = repositoryDAO;
|
this.repositoryDAO = repositoryDAO;
|
||||||
this.repositoryMatcher = repositoryMatcher;
|
this.repositoryMatcher = repositoryMatcher;
|
||||||
|
this.spaceStrategy = spaceStrategy;
|
||||||
|
|
||||||
//J-
|
//J-
|
||||||
ThreadFactory factory = new ThreadFactoryBuilder()
|
ThreadFactory factory = new ThreadFactoryBuilder()
|
||||||
@@ -169,6 +166,8 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
|||||||
logger.info("create repository {} of type {}", repository.getName(),
|
logger.info("create repository {} of type {}", repository.getName(),
|
||||||
repository.getType());
|
repository.getType());
|
||||||
|
|
||||||
|
repository.setSpace(spaceStrategy.getCurrentSpace());
|
||||||
|
|
||||||
RepositoryPermissions.create().check();
|
RepositoryPermissions.create().check();
|
||||||
AssertUtil.assertIsValid(repository);
|
AssertUtil.assertIsValid(repository);
|
||||||
|
|
||||||
@@ -740,4 +739,6 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
|||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private RepositoryMatcher repositoryMatcher;
|
private RepositoryMatcher repositoryMatcher;
|
||||||
|
|
||||||
|
private final SpacesStrategy spaceStrategy;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,13 +33,6 @@ package sonia.scm.repository;
|
|||||||
import com.google.common.base.Stopwatch;
|
import com.google.common.base.Stopwatch;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
import org.apache.shiro.authc.AuthenticationException;
|
import org.apache.shiro.authc.AuthenticationException;
|
||||||
import org.apache.shiro.authc.AuthenticationInfo;
|
import org.apache.shiro.authc.AuthenticationInfo;
|
||||||
@@ -58,7 +51,6 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
import org.mockito.runners.MockitoJUnitRunner;
|
import org.mockito.runners.MockitoJUnitRunner;
|
||||||
import sonia.scm.SCMContextProvider;
|
import sonia.scm.SCMContextProvider;
|
||||||
import sonia.scm.Type;
|
import sonia.scm.Type;
|
||||||
@@ -67,9 +59,19 @@ import sonia.scm.config.ScmConfiguration;
|
|||||||
import sonia.scm.security.AuthorizationCollector;
|
import sonia.scm.security.AuthorizationCollector;
|
||||||
import sonia.scm.security.DefaultKeyGenerator;
|
import sonia.scm.security.DefaultKeyGenerator;
|
||||||
import sonia.scm.security.KeyGenerator;
|
import sonia.scm.security.KeyGenerator;
|
||||||
import sonia.scm.security.SecuritySystem;
|
|
||||||
import sonia.scm.user.UserTestData;
|
import sonia.scm.user.UserTestData;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performance test for {@link RepositoryManager#getAll()}.
|
* Performance test for {@link RepositoryManager#getAll()}.
|
||||||
*
|
*
|
||||||
@@ -117,8 +119,8 @@ public class DefaultRepositoryManagerPerfTest {
|
|||||||
keyGenerator,
|
keyGenerator,
|
||||||
repositoryDAO,
|
repositoryDAO,
|
||||||
handlerSet,
|
handlerSet,
|
||||||
repositoryMatcher
|
repositoryMatcher,
|
||||||
);
|
mock(SpacesStrategy.class));
|
||||||
|
|
||||||
setUpTestRepositories();
|
setUpTestRepositories();
|
||||||
|
|
||||||
|
|||||||
@@ -31,45 +31,54 @@
|
|||||||
package sonia.scm.repository;
|
package sonia.scm.repository;
|
||||||
|
|
||||||
//~--- non-JDK imports --------------------------------------------------------
|
//~--- non-JDK imports --------------------------------------------------------
|
||||||
|
|
||||||
import com.github.legman.Subscribe;
|
import com.github.legman.Subscribe;
|
||||||
import com.github.sdorra.shiro.ShiroRule;
|
import com.github.sdorra.shiro.ShiroRule;
|
||||||
import com.github.sdorra.shiro.SubjectAware;
|
import com.github.sdorra.shiro.SubjectAware;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import org.apache.shiro.authz.UnauthorizedException;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.junit.rules.ExpectedException;
|
||||||
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
|
import sonia.scm.HandlerEventType;
|
||||||
|
import sonia.scm.Manager;
|
||||||
|
import sonia.scm.ManagerTestBase;
|
||||||
import sonia.scm.Type;
|
import sonia.scm.Type;
|
||||||
import sonia.scm.config.ScmConfiguration;
|
import sonia.scm.config.ScmConfiguration;
|
||||||
|
import sonia.scm.event.ScmEventBus;
|
||||||
import sonia.scm.repository.api.HookContext;
|
import sonia.scm.repository.api.HookContext;
|
||||||
import sonia.scm.repository.api.HookContextFactory;
|
import sonia.scm.repository.api.HookContextFactory;
|
||||||
import sonia.scm.repository.api.HookFeature;
|
import sonia.scm.repository.api.HookFeature;
|
||||||
import sonia.scm.repository.spi.HookContextProvider;
|
import sonia.scm.repository.spi.HookContextProvider;
|
||||||
import sonia.scm.repository.xml.XmlRepositoryDAO;
|
import sonia.scm.repository.xml.XmlRepositoryDAO;
|
||||||
import sonia.scm.security.DefaultKeyGenerator;
|
import sonia.scm.security.DefaultKeyGenerator;
|
||||||
|
import sonia.scm.security.KeyGenerator;
|
||||||
|
import sonia.scm.store.ConfigurationStoreFactory;
|
||||||
import sonia.scm.store.JAXBConfigurationStoreFactory;
|
import sonia.scm.store.JAXBConfigurationStoreFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
import static org.hamcrest.Matchers.*;
|
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
import org.apache.shiro.authz.UnauthorizedException;
|
|
||||||
import org.junit.Rule;
|
import static org.hamcrest.Matchers.containsInAnyOrder;
|
||||||
import org.junit.rules.ExpectedException;
|
import static org.hamcrest.Matchers.hasProperty;
|
||||||
import org.mockito.invocation.InvocationOnMock;
|
import static org.hamcrest.Matchers.is;
|
||||||
import sonia.scm.HandlerEventType;
|
import static org.junit.Assert.assertEquals;
|
||||||
import sonia.scm.Manager;
|
import static org.junit.Assert.assertFalse;
|
||||||
import sonia.scm.ManagerTestBase;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import sonia.scm.event.ScmEventBus;
|
import static org.junit.Assert.assertNotSame;
|
||||||
import sonia.scm.security.KeyGenerator;
|
import static org.junit.Assert.assertNull;
|
||||||
import sonia.scm.store.ConfigurationStoreFactory;
|
import static org.junit.Assert.assertSame;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for {@link DefaultRepositoryManager}.
|
* Unit tests for {@link DefaultRepositoryManager}.
|
||||||
@@ -542,7 +551,7 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository, Re
|
|||||||
configuration.setEnableRepositoryArchive(archiveEnabled);
|
configuration.setEnableRepositoryArchive(archiveEnabled);
|
||||||
|
|
||||||
return new DefaultRepositoryManager(configuration, contextProvider,
|
return new DefaultRepositoryManager(configuration, contextProvider,
|
||||||
keyGenerator, repositoryDAO, handlerSet, createRepositoryMatcher());
|
keyGenerator, repositoryDAO, handlerSet, createRepositoryMatcher(), mock(SpacesStrategy.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createRepository(RepositoryManager m, Repository repository)
|
private void createRepository(RepositoryManager m, Repository repository)
|
||||||
|
|||||||
Reference in New Issue
Block a user