Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » M2M (model-to-model transformation) » Call ATL from java for UML 2.0 models
Call ATL from java for UML 2.0 models [message #102890] Fri, 03 April 2009 16:56 Go to next message
Vanea CHIPRIANOV is currently offline Vanea CHIPRIANOVFriend
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
Re: Call ATL from java for UML 2.0 models [message #103292 is a reply to message #102890] Fri, 10 April 2009 10:41 Go to previous messageGo to next message
Vanea CHIPRIANOV is currently offline Vanea CHIPRIANOVFriend
Messages: 3
Registered: July 2009
Junior Member
Hi everybody,

Does anybody have any idea about the problem I described on the preceding
post? Do you need more details?

Regards,
Vanea
Re: Call ATL from java for UML 2.0 models [message #103309 is a reply to message #103292] Fri, 10 April 2009 12:11 Go to previous message
Vincent MAHE is currently offline Vincent MAHEFriend
Messages: 129
Registered: July 2009
Senior Member
Vanea CHIPRIANOV a écrit :
> Hi everybody,
>
> Does anybody have any idea about the problem I described on the
> preceding post? Do you need more details?
>
> Regards,
> Vanea
>
You should try the default ATLModelHandler in place of
ATLUMLModelHandler (this one may be written onto UML 2.1 or UML 2.2).

--
Cordialement

Vincent MAHÉ

Ingénieur Plate-forme OpenEmbeDD - http://openembedd.org
IRISA-INRIA, Campus de Beaulieu, 35042 Rennes cedex, France
Tél: +33 (0) 2 99 84 71 00, Fax: +33 (0) 2 99 84 71 71
Previous Topic:[EMF]Attribute types
Next Topic:[ATL] helpers not producing expected result (containment problem)
Goto Forum:
  


Current Time: Fri Apr 26 06:05:12 GMT 2024

Powered by FUDForum. Page generated in 0.03347 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top