package it.xsemantics.dsl.tests; import it.xsemantics.dsl.XsemanticsInjectorProvider; import it.xsemantics.dsl.XsemanticsRuntimeModule; import it.xsemantics.dsl.XsemanticsStandaloneSetup; import it.xsemantics.example.fj.fj.FjPackage; import it.xsemantics.runtime.Result; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.xtext.EcoreUtil2; import org.eclipse.xtext.util.PolymorphicDispatcher; import org.eclipse.xtext.validation.Check; import org.eclipse.xtext.xbase.compiler.OnTheFlyJavaCompiler; import org.eclipse.xtext.xbase.compiler.OnTheFlyJavaCompiler.EclipseRuntimeDependentJavaCompiler; import org.eclipse.xtext.xbase.junit.evaluation.AbstractXbaseEvaluationTest; import org.eclipse.xtext.xbase.lib.Functions; import com.google.common.base.Supplier; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Provider; public class XsemanticsInjectorProviderCustomForPluginTest extends XsemanticsInjectorProvider { public Injector internalCreateInjector() { return new XsemanticsStandaloneSetup() { @Override public Injector createInjector() { return Guice.createInjector(new XsemanticsRuntimeModule() { @Override public ClassLoader bindClassLoaderToInstance() { return XsemanticsInjectorProviderCustomForPluginTest.class .getClassLoader(); } @SuppressWarnings("unused") public Class<? extends OnTheFlyJavaCompiler> bindOnTheFlyJavaCompiler() { try { if (ResourcesPlugin.getWorkspace() != null) return EclipseRuntimeDependentJavaCompiler.class; } catch (Exception e) { // ignore } return OnTheFlyJavaCompiler.class; } @SuppressWarnings("unused") public Class<? extends OnTheFlyJavaCompiler.ClassPathAssembler> bindClassPathAssembler() { return TestClassPathAssembler.class; } }); } }.createInjectorAndDoEMFRegistration(); } public static class TestClassPathAssembler extends OnTheFlyJavaCompiler.ClassPathAssembler { @Override public void assembleCompilerClassPath(OnTheFlyJavaCompiler compiler) { super.assembleCompilerClassPath(compiler); if (compiler instanceof EclipseRuntimeDependentJavaCompiler) { compiler.addClassPathOfClass(getClass()); compiler.addClassPathOfClass(AbstractXbaseEvaluationTest.class); compiler.addClassPathOfClass(Functions.class); compiler.addClassPathOfClass(Provider.class); compiler.addClassPathOfClass(Inject.class); compiler.addClassPathOfClass(javax.inject.Provider.class); compiler.addClassPathOfClass(Supplier.class); compiler.addClassPathOfClass(FjPackage.class); compiler.addClassPathOfClass(EcorePackage.class); compiler.addClassPathOfClass(Result.class); compiler.addClassPathOfClass(PolymorphicDispatcher.class); compiler.addClassPathOfClass(EList.class); compiler.addClassPathOfClass(EcoreUtil2.class); compiler.addClassPathOfClass(Check.class); } } } }