aboutsummaryrefslogtreecommitdiffstats
path: root/language-web/src/test/java/tools/refinery/language/web/ProblemWebInjectorProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'language-web/src/test/java/tools/refinery/language/web/ProblemWebInjectorProvider.java')
-rw-r--r--language-web/src/test/java/tools/refinery/language/web/ProblemWebInjectorProvider.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/language-web/src/test/java/tools/refinery/language/web/ProblemWebInjectorProvider.java b/language-web/src/test/java/tools/refinery/language/web/ProblemWebInjectorProvider.java
new file mode 100644
index 00000000..2db4590e
--- /dev/null
+++ b/language-web/src/test/java/tools/refinery/language/web/ProblemWebInjectorProvider.java
@@ -0,0 +1,46 @@
1package tools.refinery.language.web;
2
3import org.eclipse.xtext.ide.ExecutorServiceProvider;
4import org.eclipse.xtext.util.DisposableRegistry;
5import org.eclipse.xtext.util.Modules2;
6
7import com.google.inject.Guice;
8import com.google.inject.Injector;
9
10import tools.refinery.language.ide.ProblemIdeModule;
11import tools.refinery.language.tests.ProblemInjectorProvider;
12import tools.refinery.language.web.xtext.servlet.AwaitTerminationExecutorServiceProvider;
13
14public class ProblemWebInjectorProvider extends ProblemInjectorProvider {
15
16 protected Injector internalCreateInjector() {
17 return new ProblemWebSetup() {
18 @Override
19 public Injector createInjector() {
20 return Guice.createInjector(
21 Modules2.mixin(createRuntimeModule(), new ProblemIdeModule(), createWebModule()));
22 }
23 }.createInjectorAndDoEMFRegistration();
24 }
25
26 protected ProblemWebModule createWebModule() {
27 // Await termination of the executor service to avoid race conditions between
28 // the tasks in the service and the {@link
29 // org.eclipse.xtext.testing.extensions.InjectionExtension}.
30 return new ProblemWebModule() {
31 @SuppressWarnings("unused")
32 public Class<? extends ExecutorServiceProvider> bindExecutorServiceProvider() {
33 return AwaitTerminationExecutorServiceProvider.class;
34 }
35 };
36 }
37
38 @Override
39 public void restoreRegistry() {
40 // Also make sure to dispose any IDisposable instances (that may depend on the
41 // global state) created by Xtext before restoring the global state.
42 var disposableRegistry = getInjector().getInstance(DisposableRegistry.class);
43 disposableRegistry.dispose();
44 super.restoreRegistry();
45 }
46}