simplify scm-manager bootstrap

We have simplified the scm-manager bootstrap process, by replacing the
ServletContextListener call hierarchy with much simpler ModuleProviders.
We have also removed the parent injector. Now we create always a new
injector. If something goes wrong in the process of injector creation,
we will show a nicely styled error page instead of stacktrace on a white
page.
This commit is contained in:
Sebastian Sdorra
2019-06-24 16:59:28 +02:00
parent f0bb55e77b
commit 9662b8a00b
17 changed files with 670 additions and 312 deletions

View File

@@ -0,0 +1,27 @@
package sonia.scm.update;
import com.google.inject.Injector;
import com.google.inject.Module;
import sonia.scm.boot.ModuleProvider;
import sonia.scm.update.repository.XmlRepositoryV1UpdateStep;
import java.util.Collection;
import java.util.Collections;
public class MigrationWizardModuleProvider implements ModuleProvider {
private final Injector bootstrapInjector;
public MigrationWizardModuleProvider(Injector bootstrapInjector) {
this.bootstrapInjector = bootstrapInjector;
}
public boolean wizardNecessary() {
return !bootstrapInjector.getInstance(XmlRepositoryV1UpdateStep.class).getRepositoriesWithoutMigrationStrategies().isEmpty();
}
@Override
public Collection<Module> createModules() {
return Collections.singleton(new MigrationWizardModule());
}
}