package org.xpect.xtext.lib.setup; import java.io.IOException; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.resource.XtextResourceSet; import org.xpect.Environment; import org.xpect.XpectImport; import org.xpect.XpectRequiredEnvironment; import org.xpect.setup.ThisRootTestClass; import org.xpect.setup.XpectSetupFactory; import org.xpect.state.Creates; import org.xpect.xtext.lib.setup.emf.ResourceFactory; import org.xpect.xtext.lib.util.XtextOffsetAdapter; import org.xpect.xtext.lib.util.XtextTargetSyntaxSupport; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Provider; @XpectSetupFactory @XpectRequiredEnvironment(Environment.STANDALONE_TEST) @XpectImport({ XtextTargetSyntaxSupport.class, XtextTestObjectSetup.class, InjectorSetup.class, XtextValidatingSetup.class, org.xpect.xtext.lib.setup.emf.ResourceSet.class, FileSetupContext.class, XtextOffsetAdapter.class }) public class XtextStandaloneSetup { private final FileSetupContext ctx; private final org.xpect.xtext.lib.setup.emf.ResourceSet resourceSetConfig; @Inject private Provider<ResourceSet> resourceSetProvider; public XtextStandaloneSetup(FileSetupContext ctx, org.xpect.xtext.lib.setup.emf.ResourceSet resourceSet, Injector injector) { super(); this.resourceSetConfig = resourceSet; this.ctx = ctx; JvmModelInferrerRegistryFix.apply(); injector.injectMembers(this); } @Creates(ThisResource.class) public XtextResource createThisResource() throws IOException { ResourceSet resourceSet = resourceSetProvider.get(); if (resourceSet instanceof XtextResourceSet) ((XtextResourceSet) resourceSet).setClasspathURIContext(ctx.get(Class.class, ThisRootTestClass.class)); Resource result = null; for (ResourceFactory file : resourceSetConfig.getFactories()) { Resource res = file.create(ctx, resourceSet); if (file instanceof org.xpect.xtext.lib.setup.emf.ThisResource) result = res; } return (XtextResource) result; } protected org.xpect.xtext.lib.setup.emf.ResourceSet getResourceSetConfig() { return resourceSetConfig; } protected FileSetupContext getSetupContext() { return ctx; } }