Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 353313

Summary: Unknown UML profile causes VMException
Product: [Modeling] MMT.ATL Reporter: Ronan Bar <ronan.barrett>
Component: emfvmAssignee: mmt-atl.toolkit-inbox <mmt-atl.toolkit-inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:

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)