[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.modeling.m2m] Re: [ATL] Specifying a multi-package metamodel via EMF registry in launch configuration
|
William,
You were right, the issue was somewhere else. After running a full debug
and watching what was happening and tying that together with an earlier
comment from Hugo, I got it figured out. The strange thing is that the
behavior is different between using a .ecore file and the EMF registry.
The situation was the following:
rule CreateSegment {
from stmRoot : STM!StTreeRoot
to
kdmSegment : kdm!Segment (
-- model <- kdmModel
model <- stmRoot.rootInterpreter
),
....
and then:
rule CreateModel {
from stmInterpretation : STM!StInterpretationContext
to
kdmLanguageUnit : kdm!LanguageUnit(
name <- 'Common Java datatypes'
),
kdmModel : kdm!CodeModel (
name <- 'My project',
....
where the rootInterpreter of the first rule is of type
InterpretationContext and triggered the 2nd rule.
The issue was due to the fact that the kdmLanguageUnit is not type
compatible with the model element where it was trying to assign in,
since as Hugo said, by default it uses the first target. So I
essentially made sure that the 2nd rule was more like this:
rule CreateModel {
from stmInterpretation : STM!StInterpretationContext
to
kdmModel : kdm!CodeModel (
name <- 'My project',
....
and that cleared the issue.
Thanks for your decisive "look somewhere else" statement here.
Alain
William Piers wrote:
I am not sure, but the error you get seems to happen during the
execution, and should not be associated with the uri issue.
The problem may comes from your transformation file, if you can post
your example here it would be helpful.
Regards,
William
Alain Picard a écrit :
William,
When I specify a uri in this case it bombs out with a severe exception.
Really not sure what to make of it.
Cheers,
Alain
Exception:
SEVERE: ****** BEGIN Stack Trace
SEVERE: exception:
SEVERE: null
java.lang.ArrayStoreException
at org.eclipse.emf.common.util.BasicEList.assign(BasicEList.java:191)
at
org.eclipse.emf.common.util.BasicEList.addUnique(BasicEList.java:645)
at
org.eclipse.emf.common.notify.impl.NotifyingListImpl.doAddUnique(NotifyingListImpl.java:331)
at
org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:315)
at org.eclipse.emf.common.util.BasicEList.add(BasicEList.java:626)
at
org.eclipse.m2m.atl.drivers.emf4atl.ASMEMFModelElement.set(ASMEMFModelElement.java:283)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOperation.java:305)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation.java:171)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASMOclAny.java:143)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASMOclAny.java:101)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOperation.java:240)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOperation.java:338)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation.java:171)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASMOclAny.java:143)
at
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASMOclAny.java:101)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOperation.java:240)
at
org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation.java:171)
at
org.eclipse.m2m.atl.engine.vm.ASMInterpreter.<init>(ASMInterpreter.java:299)
at
org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.java:169)
at
org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.java:111)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.java:87)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLauncher(AtlRegularVM.java:326)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLauncher(AtlRegularVM.java:426)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlRegularVM.java:398)
at
org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDelegate.launch(AtlLaunchConfigurationDelegate.java:42)
at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764)
at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614)
at
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:880)
at
org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1083)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
SEVERE: A.main() : ??#26 null
SEVERE: local variables = {self=STM2KDM : ASMModule}
SEVERE: local stack = []
SEVERE: A.__exec__() : ??#8 null
SEVERE: local variables = {e=TransientLink {rule =
'CreateSegment', sourceElements = {stmRoot = IN!<unnamed>},
targetElements = {kdmSegment = OUT!<notnamedyet>}, variables = {}},
self=STM2KDM : ASMModule}
SEVERE: local stack = []
SEVERE: A.__applyCreateSegment(1 : NTransientLink;) : ??#14 13:4-13:36
SEVERE: local variables = {kdmSegment=OUT!<notnamedyet>,
stmRoot=IN!<unnamed>, link=TransientLink {rule = 'CreateSegment',
sourceElements = {stmRoot = IN!<unnamed>}, targetElements =
{kdmSegment = OUT!<notnamedyet>}, variables = {}}, self=STM2KDM :
ASMModule}
SEVERE: local stack = [OUT!<notnamedyet>]
SEVERE: ****** END Stack Trace
INFO: Execution terminated due to error (see launch configuration to
allow continuation after errors).
SEVERE: null
William Piers wrote:
Hi,
When you load an EPackage (i.e. specify an URI in the launch
configuration), all the referenced packages are loaded. So I think
you won't have problems if you indicates the package which contents
the metaelements (or one of them) you have in your input model.
Best regards,
William
Alain Picard a écrit :
Hi,
As we are working on getting our KDM transformation patterns up to
speed, we are encountering another issue.
We want to reference/declare our OUT KDM metamodel through the EMF
registry in order to pickup the full EMF model, so that we can have
access to its eOperations directly from ATL.
This worked fine with our source model since it has a single default
package, but as you might be aware, the KDM is composed of 12
separate packages in the same metamodel.
How can we map our single OUT : kdm in the ATL with all those
packages, as it is how it shows up in the EMF registry.
Thanks
Alain