72 lines
1.9 KiB
Java
72 lines
1.9 KiB
Java
|
/*
|
||
|
* 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();
|
||
|
}
|
||
|
}
|