diff options
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.java | 46 |
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 @@ | |||
1 | package tools.refinery.language.web; | ||
2 | |||
3 | import org.eclipse.xtext.ide.ExecutorServiceProvider; | ||
4 | import org.eclipse.xtext.util.DisposableRegistry; | ||
5 | import org.eclipse.xtext.util.Modules2; | ||
6 | |||
7 | import com.google.inject.Guice; | ||
8 | import com.google.inject.Injector; | ||
9 | |||
10 | import tools.refinery.language.ide.ProblemIdeModule; | ||
11 | import tools.refinery.language.tests.ProblemInjectorProvider; | ||
12 | import tools.refinery.language.web.xtext.servlet.AwaitTerminationExecutorServiceProvider; | ||
13 | |||
14 | public 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 | } | ||