/**
*
*/
package it.xsemantics.example.fj.tests.loader;
import it.xsemantics.example.fj.FJStandaloneSetup;
import it.xsemantics.example.fj.fj.Program;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.resource.XtextResourceSet;
import com.google.inject.Injector;
/**
* @author bettini
*
* Loads (and parses) a local test fj file
*/
public class FJTestLoader {
public static final String OBJECT_FJ = "Object.fj";
public static final String PLATFORM_URI_FOR_FJ_LIB = "platform:/resource/it.xsemantics.example.fj.tests/src/it/xsemantics/example/fj/lib/";
public static final String OBJECT_FJ_URI = PLATFORM_URI_FOR_FJ_LIB
+ OBJECT_FJ;
Injector injector = new FJStandaloneSetup()
.createInjectorAndDoEMFRegistration();
private XtextResourceSet resourceSet;
public FJTestLoader() throws IOException {
new org.eclipse.emf.mwe.utils.StandaloneSetup().setPlatformUri("../");
resourceSet = injector.getInstance(XtextResourceSet.class);
resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL,
Boolean.TRUE);
//resourceSet.getResource(uriForFjLibFiles(OBJECT_FJ), true);
Resource resource = resourceSet.createResource(URI
.createURI("dummy:/Object.fj"));
String program = "class Object { } ";
InputStream in = new ByteArrayInputStream(program.getBytes());
resource.load(in, resourceSet.getLoadOptions());
}
public Resource createResource() {
return resourceSet.createResource(URI.createURI("http:///My.fj"));
}
public Resource loadResource(String fileName) {
return resourceSet.getResource(uriForFjTestFiles(fileName), true);
}
protected URI uriForFjTestFiles(String fileName) {
return URI
.createURI("./tests/"
+ fileName);
}
protected URI uriForFjLibFiles(String fileName) {
return URI
.createURI(PLATFORM_URI_FOR_FJ_LIB
+ fileName);
}
public Resource loadFromString(String program) throws IOException {
Resource resource = resourceSet.createResource(URI
.createURI("dummy:/example.fj"));
InputStream in = new ByteArrayInputStream(program.getBytes());
resource.load(in, resourceSet.getLoadOptions());
return resource;
}
public Injector getInjector() {
return injector;
}
public Program loadProgramFromString(String program) throws IOException {
return (Program)loadFromString(program).getContents().get(0);
}
}