[ATL] injection problem in a programmatic launch [message #633176] |
Fri, 15 October 2010 14:54 |
valerio c. Messages: 5 Registered: October 2010 |
Junior Member |
|
|
Hi,
before i got the the xmi file
url = new URL("file:/C:/MyFolder/Samples/mymodel.xmi");
ASMModel model_mymodel = modelLoader.loadModel("IN", metamodel_mymodel, url.openStream());
models.put("IN", model_mymodel);
now i'm trying to use an injector but i don't know how modelLoader.inject method works
any suggestions?
File f = new File("C:/MyFolder/Syntax/mymodel-parser.jar");
modelLoader.addInjector("ebnf", f.getClass());
url = new URL("file:/C:/MyFolder/Samples/mymodel.myextension");
ASMModel model_mymodel = null;
ASMModelElement asme = modelLoader.inject(model_mymodel, "ebnf", "METAMODEL", "file:/C:/MyFolder/Syntax/mymodel-parser.jar", url.openStream());
models.put("IN", asme.getModel());
the error is:
java.lang.InstantiationException: java.io.File
at java.lang.J9VMInternals.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1325)
at org.eclipse.m2m.atl.engine.vm.ModelLoader.inject(ModelLoader.java:122)
Valerio
|
|
|
|
Re: [ATL] injection problem in a programmatic launch [message #634322 is a reply to message #633176] |
Thu, 21 October 2010 09:26 |
valerio c. Messages: 5 Registered: October 2010 |
Junior Member |
|
|
it's working now..i needed to import the correct library
org.eclipse.gmt.tcs.injector.TCSInjector
before i was importing another one:
org.eclipse.m2m.atl.drivers.emf4atl.tcs.injector.TCSInjector
an example of using injectors and extractors could be:
...
import org.eclipse.gmt.tcs.extractor.TCSExtractor;
import org.eclipse.gmt.tcs.injector.TCSInjector;
import org.eclipse.m2m.atl.drivers.emf4atl;
import org.eclipse.m2m.atl.engine.extractors.Extractor;
import org.eclipse.m2m.atl.engine.vm.AtlLauncher;
import org.eclipse.m2m.atl.engine.vm.AtlModelHandler;
import org.eclipse.m2m.atl.engine.vm.ModelLoader;
import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
...
AtlModelHandler.registerDefaultHandler("EMF", new AtlEMFModelHandler());
AtlModelHandler amh = AtlModelHandler.getDefault("EMF");
ModelLoader ml = amh.createModelLoader();
//Injection
//input METAMODEL
url = new URL("file:/C:/Metamodel/MyMetaModel.ecore");
ASMModel metamodel_input = ml.loadModel("MyMetaModel", ml.getMOF(), url.openStream());
models.put("MyMetaModel", metamodel_input);
ASMModel model_input = ml.newModel("IN", "file:/C:/Model/sample.mymetamodel.xmi" , metamodel_input);
inj = new TCSInjector();
params = new HashMap();
params.put("name", "MyMetaModel");
ClassLoader c = ClassLoader.getSystemClassLoader();
params.put("lexerClass", org.eclipse.gmt.tcs.injector.MyMetaModel_ANTLR3Lexer.class);
params.put("parserClass", org.eclipse.gmt.tcs.injector.MyMetaModel_ANTLR3Parser.class);
url = new URL("file:/C:/Model/sample.mymetamodel");
inj.inject(model_input, url.openStream(), params);
models.put("IN", model_input);
//Extraction
//TCS METAMODEL
url = new URL("file:/C:/Metamodel/TCS.ecore");
ASMModel metamodel_tcs = ml.loadModel("TCS", ml.getMOF(), url.openStream());
//TCS MM METAMODEL
url = new URL("file:/C:/Metamodel/MM-TCS.ecore");
ASMModel metamodel_mm_tcs = ml.loadModel("MM.tcs", metamodel_tcs, url.openStream());
ext = new TCSExtractor();
params = new HashMap();
params.put("format", metamodel_mm_tcs);
params.put("identEsc", "");
params.put("stringDelim", "\"");
out = new FileOutputStream(output_filename);
ext.extract(outputModel, out, params);
...
anyway i'm not sure about this line
ASMModel model_input = ml.newModel("IN", [COLOR=red]"file:/C:/Model/sample.mymetamodel.xmi"[/COLOR] , metamodel_input);
Valerio
|
|
|
Powered by
FUDForum. Page generated in 0.02394 seconds