Call ATL from java for UML 2.0 models [message #102890] |
Fri, 03 April 2009 16:56 |
Vanea CHIPRIANOV Messages: 3 Registered: July 2009 |
Junior Member |
|
|
Hello all,
I am trying to build a wrapper to call some ATL code from Java. I have a
problem which I think is related to the versions of libraries.
I have already read the "How do I launch transformations
programmatically?" article from eclipse wiki. I started from Milan
Milanovic's example. I need to transform UML2.0 models, so I am using the
metamodel written in ecore,
from http://dev.eclipse.org/viewcvs/index.cgi/
org.eclipse.mdt/org.eclipse.uml2/plugins/org.eclipse.uml2.um l/
model/UML.ecore?root=Modeling_Project&view=log .
The list of libraries I use is:
antlr.jar
ATL-importer.jar
ebnfextractor.jar
ebnfinjector.jar
jmi.jar
jmiutils.jar
KM3-importer.jar
km3.jar
mdr4atl.jar
mdrapi.jar
mof.jar
nbmdr.jar
openide-util.jar
org.eclipse.runtime.compatibility_3.1.100.v20060603.jar
TCS-importer.jar
org.atl.eclipse.engine.jar
vm.jar
org.eclipse.emf.common_2.1.0.jar
org.eclipse.emf.ecore.xmi_2.1.0.jar
emf4atl.jar
org.eclipse.core.resources_3.1.2.jar
org.eclipse.core.runtime_3.1.2.jar
org.eclipse.m2m.atl.drivers.uml24atl_2.0.1.v200809170426.jar
org.eclipse.emf.ecore_2.1.0.jar
I have tried to run this first in Eclipse Modeling Tools (Eclipse 3.4) and
then in Eclipse 3.1.2, but with the same problems:
First, when I try to load the UML metamodel, if I use either emfamh or
umlamh:
private AtlModelHandler emfamh = null;
private AtlUML2ModelHandler umlamh = null;
emfamh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
oneMM_EMF = emfamh.loadModel("OneMM", emfamh.getMof(),
onemmurl.openStream());
umlamh = new AtlUML2ModelHandler();
oneMM_EMF = umlamh.loadModel("OneMM", umlamh.getMof(),
onemmurl.openStream());
I get the error:
org.eclipse.emf.ecore.xmi.FeatureNotFoundException: Feature 'eGenericType'
not found. (OneMM, 63, 98)
at
org.eclipse.emf.ecore.xmi.impl.XMLHandler.reportUnknownFeatu re(XMLHandler.java:1215)
at
org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleUnknownFeatu re(XMLHandler.java:1185)
at
org.eclipse.emf.ecore.xmi.impl.XMIHandler.handleUnknownFeatu re(XMIHandler.java:87)
at
org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleFeature(XMLH andler.java:1146)
at
org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XML Handler.java:466)
at
org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMI Handler.java:65)
at
org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHa ndler.java:449)
at
org.eclipse.emf.ecore.xmi.impl.SAXWrapper.startElement(SAXWr apper.java:73)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser .startElement(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentS cannerImpl.scanStartElement(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentS cannerImpl$FragmentContentDriver.next(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerIm pl.next(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentS cannerImpl.scanDocument(Unknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuratio n.parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuratio n.parse(Unknown
Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(U nknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser .parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSA XParser.parse(Unknown
Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl. java:140)
at
org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLRes ourceImpl.java:169)
at
org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(Resour ceImpl.java:977)
at
org.atl.engine.repositories.emf4atl.ASMEMFModel.loadASMEMFMo del(ASMEMFModel.java:341)
at
org.atl.eclipse.engine.AtlEMFModelHandler.loadModel(AtlEMFMo delHandler.java:110)
at atl.ATLTransformations.initEMF(ATLTransformations.java:199)
at atl.ATLTransformations.<init>(ATLTransformations.java:122)
at
atl.ATLTransformations.getATLTransformations(ATLTransformati ons.java:242)
at atl.ATLTransformations.main(ATLTransformations.java:641)
I checked with the debugger and both emfamh and umlamh get intialized. I
think the problem is in the difference between
the UML2.0 metamodel (the ecore file), and the libraries which implement
it (or ecore) in eclipse. I noticed that
org.eclipse.emf.ecore_2.1.0.jar, in its org.eclipse.emf.ecore package does
not have an EGenericType.class, while
org.eclipse.emf.ecore_2.4.1.v200808251517.jar has it. So I tried to change
the org.eclipse.emf.ecore to the 2.4.1 version,
and a whole flow of errors started:
java.lang.ExceptionInInitializerError
at
org.eclipse.emf.ecore.impl.EPackageImpl.eStaticClass(EPackag eImpl.java:218)
at org.eclipse.emf.ecore.impl.EObjectImpl.eClass(EObjectImpl.ja va:224)
at
org.eclipse.emf.ecore.impl.ENamedElementImpl.eContents(EName dElementImpl.java:232)
at
org.eclipse.emf.ecore.util.EcoreUtil$ProperContentIterator.<init >(EcoreUtil.java:1200)
at org.eclipse.emf.ecore.util.EcoreUtil$4.getChildren(EcoreUtil .java:1111)
at
org.eclipse.emf.ecore.util.EcoreUtil$ContentTreeIterator.has Next(EcoreUtil.java:1362)
at
org.eclipse.emf.ecore.resource.impl.ResourceImpl.attached(Re sourceImpl.java:853)
at
org.eclipse.emf.ecore.resource.impl.ResourceImpl$ContentsELi st.inverseAdd(ResourceImpl.java:415)
at
org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUniq ue(NotifyingListImpl.java:301)
at org.eclipse.emf.common.util.BasicEList.add(BasicEList.java:5 99)
at
org.eclipse.emf.ecore.impl.EPackageImpl.createResource(EPack ageImpl.java:712)
at
org.eclipse.emf.ecore.impl.EcorePackageImpl.initializePackag eContents(EcorePackageImpl.java:2392)
at
org.eclipse.emf.ecore.impl.EcorePackageImpl.init(EcorePackag eImpl.java:492)
at org.eclipse.emf.ecore.EcorePackage.<clinit>(EcorePackage.java:72)
at
org.atl.engine.repositories.emf4atl.ASMEMFModel.createMOF(AS MEMFModel.java:405)
at
org.atl.eclipse.engine.AtlEMFModelHandler.<init>(AtlEMFModelHandler.java:89)
at
org.atl.eclipse.engine.AtlModelHandler.getDefault(AtlModelHa ndler.java:50)
at atl.ATLTransformations.initEMF(ATLTransformations.java:177)
at atl.ATLTransformations.<init>(ATLTransformations.java:122)
at
atl.ATLTransformations.getATLTransformations(ATLTransformati ons.java:242)
at atl.ATLTransformations.main(ATLTransformations.java:641)
Caused by: java.lang.NullPointerException
at
org.eclipse.emf.ecore.EcorePackage$Literals.<clinit>(EcorePackage.java:3955)
... 21 more
at the code line:
emfamh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
Now I am thinking if I should change other libraries as well, or if the
problem is in another place.
Any suggestion will be highly welcomed.
Thank you in advance,
Vanea
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03347 seconds