/* * generated by Xtext 2.22.0 */ package com.minres.coredsl.json.tests; import com.google.inject.Guice; import com.google.inject.Injector; import com.minres.coredsl.CoreDslRuntimeModule; import com.minres.coredsl.CoreDslStandaloneSetup; import com.minres.coredsl.json.CoreDslGeneratorModule; import org.eclipse.xtext.testing.GlobalRegistries; import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento; import org.eclipse.xtext.testing.IInjectorProvider; import org.eclipse.xtext.testing.IRegistryConfigurator; public class CoreDslInjectorProvider implements IInjectorProvider, IRegistryConfigurator { protected GlobalStateMemento stateBeforeInjectorCreation; protected GlobalStateMemento stateAfterInjectorCreation; protected Injector injector; static { GlobalRegistries.initializeDefaults(); } @Override public Injector getInjector() { if (injector == null) { this.injector = internalCreateInjector(); stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState(); } return injector; } protected Injector internalCreateInjector() { return new CoreDslStandaloneSetup() { @Override public Injector createInjector() { return Guice.createInjector(createRuntimeModule()); } }.createInjectorAndDoEMFRegistration(); } protected CoreDslRuntimeModule createRuntimeModule() { // make it work also with Maven/Tycho and OSGI // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=493672 return new CoreDslGeneratorModule() { @Override public ClassLoader bindClassLoaderToInstance() { return CoreDslInjectorProvider.class .getClassLoader(); } }; } @Override public void restoreRegistry() { stateBeforeInjectorCreation.restoreGlobalState(); stateBeforeInjectorCreation = null; } @Override public void setupRegistry() { stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState(); if (injector == null) { getInjector(); } stateAfterInjectorCreation.restoreGlobalState(); } }