package fr.inria.diverse.singingmachine;
import java.util.Map;
import org.eclipse.emf.common.util.BasicEList;
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;
import fr.inria.diverse.MiniFSMStandaloneSetup;
import fr.inria.diverse.melange.resource.MelangeResourceImpl;
import fr.inria.diverse.melanger.StandaloneSetup;
import fr.inria.diverse.melanger.melangedlangmt.minifsm.FSM;
public class Main {
public static void main(String[] args) {
/*
* Melange registrations
*/
StandaloneSetup.doSetup();
/*
* Get XtextResourceSet
*/
new org.eclipse.emf.mwe.utils.StandaloneSetup().setPlatformUri("../"); //needed for platform:/resource in standalone mode
Injector injector = new MiniFSMStandaloneSetup().createInjectorAndDoEMFRegistration();
XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
MelangeResourceImpl r = (MelangeResourceImpl) resourceSet.getResource(URI.createURI("melange:/resource/fr.inria.diverse.singingmachine/model/99bottles.minifsm?mt=fr.inria.diverse.melanger.MelangedLangMT"),true);
Map<URI, Resource> map = resourceSet.getURIResourceMap();
/*
* Needed for _self.getInitialState(); 'cause FSM.initialState is an eProxy
* and the resolver don't know "platform:/resource/fr.inria.diverse.singingmachine/model/99bottles.minifsm|0"
*/
map.put(URI.createURI("platform:/resource/fr.inria.diverse.singingmachine/model/99bottles.minifsm"),r.getWrappedResource());
/*
* Execution
*/
FSM root = (FSM) r.getContents().get(0);
BasicEList<String> events = new BasicEList<String>();
events.add("one event");
root.execute(events);
}
}