diff --git a/scm-core/src/main/java/sonia/scm/SCMContext.java b/scm-core/src/main/java/sonia/scm/SCMContext.java
index f2c1af81d0..5af5d9f7d9 100644
--- a/scm-core/src/main/java/sonia/scm/SCMContext.java
+++ b/scm-core/src/main/java/sonia/scm/SCMContext.java
@@ -94,8 +94,6 @@ public final class SCMContext
{
provider = new BasicContextProvider();
}
-
- provider.init();
}
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/TempSCMContextProvider.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/TempSCMContextProvider.java
index 0a0064ad44..32cf7b171c 100644
--- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/TempSCMContextProvider.java
+++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/TempSCMContextProvider.java
@@ -50,32 +50,6 @@ import java.nio.file.Path;
public class TempSCMContextProvider implements SCMContextProvider
{
- /**
- * Method description
- *
- *
- * @throws IOException
- */
- @Override
- public void close() throws IOException
- {
-
- // do nothing
- }
-
- /**
- * Method description
- *
- */
- @Override
- public void init()
- {
-
- // do nothing
- }
-
- //~--- get methods ----------------------------------------------------------
-
/**
* Method description
*
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapContextListener.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapContextListener.java
index 3c3cfc2eaa..f7f932634a 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapContextListener.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapContextListener.java
@@ -36,11 +36,19 @@ import com.google.inject.Module;
import com.google.inject.servlet.GuiceServletContextListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import sonia.scm.CloseableModule;
-import sonia.scm.EagerSingletonModule;
+import sonia.scm.lifecycle.classloading.ClassLoaderLifeCycle;
+import sonia.scm.lifecycle.modules.ApplicationModuleProvider;
+import sonia.scm.lifecycle.modules.BootstrapModule;
+import sonia.scm.lifecycle.modules.CloseableModule;
+import sonia.scm.lifecycle.modules.EagerSingletonModule;
import sonia.scm.SCMContext;
-import sonia.scm.ScmEventBusModule;
-import sonia.scm.ScmInitializerModule;
+import sonia.scm.lifecycle.modules.InjectionLifeCycle;
+import sonia.scm.lifecycle.modules.ModuleProvider;
+import sonia.scm.lifecycle.modules.ScmEventBusModule;
+import sonia.scm.lifecycle.modules.ScmInitializerModule;
+import sonia.scm.lifecycle.modules.ServletContextModule;
+import sonia.scm.lifecycle.modules.UpdateStepModule;
+import sonia.scm.lifecycle.view.SingleView;
import sonia.scm.plugin.PluginLoader;
import sonia.scm.update.MigrationWizardModuleProvider;
import sonia.scm.update.UpdateEngine;
@@ -68,7 +76,7 @@ public class BootstrapContextListener extends GuiceServletContextListener {
LOG.info("start scm-manager initialization");
context = sce.getServletContext();
- classLoaderLifeCycle.init();
+ classLoaderLifeCycle.initialize();
super.contextInitialized(sce);
Injector injector = (Injector) context.getAttribute(Injector.class.getName());
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/LifeCycle.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/LifeCycle.java
new file mode 100644
index 0000000000..c5b386808b
--- /dev/null
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/LifeCycle.java
@@ -0,0 +1,9 @@
+package sonia.scm.lifecycle;
+
+public interface LifeCycle {
+
+ void initialize();
+
+ void shutdown();
+
+}
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/PluginBootstrap.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/PluginBootstrap.java
index 5f6272ab38..e19d41cc69 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/PluginBootstrap.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/PluginBootstrap.java
@@ -6,6 +6,7 @@ import com.google.common.io.Files;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.SCMContext;
+import sonia.scm.lifecycle.classloading.ClassLoaderLifeCycle;
import sonia.scm.migration.UpdateException;
import sonia.scm.plugin.DefaultPluginLoader;
import sonia.scm.plugin.Plugin;
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapClassLoader.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/BootstrapClassLoader.java
similarity index 87%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapClassLoader.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/BootstrapClassLoader.java
index 0cc1d84536..64d9b75d36 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapClassLoader.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/BootstrapClassLoader.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.classloading;
/**
* This ClassLoader is mainly a wrapper around the web application class loader and its goal is to make it easier to
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/ClassLoaderLifeCycle.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/ClassLoaderLifeCycle.java
similarity index 95%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/ClassLoaderLifeCycle.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/ClassLoaderLifeCycle.java
index a5979948f1..6f9a8610c4 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/ClassLoaderLifeCycle.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/ClassLoaderLifeCycle.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.classloading;
import com.google.common.annotations.VisibleForTesting;
import org.slf4j.Logger;
@@ -6,6 +6,7 @@ import org.slf4j.LoggerFactory;
import se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventor;
import se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventorFactory;
import se.jiderhamn.classloader.leak.prevention.cleanup.MBeanCleanUp;
+import sonia.scm.lifecycle.LifeCycle;
import sonia.scm.plugin.ChildFirstPluginClassLoader;
import sonia.scm.plugin.DefaultPluginClassLoader;
@@ -21,7 +22,7 @@ import static com.google.common.base.Preconditions.checkState;
/**
* Creates and shutdown SCM-Manager ClassLoaders.
*/
-public final class ClassLoaderLifeCycle {
+public final class ClassLoaderLifeCycle implements LifeCycle {
private static final Logger LOG = LoggerFactory.getLogger(ClassLoaderLifeCycle.class);
@@ -46,7 +47,7 @@ public final class ClassLoaderLifeCycle {
this.webappClassLoader = initAndAppend(webappClassLoader);
}
- void init() {
+ public void initialize() {
bootstrapClassLoader = initAndAppend(new BootstrapClassLoader(webappClassLoader));
}
@@ -72,7 +73,7 @@ public final class ClassLoaderLifeCycle {
return initAndAppend(pluginClassLoader);
}
- void shutdown() {
+ public void shutdown() {
LOG.info("shutdown classloader infrastructure");
ClassLoaderAndPreventor clap = classLoaders.poll();
while (clap != null) {
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/LoggingAdapter.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/LoggingAdapter.java
similarity index 95%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/LoggingAdapter.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/LoggingAdapter.java
index 00a28f62d2..d4dbde2ef1 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/LoggingAdapter.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/classloading/LoggingAdapter.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.classloading;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/ApplicationModuleProvider.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ApplicationModuleProvider.java
similarity index 87%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/ApplicationModuleProvider.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ApplicationModuleProvider.java
index f918714dc0..62793da0f6 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/ApplicationModuleProvider.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ApplicationModuleProvider.java
@@ -1,15 +1,11 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.modules;
import com.google.common.base.Throwables;
import com.google.inject.Module;
import org.apache.shiro.guice.web.ShiroWebModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import sonia.scm.ClassOverrides;
-import sonia.scm.ResteasyModule;
import sonia.scm.SCMContext;
-import sonia.scm.ScmSecurityModule;
-import sonia.scm.ScmServletModule;
import sonia.scm.Stage;
import sonia.scm.api.v2.resources.MapperModule;
import sonia.scm.debug.DebugModule;
@@ -21,14 +17,14 @@ import javax.servlet.ServletContext;
import java.util.ArrayList;
import java.util.List;
-class ApplicationModuleProvider implements ModuleProvider {
+public class ApplicationModuleProvider implements ModuleProvider {
private static final Logger LOG = LoggerFactory.getLogger(ApplicationModuleProvider.class);
private final ServletContext servletContext;
private final PluginLoader pluginLoader;
- ApplicationModuleProvider(ServletContext servletContext, PluginLoader pluginLoader) {
+ public ApplicationModuleProvider(ServletContext servletContext, PluginLoader pluginLoader) {
this.servletContext = servletContext;
this.pluginLoader = pluginLoader;
}
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/BootstrapModule.java
similarity index 96%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/BootstrapModule.java
index 010381e112..ce48583f9e 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/BootstrapModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/BootstrapModule.java
@@ -1,10 +1,9 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.modules;
import com.google.inject.AbstractModule;
import com.google.inject.throwingproviders.ThrowingProviderBinder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import sonia.scm.ClassOverrides;
import sonia.scm.SCMContext;
import sonia.scm.SCMContextProvider;
import sonia.scm.io.DefaultFileSystem;
@@ -32,7 +31,7 @@ public class BootstrapModule extends AbstractModule {
private final ClassOverrides overrides;
private final PluginLoader pluginLoader;
- BootstrapModule(PluginLoader pluginLoader) {
+ public BootstrapModule(PluginLoader pluginLoader) {
this.overrides = ClassOverrides.findOverrides(pluginLoader.getUberClassLoader());
this.pluginLoader = pluginLoader;
}
diff --git a/scm-webapp/src/main/java/sonia/scm/ClassOverride.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ClassOverride.java
similarity index 98%
rename from scm-webapp/src/main/java/sonia/scm/ClassOverride.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ClassOverride.java
index 8741ce85af..779a62b6e0 100644
--- a/scm-webapp/src/main/java/sonia/scm/ClassOverride.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ClassOverride.java
@@ -30,12 +30,13 @@
*/
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
+import sonia.scm.Validateable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
diff --git a/scm-webapp/src/main/java/sonia/scm/ClassOverrides.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ClassOverrides.java
similarity index 99%
rename from scm-webapp/src/main/java/sonia/scm/ClassOverrides.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ClassOverrides.java
index b727a75fc0..d37bb989b7 100644
--- a/scm-webapp/src/main/java/sonia/scm/ClassOverrides.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ClassOverrides.java
@@ -31,7 +31,7 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
//~--- non-JDK imports --------------------------------------------------------
diff --git a/scm-webapp/src/main/java/sonia/scm/CloseableModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/CloseableModule.java
similarity index 98%
rename from scm-webapp/src/main/java/sonia/scm/CloseableModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/CloseableModule.java
index dd03ff3e30..981de6e2e0 100644
--- a/scm-webapp/src/main/java/sonia/scm/CloseableModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/CloseableModule.java
@@ -1,4 +1,4 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.inject.AbstractModule;
import com.google.inject.TypeLiteral;
diff --git a/scm-webapp/src/main/java/sonia/scm/EagerSingletonModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/EagerSingletonModule.java
similarity index 96%
rename from scm-webapp/src/main/java/sonia/scm/EagerSingletonModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/EagerSingletonModule.java
index 3540006061..4feee1c4a6 100644
--- a/scm-webapp/src/main/java/sonia/scm/EagerSingletonModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/EagerSingletonModule.java
@@ -29,7 +29,7 @@
*/
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
//~--- non-JDK imports --------------------------------------------------------
@@ -41,6 +41,7 @@ import com.google.inject.spi.TypeEncounter;
import com.google.inject.spi.TypeListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import sonia.scm.EagerSingleton;
import java.util.Set;
@@ -63,7 +64,7 @@ public class EagerSingletonModule extends AbstractModule {
*
* @param injector injector for initialization
*/
- public void initialize(Injector injector) {
+ void initialize(Injector injector) {
for (Class> clazz : eagerSingletons) {
LOG.info("initialize eager singleton {}", clazz.getName());
injector.getInstance(clazz);
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/InjectionLifeCycle.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/InjectionLifeCycle.java
similarity index 86%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/InjectionLifeCycle.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/InjectionLifeCycle.java
index 8cbab48d9c..0322bdd71b 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/InjectionLifeCycle.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/InjectionLifeCycle.java
@@ -1,31 +1,29 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.modules;
import com.google.inject.Binding;
import com.google.inject.Injector;
import com.google.inject.Key;
-import sonia.scm.CloseableModule;
import sonia.scm.Default;
-import sonia.scm.EagerSingletonModule;
-import sonia.scm.ServletContextListenerHolder;
+import sonia.scm.lifecycle.LifeCycle;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import java.util.Optional;
-class InjectionLifeCycle {
+public class InjectionLifeCycle implements LifeCycle {
private final Injector injector;
- InjectionLifeCycle(Injector injector) {
+ public InjectionLifeCycle(Injector injector) {
this.injector = injector;
}
- void initialize() {
+ public void initialize() {
initializeEagerSingletons();
initializeServletContextListeners();
}
- void shutdown() {
+ public void shutdown() {
destroyServletContextListeners();
closeRegisteredCloseables();
}
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/ModuleProvider.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ModuleProvider.java
similarity index 79%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/ModuleProvider.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ModuleProvider.java
index af80a8dd94..93517b21a1 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/ModuleProvider.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ModuleProvider.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.modules;
import com.google.inject.Module;
diff --git a/scm-webapp/src/main/java/sonia/scm/MoreMatchers.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/MoreMatchers.java
similarity index 98%
rename from scm-webapp/src/main/java/sonia/scm/MoreMatchers.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/MoreMatchers.java
index 40fe6ee476..04283dcb43 100644
--- a/scm-webapp/src/main/java/sonia/scm/MoreMatchers.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/MoreMatchers.java
@@ -1,4 +1,4 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.inject.TypeLiteral;
import com.google.inject.matcher.AbstractMatcher;
diff --git a/scm-webapp/src/main/java/sonia/scm/ResteasyAllInOneServletDispatcher.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ResteasyAllInOneServletDispatcher.java
similarity index 98%
rename from scm-webapp/src/main/java/sonia/scm/ResteasyAllInOneServletDispatcher.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ResteasyAllInOneServletDispatcher.java
index 25345da04c..6196fd7065 100644
--- a/scm-webapp/src/main/java/sonia/scm/ResteasyAllInOneServletDispatcher.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ResteasyAllInOneServletDispatcher.java
@@ -1,4 +1,4 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.inject.Injector;
import org.jboss.resteasy.plugins.guice.ModuleProcessor;
diff --git a/scm-webapp/src/main/java/sonia/scm/ResteasyModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ResteasyModule.java
similarity index 93%
rename from scm-webapp/src/main/java/sonia/scm/ResteasyModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ResteasyModule.java
index 352efc28ab..eac4926a57 100644
--- a/scm-webapp/src/main/java/sonia/scm/ResteasyModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ResteasyModule.java
@@ -1,4 +1,4 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.common.collect.ImmutableMap;
import com.google.inject.servlet.ServletModule;
diff --git a/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmEventBusModule.java
similarity index 98%
rename from scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmEventBusModule.java
index c231e8ccfd..a4916be318 100644
--- a/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmEventBusModule.java
@@ -29,7 +29,7 @@
*/
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
//~--- non-JDK imports --------------------------------------------------------
diff --git a/scm-webapp/src/main/java/sonia/scm/ScmInitializerModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmInitializerModule.java
similarity index 96%
rename from scm-webapp/src/main/java/sonia/scm/ScmInitializerModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmInitializerModule.java
index 458dadf1b1..b3a4cb6209 100644
--- a/scm-webapp/src/main/java/sonia/scm/ScmInitializerModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmInitializerModule.java
@@ -29,7 +29,7 @@
*/
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
//~--- non-JDK imports --------------------------------------------------------
@@ -40,6 +40,8 @@ import com.google.inject.spi.TypeEncounter;
import com.google.inject.spi.TypeListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import sonia.scm.Initable;
+import sonia.scm.SCMContext;
/**
* Initializes all instances which are implementing the {@link Initable} interface.
diff --git a/scm-webapp/src/main/java/sonia/scm/ScmSecurityModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmSecurityModule.java
similarity index 98%
rename from scm-webapp/src/main/java/sonia/scm/ScmSecurityModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmSecurityModule.java
index 3598967588..a77f603210 100644
--- a/scm-webapp/src/main/java/sonia/scm/ScmSecurityModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmSecurityModule.java
@@ -31,7 +31,7 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
//~--- non-JDK imports --------------------------------------------------------
@@ -48,8 +48,6 @@ import org.slf4j.LoggerFactory;
import sonia.scm.plugin.ExtensionProcessor;
-import static org.apache.shiro.guice.web.ShiroWebModule.ROLES;
-
//~--- JDK imports ------------------------------------------------------------
import javax.servlet.ServletContext;
diff --git a/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmServletModule.java
similarity index 97%
rename from scm-webapp/src/main/java/sonia/scm/ScmServletModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmServletModule.java
index 63a9116716..944a2e9a01 100644
--- a/scm-webapp/src/main/java/sonia/scm/ScmServletModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ScmServletModule.java
@@ -31,7 +31,7 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.inject.Provider;
@@ -41,6 +41,10 @@ import com.google.inject.servlet.ServletModule;
import com.google.inject.throwingproviders.ThrowingProviderBinder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import sonia.scm.Default;
+import sonia.scm.PushStateDispatcher;
+import sonia.scm.PushStateDispatcherProvider;
+import sonia.scm.Undecorated;
import sonia.scm.api.rest.ObjectMapperProvider;
import sonia.scm.cache.CacheManager;
import sonia.scm.cache.GuavaCacheManager;
@@ -200,9 +204,10 @@ public class ScmServletModule extends ServletModule
bind(NamespaceStrategy.class).toProvider(NamespaceStrategyProvider.class);
// bind repository provider
- ThrowingProviderBinder.create(binder()).bind(
- RepositoryProvider.class, Repository.class).to(
- DefaultRepositoryProvider.class).in(RequestScoped.class);
+ ThrowingProviderBinder.create(binder())
+ .bind(RepositoryProvider.class, Repository.class)
+ .to(DefaultRepositoryProvider.class)
+ .in(RequestScoped.class);
// bind event api
bind(ScmEventBus.class).toInstance(ScmEventBus.getInstance());
diff --git a/scm-webapp/src/main/java/sonia/scm/ServletContextListenerHolder.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ServletContextListenerHolder.java
similarity index 98%
rename from scm-webapp/src/main/java/sonia/scm/ServletContextListenerHolder.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ServletContextListenerHolder.java
index 5d2aefb8d7..cebdcd33b0 100644
--- a/scm-webapp/src/main/java/sonia/scm/ServletContextListenerHolder.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ServletContextListenerHolder.java
@@ -30,7 +30,7 @@
*/
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
//~--- non-JDK imports --------------------------------------------------------
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/ServletContextModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ServletContextModule.java
similarity index 73%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/ServletContextModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ServletContextModule.java
index 46689bc8a2..6173d0a83f 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/ServletContextModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/ServletContextModule.java
@@ -1,11 +1,11 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.modules;
import com.google.inject.servlet.ServletModule;
import sonia.scm.Default;
import javax.servlet.ServletContext;
-class ServletContextModule extends ServletModule {
+public class ServletContextModule extends ServletModule {
@Override
protected void configureServlets() {
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/UpdateStepModule.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/UpdateStepModule.java
similarity index 79%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/UpdateStepModule.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/modules/UpdateStepModule.java
index eeffe19dde..964af69c02 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/UpdateStepModule.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/modules/UpdateStepModule.java
@@ -1,15 +1,15 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.modules;
import com.google.inject.AbstractModule;
import com.google.inject.multibindings.Multibinder;
import sonia.scm.migration.UpdateStep;
import sonia.scm.plugin.PluginLoader;
-class UpdateStepModule extends AbstractModule {
+public class UpdateStepModule extends AbstractModule {
private final PluginLoader pluginLoader;
- UpdateStepModule(PluginLoader pluginLoader) {
+ public UpdateStepModule(PluginLoader pluginLoader) {
this.pluginLoader = pluginLoader;
}
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/SingleView.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/view/SingleView.java
similarity index 91%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/SingleView.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/view/SingleView.java
index 6099d55357..3ac5d71e70 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/SingleView.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/view/SingleView.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.view;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
@@ -10,6 +10,8 @@ import sonia.scm.Default;
import sonia.scm.SCMContext;
import sonia.scm.SCMContextProvider;
import sonia.scm.StaticResourceServlet;
+import sonia.scm.lifecycle.modules.ModuleProvider;
+import sonia.scm.lifecycle.modules.ServletContextModule;
import sonia.scm.template.MustacheTemplateEngine;
import sonia.scm.template.TemplateEngine;
import sonia.scm.template.TemplateEngineFactory;
@@ -18,12 +20,12 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Collection;
-final class SingleView {
+public final class SingleView {
private SingleView() {
}
- static SingleViewModuleProvider error(Throwable throwable) {
+ public static SingleViewModuleProvider error(Throwable throwable) {
String error = Throwables.getStackTraceAsString(throwable);
ViewController controller = new SimpleViewController("/templates/error.mustache", request -> {
@@ -36,7 +38,7 @@ final class SingleView {
return new SingleViewModuleProvider(controller);
}
- static SingleViewModuleProvider view(String template, int sc) {
+ public static SingleViewModuleProvider view(String template, int sc) {
ViewController controller = new SimpleViewController(template, request -> {
Object model = ImmutableMap.of(
"contextPath", request.getContextPath()
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/SingleViewServlet.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/view/SingleViewServlet.java
similarity index 98%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/SingleViewServlet.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/view/SingleViewServlet.java
index 7bdce4201d..f93228e2bc 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/SingleViewServlet.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/view/SingleViewServlet.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.view;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/View.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/view/View.java
similarity index 89%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/View.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/view/View.java
index f30a6698ba..a89d682e04 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/View.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/view/View.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.view;
class View {
diff --git a/scm-webapp/src/main/java/sonia/scm/lifecycle/ViewController.java b/scm-webapp/src/main/java/sonia/scm/lifecycle/view/ViewController.java
similarity index 82%
rename from scm-webapp/src/main/java/sonia/scm/lifecycle/ViewController.java
rename to scm-webapp/src/main/java/sonia/scm/lifecycle/view/ViewController.java
index 78e7eee7a6..3111d11651 100644
--- a/scm-webapp/src/main/java/sonia/scm/lifecycle/ViewController.java
+++ b/scm-webapp/src/main/java/sonia/scm/lifecycle/view/ViewController.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.view;
import javax.servlet.http.HttpServletRequest;
diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java
index c54e368d45..c7d669ee63 100644
--- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java
+++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java
@@ -41,7 +41,7 @@ import com.google.common.collect.Sets;
import com.google.common.hash.Hashing;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import sonia.scm.lifecycle.ClassLoaderLifeCycle;
+import sonia.scm.lifecycle.classloading.ClassLoaderLifeCycle;
import sonia.scm.plugin.ExplodedSmp.PathTransformer;
import javax.xml.bind.JAXBContext;
diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginsInternal.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginsInternal.java
index e248c43c9a..52d192da32 100644
--- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginsInternal.java
+++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginsInternal.java
@@ -41,7 +41,7 @@ import com.google.common.io.Files;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import sonia.scm.lifecycle.ClassLoaderLifeCycle;
+import sonia.scm.lifecycle.classloading.ClassLoaderLifeCycle;
import sonia.scm.util.IOUtil;
//~--- JDK imports ------------------------------------------------------------
diff --git a/scm-webapp/src/main/java/sonia/scm/update/MigrationWizardModuleProvider.java b/scm-webapp/src/main/java/sonia/scm/update/MigrationWizardModuleProvider.java
index 996df7f061..ea8f5f7b7d 100644
--- a/scm-webapp/src/main/java/sonia/scm/update/MigrationWizardModuleProvider.java
+++ b/scm-webapp/src/main/java/sonia/scm/update/MigrationWizardModuleProvider.java
@@ -2,7 +2,7 @@ package sonia.scm.update;
import com.google.inject.Injector;
import com.google.inject.Module;
-import sonia.scm.lifecycle.ModuleProvider;
+import sonia.scm.lifecycle.modules.ModuleProvider;
import sonia.scm.update.repository.XmlRepositoryV1UpdateStep;
import java.util.Collection;
diff --git a/scm-webapp/src/main/resources/logback.default.xml b/scm-webapp/src/main/resources/logback.default.xml
index 8ffdca87db..bf907b1962 100644
--- a/scm-webapp/src/main/resources/logback.default.xml
+++ b/scm-webapp/src/main/resources/logback.default.xml
@@ -62,7 +62,7 @@
-
+
diff --git a/scm-webapp/src/test/java/sonia/scm/StaticResourceServletTest.java b/scm-webapp/src/test/java/sonia/scm/StaticResourceServletTest.java
index 98d784d558..8fb61df75d 100644
--- a/scm-webapp/src/test/java/sonia/scm/StaticResourceServletTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/StaticResourceServletTest.java
@@ -36,7 +36,7 @@ class StaticResourceServletTest {
doReturn("/scm").when(request).getContextPath();
doReturn("/scm/resource.txt").when(request).getRequestURI();
doReturn(context).when(request).getServletContext();
- URL resource = Resources.getResource("sonia/scm/boot/resource.txt");
+ URL resource = Resources.getResource("sonia/scm/lifecycle/resource.txt");
doReturn(resource).when(context).getResource("/resource.txt");
doReturn(stream).when(response).getOutputStream();
diff --git a/scm-webapp/src/test/java/sonia/scm/lifecycle/ClassLoaderLifeCycleTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/classloading/ClassLoaderLifeCycleTest.java
similarity index 98%
rename from scm-webapp/src/test/java/sonia/scm/lifecycle/ClassLoaderLifeCycleTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/classloading/ClassLoaderLifeCycleTest.java
index b1d1bc82ee..12d947389a 100644
--- a/scm-webapp/src/test/java/sonia/scm/lifecycle/ClassLoaderLifeCycleTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/classloading/ClassLoaderLifeCycleTest.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.classloading;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/scm-webapp/src/test/java/sonia/scm/CloseableModuleTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/CloseableModuleTest.java
similarity index 94%
rename from scm-webapp/src/test/java/sonia/scm/CloseableModuleTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/modules/CloseableModuleTest.java
index 682eaa45ba..e7df410dc4 100644
--- a/scm-webapp/src/test/java/sonia/scm/CloseableModuleTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/CloseableModuleTest.java
@@ -1,4 +1,4 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.inject.Guice;
import com.google.inject.Injector;
diff --git a/scm-webapp/src/test/java/sonia/scm/EagerSingletonModuleTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/EagerSingletonModuleTest.java
similarity index 93%
rename from scm-webapp/src/test/java/sonia/scm/EagerSingletonModuleTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/modules/EagerSingletonModuleTest.java
index 820016fbbd..76cd8f1dcb 100644
--- a/scm-webapp/src/test/java/sonia/scm/EagerSingletonModuleTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/EagerSingletonModuleTest.java
@@ -1,9 +1,10 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.junit.jupiter.api.Test;
+import sonia.scm.EagerSingleton;
import javax.inject.Inject;
import javax.inject.Singleton;
diff --git a/scm-webapp/src/test/java/sonia/scm/lifecycle/InjectionLifeCycleTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/InjectionLifeCycleTest.java
similarity index 96%
rename from scm-webapp/src/test/java/sonia/scm/lifecycle/InjectionLifeCycleTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/modules/InjectionLifeCycleTest.java
index c2ff62bd1b..296af8e235 100644
--- a/scm-webapp/src/test/java/sonia/scm/lifecycle/InjectionLifeCycleTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/InjectionLifeCycleTest.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.modules;
import com.google.common.base.Strings;
import com.google.inject.AbstractModule;
@@ -10,10 +10,11 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import sonia.scm.CloseableModule;
+import sonia.scm.lifecycle.modules.CloseableModule;
import sonia.scm.Default;
import sonia.scm.EagerSingleton;
-import sonia.scm.EagerSingletonModule;
+import sonia.scm.lifecycle.modules.EagerSingletonModule;
+import sonia.scm.lifecycle.modules.InjectionLifeCycle;
import javax.inject.Inject;
import javax.inject.Singleton;
diff --git a/scm-webapp/src/test/java/sonia/scm/MoreMatchersTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/MoreMatchersTest.java
similarity index 96%
rename from scm-webapp/src/test/java/sonia/scm/MoreMatchersTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/modules/MoreMatchersTest.java
index 67c2e59a4e..baab583461 100644
--- a/scm-webapp/src/test/java/sonia/scm/MoreMatchersTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/MoreMatchersTest.java
@@ -1,4 +1,4 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.inject.TypeLiteral;
import com.google.inject.matcher.Matcher;
diff --git a/scm-webapp/src/test/java/sonia/scm/ScmEventBusModuleTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ScmEventBusModuleTest.java
similarity index 95%
rename from scm-webapp/src/test/java/sonia/scm/ScmEventBusModuleTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ScmEventBusModuleTest.java
index 951a299248..fc6635bb91 100644
--- a/scm-webapp/src/test/java/sonia/scm/ScmEventBusModuleTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ScmEventBusModuleTest.java
@@ -1,4 +1,4 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.github.legman.Subscribe;
import com.google.inject.Guice;
diff --git a/scm-webapp/src/test/java/sonia/scm/ScmInitializerModuleTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ScmInitializerModuleTest.java
similarity index 86%
rename from scm-webapp/src/test/java/sonia/scm/ScmInitializerModuleTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ScmInitializerModuleTest.java
index 2491c5c43c..8edcd2b6fc 100644
--- a/scm-webapp/src/test/java/sonia/scm/ScmInitializerModuleTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ScmInitializerModuleTest.java
@@ -1,8 +1,10 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.junit.jupiter.api.Test;
+import sonia.scm.Initable;
+import sonia.scm.SCMContextProvider;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/scm-webapp/src/test/java/sonia/scm/ServletContextListenerHolderTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ServletContextListenerHolderTest.java
similarity index 98%
rename from scm-webapp/src/test/java/sonia/scm/ServletContextListenerHolderTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ServletContextListenerHolderTest.java
index e87af165a7..8c78b067fa 100644
--- a/scm-webapp/src/test/java/sonia/scm/ServletContextListenerHolderTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ServletContextListenerHolderTest.java
@@ -1,4 +1,4 @@
-package sonia.scm;
+package sonia.scm.lifecycle.modules;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
diff --git a/scm-webapp/src/test/java/sonia/scm/lifecycle/ServletContextModuleTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ServletContextModuleTest.java
similarity index 97%
rename from scm-webapp/src/test/java/sonia/scm/lifecycle/ServletContextModuleTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ServletContextModuleTest.java
index 314dab1088..0684ec6d6d 100644
--- a/scm-webapp/src/test/java/sonia/scm/lifecycle/ServletContextModuleTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/modules/ServletContextModuleTest.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.modules;
import com.google.inject.Guice;
import com.google.inject.Injector;
diff --git a/scm-webapp/src/test/java/sonia/scm/lifecycle/SingleViewServletTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/view/SingleViewServletTest.java
similarity index 98%
rename from scm-webapp/src/test/java/sonia/scm/lifecycle/SingleViewServletTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/view/SingleViewServletTest.java
index e20e7ed6b3..3bdd83577e 100644
--- a/scm-webapp/src/test/java/sonia/scm/lifecycle/SingleViewServletTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/view/SingleViewServletTest.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.view;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/scm-webapp/src/test/java/sonia/scm/lifecycle/SingleViewTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/view/SingleViewTest.java
similarity index 97%
rename from scm-webapp/src/test/java/sonia/scm/lifecycle/SingleViewTest.java
rename to scm-webapp/src/test/java/sonia/scm/lifecycle/view/SingleViewTest.java
index c5e89ffe45..d3186f040b 100644
--- a/scm-webapp/src/test/java/sonia/scm/lifecycle/SingleViewTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/view/SingleViewTest.java
@@ -1,4 +1,4 @@
-package sonia.scm.lifecycle;
+package sonia.scm.lifecycle.view;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -10,6 +10,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import sonia.scm.StaticResourceServlet;
+import sonia.scm.lifecycle.modules.ModuleProvider;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java
index c1cec2ec70..8b352b8e68 100644
--- a/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java
@@ -42,7 +42,7 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
-import sonia.scm.lifecycle.ClassLoaderLifeCycle;
+import sonia.scm.lifecycle.classloading.ClassLoaderLifeCycle;
import static org.hamcrest.Matchers.*;