Skip to content

Instantly share code, notes, and snippets.

@nbhusare
Last active September 4, 2020 14:41
Show Gist options
  • Save nbhusare/efc07e9eef8b40af2167023713b999aa to your computer and use it in GitHub Desktop.
Save nbhusare/efc07e9eef8b40af2167023713b999aa to your computer and use it in GitHub Desktop.
EMFTVM from Java
// https://wiki.eclipse.org/ATL/EMFTVM#API
ExecEnv env = EmftvmFactory.eINSTANCE.createExecEnv();
ResourceSet rs = new ResourceSetImpl();
// Load metamodels
Metamodel metaModel = EmftvmFactory.eINSTANCE.createMetamodel();
metaModel.setResource(rs.getResource(URI.createURI("http://www.eclipse.org/m2m/atl/2011/EMFTVM"), true));
env.registerMetaModel("METAMODEL", metaModel);
// Load models
Model inModel = EmftvmFactory.eINSTANCE.createModel();
inModel.setResource(rs.getResource(URI.createURI("input.xmi", true), true));
env.registerInputModel("IN", inModel);
Model inOutModel = EmftvmFactory.eINSTANCE.createModel();
inOutModel.setResource(rs.getResource(URI.createURI("inout.xmi", true), true));
env.registerInOutModel("INOUT", inOutModel);
Model outModel = EmftvmFactory.eINSTANCE.createModel();
outModel.setResource(rs.createResource(URI.createFileURI("out.xmi")));
env.registerOutputModel("OUT", outModel);
// Load and run module
ModuleResolver mr = new DefaultModuleResolver("platform:/plugin/my.plugin.id/transformations/", new ResourceSetImpl());
TimingData td = new TimingData();
env.loadModule(mr, "Module");
td.finishLoading();
env.run(td);
td.finish();
// Save models
inOutModel.getResource().save(Collections.emptyMap());
outModel.getResource().save(Collections.emptyMap());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment