Bug 353313 - Unknown UML profile causes VMException
Summary: Unknown UML profile causes VMException
Status: NEW
Alias: None
Product: MMT.ATL
Classification: Modeling
Component: emfvm (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: mmt-atl.toolkit-inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-07-28 08:16 EDT by Ronan Bar CLA
Modified: 2011-07-28 08:16 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ronan Bar CLA 2011-07-28 08:16:12 EDT
If an ATL transformation is run against a UML model which has a profile attached that is, a) not exported using a EMF URL PATHMAP or b) not located on the file system locally, then ATL will crash with the following exception:

org.eclipse.m2m.atl.engine.emfvm.VMException
Java Stack:
org.eclipse.m2m.atl.engine.emfvm.VMException
at org.eclipse.m2m.atl.engine.emfvm.adapter.UML2ModelAdapter.finalizeModel(UML2ModelAdapter.java:51)
at org.eclipse.m2m.atl.engine.emfvm.lib.ExecEnv.terminated(ExecEnv.java:2557)
at org.eclipse.m2m.atl.engine.emfvm.ASM.run(ASM.java:210)
at org.eclipse.m2m.atl.engine.emfvm.launch.EMFVMLauncher.internalLaunch(EMFVMLauncher.java:170)
at org.eclipse.m2m.atl.engine.emfvm.launch.EMFVMUILauncher.launch(EMFVMUILauncher.java:46)
at org.eclipse.m2m.atl.core.service.LauncherService.launch(LauncherService.java:136)
at com.ericsson.ecim.launcher.transformations.M2MLauncher.convert(M2MLauncher.java:68)
at com.ericsson.ecim.launcher.transformations.internal.TransformationJob.run(TransformationJob.java:127)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.eclipse.m2m.atl.engine.emfvm.adapter.UML2ModelAdapter.applyDelayedInvocations(UML2ModelAdapter.java:136)
at org.eclipse.m2m.atl.engine.emfvm.adapter.UML2ModelAdapter.finalizeModel(UML2ModelAdapter.java:49)
... 8 more
Caused by: java.lang.IllegalArgumentException: org.eclipse.uml2.uml.internal.impl.ProfileImpl@42c642c6 (eProxyURI: pathmap://SOAML/SoaML.epx#_ut1IIGfDEdy6JoIZoRRqYw?SoaML?)
at org.eclipse.uml2.uml.internal.operations.PackageOperations.applyProfile(PackageOperations.java:526)
at org.eclipse.uml2.uml.internal.impl.PackageImpl.applyProfile(PackageImpl.java:1053)
... 14 more

It would be better if ATL could just ignore profiles that it cannot resolve. This scenario occurs if a tool, like IBM RSA, does not use standard EMF Pathmaps. They use GMF style pathmaps. 

We can avoid the exception normally by exposing profiles we use as both GMF and EMF pathmaps. However, if a modeller add a previously unknown profile without assigning a EMF pathmap then ATL will fail with the above exception.

This bug happens will all versions of ATL from 3.0 upwards.
java.fullversion=JRE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260sr7-20091214_49398 (JIT enabled, AOT enabled)