Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » M2M (model-to-model transformation) » [ATL] Setting details of EAnnotations or maps in general
[ATL] Setting details of EAnnotations or maps in general [message #85340] Thu, 26 June 2008 23:17 Go to next message
Eclipse UserFriend
Originally posted by: ttonelli.uwaterloo.ca

Hi,

I have a transformation whose target metamodel is Ecore. I am trying to add 'details' to an EAnnotation in this way:


from
source : MMsource!SourceType
to
annotation : Ecore!EAnnotation (
details <- a.details->including('name', source.name)
)


Note that:
- EAnnotation has a "details" feature of type EMap<String, String>;
- EMap is *not* an instance of java.util.Map, it implements java.util.List
- However, EMap has a put(K, V) method

If I try that code, I get an IllegalArgumentException thrown when the details feature is set by reflection (the stack
trace is below).

My questions are:

- am I using the correct idea to set the values on details?

- how is the type system here dealing with EMap? Since I am using "including()" with 2 arguments, I would think that the
compiler treats "details" as a Map (and it should call a put method when performing the transformation). However,
because the runtime object is not really a Map, it seems that the compiler/vm is treating it as a List or Sequence. I
don't understand the VM stack yet, but what gave me this idea was this line:

SEVERE: args = [Sequence {}, 'name', 'PriceCalculatorModel']

which seems to tell that the "empty details" is being treated as the empty sequence, which causes the native operation
to fail.


Thanks for any help,
Thiago



SEVERE: ****** BEGIN Stack Trace
SEVERE: exception:
SEVERE: null
java.lang.IllegalArgumentException
at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:69)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.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.ja va:169)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
at org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
at org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
at org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
at org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:764)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:614)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:880)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1083)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
SEVERE: A.main() : ??#24 null
SEVERE: local variables = {self=TestModule : ASMModule}
SEVERE: local stack = []
SEVERE: A.__exec__() : ??#8 null
SEVERE: local variables = {e=TransientLink {rule = 'TestRule', sourceElements = {d = IN!PriceCalculatorModel},
targetElements = {a = OUT!<unnamed>}, variables = {}}, self=TestModule : ASMModule}
SEVERE: local stack = []
SEVERE: A.__applyTestRule(1 : NTransientLink;) : ??#16 25:15-25:51
SEVERE: local variables = {a=OUT!<unnamed>, d=IN!PriceCalculatorModel, link=TransientLink {rule = 'TestRule',
sourceElements = {d = IN!PriceCalculatorModel}, targetElements = {a = OUT!<unnamed>}, variables = {}}, self=TestModule :
ASMModule}
SEVERE: local stack = [OUT!<unnamed>, OUT!<unnamed>, TestModule : ASMModule]
SEVERE: NativeOperation public static org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence
org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence.includin g(org.eclipse.m2m.atl.engine.vm.StackFrame,org.eclipse.m2m.a tl.engine.vm.nativelib.ASMSequence,org.eclipse.m2m.atl.engin e.vm.nativelib.ASMOclAny)
SEVERE: args = [Sequence {}, 'name', 'PriceCalculatorModel']
SEVERE: ****** END Stack Trace
INFO: Execution terminated due to error (see launch configuration to allow continuation after errors).
SEVERE: null
java.lang.RuntimeException
at org.eclipse.m2m.atl.engine.vm.SimpleDebugger.error(SimpleDeb ugger.java:195)
at org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:95)
at org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:87)
at org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:74)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
at org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
at org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.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.ja va:169)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
at org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
at org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
at org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
at org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:764)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:614)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:880)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1083)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.IllegalArgumentException
at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:69)
... 26 more
Re: [ATL] Setting details of EAnnotations or maps in general [message #85356 is a reply to message #85340] Fri, 27 June 2008 08:48 Go to previous messageGo to next message
loukil is currently offline loukilFriend
Messages: 6
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------020009000401080506060607
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Hi Thiago,

Take a look at this example, it will show you how you can add detail to
an EAnnotation :

rule Comment2EAnnotation {
from
c : UML!Comment
to
map : Ecore!EStringToStringMapEntry(
key <- 'name',
value <- c.body
),
e : Ecore!EAnnotation(
details<-map
)
}

I enclose the ATL Sample in this post.

Regards,
Brahim
http://www.linkedin.com/in/brlouk


Thiago Tonelli Bartolomei a
Re: [ATL] Setting details of EAnnotations or maps in general [message #85413 is a reply to message #85356] Fri, 27 June 2008 22:47 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: ttonelli.uwaterloo.ca

Hi Brahim,

thanks, it works!

But just to clarify the semantics of this solution, it means that EMap (the details) is actually treated as a List of
EStringToStringMapEntry.

So,
details<-map

is a shortcut for something like:

details<-Set{map}

and then if I want to set several key/value pairs in the details I could do:

details<-Set{map, map2 ,map3}

and create several map entries. It is not the cleanest solution (I have to create several entries), but works fine (I
think it is Ecore's fault to create a map that is actually a list).

Thanks again!
Thiago


Brahim Loukil wrote:
> Hi Thiago,
>
> Take a look at this example, it will show you how you can add detail to
> an EAnnotation :
>
> rule Comment2EAnnotation {
> from
> c : UML!Comment
> to
> map : Ecore!EStringToStringMapEntry(
> key <- 'name',
> value <- c.body
> ),
> e : Ecore!EAnnotation(
> details<-map
> )
> }
>
> I enclose the ATL Sample in this post.
>
> Regards,
> Brahim
> http://www.linkedin.com/in/brlouk
>
>
> Thiago Tonelli Bartolomei a écrit :
>> Hi,
>>
>> I have a transformation whose target metamodel is Ecore. I am trying
>> to add 'details' to an EAnnotation in this way:
>>
>>
>> from
>> source : MMsource!SourceType
>> to
>> annotation : Ecore!EAnnotation (
>> details <- a.details->including('name', source.name)
>> )
>>
>>
>> Note that:
>> - EAnnotation has a "details" feature of type EMap<String, String>;
>> - EMap is *not* an instance of java.util.Map, it implements
>> java.util.List
>> - However, EMap has a put(K, V) method
>>
>> If I try that code, I get an IllegalArgumentException thrown when the
>> details feature is set by reflection (the stack
>> trace is below).
>>
>> My questions are:
>>
>> - am I using the correct idea to set the values on details?
>>
>> - how is the type system here dealing with EMap? Since I am using
>> "including()" with 2 arguments, I would think that the
>> compiler treats "details" as a Map (and it should call a put method
>> when performing the transformation). However,
>> because the runtime object is not really a Map, it seems that the
>> compiler/vm is treating it as a List or Sequence. I
>> don't understand the VM stack yet, but what gave me this idea was this
>> line:
>>
>> SEVERE: args = [Sequence {}, 'name', 'PriceCalculatorModel']
>>
>> which seems to tell that the "empty details" is being treated as the
>> empty sequence, which causes the native operation
>> to fail.
>>
>>
>> Thanks for any help,
>> Thiago
>>
>>
>>
>> SEVERE: ****** BEGIN Stack Trace
>> SEVERE: exception:
>> SEVERE: null
>> java.lang.IllegalArgumentException
>> at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:597)
>> at
>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:69)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.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.ja va:169)
>> at
>> org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
>> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
>> at
>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
>>
>> at
>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
>>
>> at
>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
>>
>> at
>> org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
>>
>> at
>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:764)
>>
>> at
>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:614)
>>
>> at
>> org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:880)
>>
>> at
>> org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1083)
>>
>> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
>> SEVERE: A.main() : ??#24 null
>> SEVERE: local variables = {self=TestModule : ASMModule}
>> SEVERE: local stack = []
>> SEVERE: A.__exec__() : ??#8 null
>> SEVERE: local variables = {e=TransientLink {rule = 'TestRule',
>> sourceElements = {d = IN!PriceCalculatorModel},
>> targetElements = {a = OUT!<unnamed>}, variables = {}}, self=TestModule
>> : ASMModule}
>> SEVERE: local stack = []
>> SEVERE: A.__applyTestRule(1 : NTransientLink;) : ??#16 25:15-25:51
>> SEVERE: local variables = {a=OUT!<unnamed>,
>> d=IN!PriceCalculatorModel, link=TransientLink {rule = 'TestRule',
>> sourceElements = {d = IN!PriceCalculatorModel}, targetElements = {a =
>> OUT!<unnamed>}, variables = {}}, self=TestModule :
>> ASMModule}
>> SEVERE: local stack = [OUT!<unnamed>, OUT!<unnamed>, TestModule :
>> ASMModule]
>> SEVERE: NativeOperation public static
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence.includin g(org.eclipse.m2m.atl.engine.vm.StackFrame,org.eclipse.m2m.a tl.engine.vm.nativelib.ASMSequence,org.eclipse.m2m.atl.engin e.vm.nativelib.ASMOclAny)
>>
>> SEVERE: args = [Sequence {}, 'name', 'PriceCalculatorModel']
>> SEVERE: ****** END Stack Trace
>> INFO: Execution terminated due to error (see launch configuration to
>> allow continuation after errors).
>> SEVERE: null
>> java.lang.RuntimeException
>> at
>> org.eclipse.m2m.atl.engine.vm.SimpleDebugger.error(SimpleDeb ugger.java:195)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:95)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:87)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:74)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>
>> at
>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.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.ja va:169)
>> at
>> org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
>> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
>> at
>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
>>
>> at
>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
>>
>> at
>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
>>
>> at
>> org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
>>
>> at
>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:764)
>>
>> at
>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:614)
>>
>> at
>> org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:880)
>>
>> at
>> org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1083)
>>
>> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
>> Caused by: java.lang.IllegalArgumentException
>> at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>
>> at java.lang.reflect.Method.invoke(Method.java:597)
>> at
>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:69)
>>
>> ... 26 more
>
Re: [ATL] Setting details of EAnnotations or maps in general [message #85429 is a reply to message #85413] Sat, 28 June 2008 14:37 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
Thiago,

Comments below.

Thiago Tonelli Bartolomei wrote:
> Hi Brahim,
>
> thanks, it works!
>
> But just to clarify the semantics of this solution, it means that EMap (the details) is actually treated as a List of
> EStringToStringMapEntry.
>
That's exactly what it is, reflectively.
> So,
> details<-map
>
> is a shortcut for something like:
>
> details<-Set{map}
>
> and then if I want to set several key/value pairs in the details I could do:
>
> details<-Set{map, map2 ,map3}
>
> and create several map entries. It is not the cleanest solution (I have to create several entries), but works fine (I
> think it is Ecore's fault to create a map that is actually a list).
>
It would be a major complication for all reflective accessors to have to
deal with a case other than simply isMany being false/true. So yes it's
Ecore's "fault" but it's completely intentional. It's how we were able
to add support for maps without forcing everyone with reflective code to
change it...
> Thanks again!
> Thiago
>
>
> Brahim Loukil wrote:
>
>> Hi Thiago,
>>
>> Take a look at this example, it will show you how you can add detail to
>> an EAnnotation :
>>
>> rule Comment2EAnnotation {
>> from
>> c : UML!Comment
>> to
>> map : Ecore!EStringToStringMapEntry(
>> key <- 'name',
>> value <- c.body
>> ),
>> e : Ecore!EAnnotation(
>> details<-map
>> )
>> }
>>
>> I enclose the ATL Sample in this post.
>>
>> Regards,
>> Brahim
>> http://www.linkedin.com/in/brlouk
>>
>>
>> Thiago Tonelli Bartolomei a écrit :
>>
>>> Hi,
>>>
>>> I have a transformation whose target metamodel is Ecore. I am trying
>>> to add 'details' to an EAnnotation in this way:
>>>
>>>
>>> from
>>> source : MMsource!SourceType
>>> to
>>> annotation : Ecore!EAnnotation (
>>> details <- a.details->including('name', source.name)
>>> )
>>>
>>>
>>> Note that:
>>> - EAnnotation has a "details" feature of type EMap<String, String>;
>>> - EMap is *not* an instance of java.util.Map, it implements
>>> java.util.List
>>> - However, EMap has a put(K, V) method
>>>
>>> If I try that code, I get an IllegalArgumentException thrown when the
>>> details feature is set by reflection (the stack
>>> trace is below).
>>>
>>> My questions are:
>>>
>>> - am I using the correct idea to set the values on details?
>>>
>>> - how is the type system here dealing with EMap? Since I am using
>>> "including()" with 2 arguments, I would think that the
>>> compiler treats "details" as a Map (and it should call a put method
>>> when performing the transformation). However,
>>> because the runtime object is not really a Map, it seems that the
>>> compiler/vm is treating it as a List or Sequence. I
>>> don't understand the VM stack yet, but what gave me this idea was this
>>> line:
>>>
>>> SEVERE: args = [Sequence {}, 'name', 'PriceCalculatorModel']
>>>
>>> which seems to tell that the "empty details" is being treated as the
>>> empty sequence, which causes the native operation
>>> to fail.
>>>
>>>
>>> Thanks for any help,
>>> Thiago
>>>
>>>
>>>
>>> SEVERE: ****** BEGIN Stack Trace
>>> SEVERE: exception:
>>> SEVERE: null
>>> java.lang.IllegalArgumentException
>>> at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>
>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:69)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.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.ja va:169)
>>> at
>>> org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
>>> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
>>> at
>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
>>>
>>> at
>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
>>>
>>> at
>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
>>>
>>> at
>>> org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
>>>
>>> at
>>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:764)
>>>
>>> at
>>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:614)
>>>
>>> at
>>> org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:880)
>>>
>>> at
>>> org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1083)
>>>
>>> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
>>> SEVERE: A.main() : ??#24 null
>>> SEVERE: local variables = {self=TestModule : ASMModule}
>>> SEVERE: local stack = []
>>> SEVERE: A.__exec__() : ??#8 null
>>> SEVERE: local variables = {e=TransientLink {rule = 'TestRule',
>>> sourceElements = {d = IN!PriceCalculatorModel},
>>> targetElements = {a = OUT!<unnamed>}, variables = {}}, self=TestModule
>>> : ASMModule}
>>> SEVERE: local stack = []
>>> SEVERE: A.__applyTestRule(1 : NTransientLink;) : ??#16 25:15-25:51
>>> SEVERE: local variables = {a=OUT!<unnamed>,
>>> d=IN!PriceCalculatorModel, link=TransientLink {rule = 'TestRule',
>>> sourceElements = {d = IN!PriceCalculatorModel}, targetElements = {a =
>>> OUT!<unnamed>}, variables = {}}, self=TestModule :
>>> ASMModule}
>>> SEVERE: local stack = [OUT!<unnamed>, OUT!<unnamed>, TestModule :
>>> ASMModule]
>>> SEVERE: NativeOperation public static
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence.includin g(org.eclipse.m2m.atl.engine.vm.StackFrame,org.eclipse.m2m.a tl.engine.vm.nativelib.ASMSequence,org.eclipse.m2m.atl.engin e.vm.nativelib.ASMOclAny)
>>>
>>> SEVERE: args = [Sequence {}, 'name', 'PriceCalculatorModel']
>>> SEVERE: ****** END Stack Trace
>>> INFO: Execution terminated due to error (see launch configuration to
>>> allow continuation after errors).
>>> SEVERE: null
>>> java.lang.RuntimeException
>>> at
>>> org.eclipse.m2m.atl.engine.vm.SimpleDebugger.error(SimpleDeb ugger.java:195)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:95)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:87)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:74)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.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.ja va:169)
>>> at
>>> org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
>>> at org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
>>> at
>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
>>>
>>> at
>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
>>>
>>> at
>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
>>>
>>> at
>>> org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
>>>
>>> at
>>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:764)
>>>
>>> at
>>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:614)
>>>
>>> at
>>> org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:880)
>>>
>>> at
>>> org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1083)
>>>
>>> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
>>> Caused by: java.lang.IllegalArgumentException
>>> at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>
>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>> at
>>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:69)
>>>
>>> ... 26 more
>>>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: [ATL] Setting details of EAnnotations or maps in general [message #85443 is a reply to message #85429] Sat, 28 June 2008 03:44 Go to previous message
Eclipse UserFriend
Originally posted by: ttonelli.uwaterloo.ca

Hi,

Ed Merks wrote:
> Thiago,
>
> Comments below.
>
> Thiago Tonelli Bartolomei wrote:
>> Hi Brahim,
>>
>> thanks, it works!
>>
>> But just to clarify the semantics of this solution, it means that EMap
>> (the details) is actually treated as a List of
>> EStringToStringMapEntry.
>>
> That's exactly what it is, reflectively.
>> So,
>> details<-map
>>
>> is a shortcut for something like:
>>
>> details<-Set{map}
>>
>> and then if I want to set several key/value pairs in the details I
>> could do:
>>
>> details<-Set{map, map2 ,map3}
>>
>> and create several map entries. It is not the cleanest solution (I
>> have to create several entries), but works fine (I
>> think it is Ecore's fault to create a map that is actually a list).
>>
> It would be a major complication for all reflective accessors to have to
> deal with a case other than simply isMany being false/true. So yes it's
> Ecore's "fault" but it's completely intentional. It's how we were able
> to add support for maps without forcing everyone with reflective code to
> change it...

Oh yes, I should have used "fault". I understand the issue and I know it was intentional.

Cheers,
Thiago


>> Thanks again!
>> Thiago
>>
>>
>> Brahim Loukil wrote:
>>
>>> Hi Thiago,
>>>
>>> Take a look at this example, it will show you how you can add detail to
>>> an EAnnotation :
>>>
>>> rule Comment2EAnnotation {
>>> from
>>> c : UML!Comment
>>> to
>>> map : Ecore!EStringToStringMapEntry(
>>> key <- 'name',
>>> value <- c.body
>>> ),
>>> e : Ecore!EAnnotation(
>>> details<-map
>>> )
>>> }
>>>
>>> I enclose the ATL Sample in this post.
>>>
>>> Regards,
>>> Brahim
>>> http://www.linkedin.com/in/brlouk
>>>
>>>
>>> Thiago Tonelli Bartolomei a écrit :
>>>
>>>> Hi,
>>>>
>>>> I have a transformation whose target metamodel is Ecore. I am trying
>>>> to add 'details' to an EAnnotation in this way:
>>>>
>>>>
>>>> from
>>>> source : MMsource!SourceType
>>>> to
>>>> annotation : Ecore!EAnnotation (
>>>> details <- a.details->including('name', source.name)
>>>> )
>>>>
>>>>
>>>> Note that:
>>>> - EAnnotation has a "details" feature of type EMap<String, String>;
>>>> - EMap is *not* an instance of java.util.Map, it implements
>>>> java.util.List
>>>> - However, EMap has a put(K, V) method
>>>>
>>>> If I try that code, I get an IllegalArgumentException thrown when the
>>>> details feature is set by reflection (the stack
>>>> trace is below).
>>>>
>>>> My questions are:
>>>>
>>>> - am I using the correct idea to set the values on details?
>>>>
>>>> - how is the type system here dealing with EMap? Since I am using
>>>> "including()" with 2 arguments, I would think that the
>>>> compiler treats "details" as a Map (and it should call a put method
>>>> when performing the transformation). However,
>>>> because the runtime object is not really a Map, it seems that the
>>>> compiler/vm is treating it as a List or Sequence. I
>>>> don't understand the VM stack yet, but what gave me this idea was this
>>>> line:
>>>>
>>>> SEVERE: args = [Sequence {}, 'name', 'PriceCalculatorModel']
>>>>
>>>> which seems to tell that the "empty details" is being treated as the
>>>> empty sequence, which causes the native operation
>>>> to fail.
>>>>
>>>>
>>>> Thanks for any help,
>>>> Thiago
>>>>
>>>>
>>>>
>>>> SEVERE: ****** BEGIN Stack Trace
>>>> SEVERE: exception:
>>>> SEVERE: null
>>>> java.lang.IllegalArgumentException
>>>> at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>
>>>>
>>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:69)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.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.ja va:169)
>>>> at
>>>> org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
>>>> at
>>>> org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
>>>> at
>>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
>>>>
>>>>
>>>> at
>>>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:764)
>>>>
>>>>
>>>> at
>>>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:614)
>>>>
>>>>
>>>> at
>>>> org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:880)
>>>>
>>>>
>>>> at
>>>> org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1083)
>>>>
>>>>
>>>> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
>>>> SEVERE: A.main() : ??#24 null
>>>> SEVERE: local variables = {self=TestModule : ASMModule}
>>>> SEVERE: local stack = []
>>>> SEVERE: A.__exec__() : ??#8 null
>>>> SEVERE: local variables = {e=TransientLink {rule = 'TestRule',
>>>> sourceElements = {d = IN!PriceCalculatorModel},
>>>> targetElements = {a = OUT!<unnamed>}, variables = {}}, self=TestModule
>>>> : ASMModule}
>>>> SEVERE: local stack = []
>>>> SEVERE: A.__applyTestRule(1 : NTransientLink;) : ??#16 25:15-25:51
>>>> SEVERE: local variables = {a=OUT!<unnamed>,
>>>> d=IN!PriceCalculatorModel, link=TransientLink {rule = 'TestRule',
>>>> sourceElements = {d = IN!PriceCalculatorModel}, targetElements = {a =
>>>> OUT!<unnamed>}, variables = {}}, self=TestModule :
>>>> ASMModule}
>>>> SEVERE: local stack = [OUT!<unnamed>, OUT!<unnamed>, TestModule :
>>>> ASMModule]
>>>> SEVERE: NativeOperation public static
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence.includin g(org.eclipse.m2m.atl.engine.vm.StackFrame,org.eclipse.m2m.a tl.engine.vm.nativelib.ASMSequence,org.eclipse.m2m.atl.engin e.vm.nativelib.ASMOclAny)
>>>>
>>>>
>>>> SEVERE: args = [Sequence {}, 'name', 'PriceCalculatorModel']
>>>> SEVERE: ****** END Stack Trace
>>>> INFO: Execution terminated due to error (see launch configuration to
>>>> allow continuation after errors).
>>>> SEVERE: null
>>>> java.lang.RuntimeException
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.SimpleDebugger.error(SimpleDeb ugger.java:195)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:95)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.StackFrame.printStackTrace(Sta ckFrame.java:87)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:74)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:240)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.java:338)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.exec(ASMOperation .java:171)
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:143)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.invoke(ASM OclAny.java:101)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ASMOperation.realExec(ASMOpera tion.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.ja va:169)
>>>> at
>>>> org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:111)
>>>> at
>>>> org.eclipse.m2m.atl.engine.AtlLauncher.launch(AtlLauncher.ja va:87)
>>>> at
>>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:326)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:426)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:398)
>>>>
>>>>
>>>> at
>>>> org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:42)
>>>>
>>>>
>>>> at
>>>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:764)
>>>>
>>>>
>>>> at
>>>> org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:614)
>>>>
>>>>
>>>> at
>>>> org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:880)
>>>>
>>>>
>>>> at
>>>> org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1083)
>>>>
>>>>
>>>> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
>>>> Caused by: java.lang.IllegalArgumentException
>>>> at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>>>>
>>>>
>>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>>> at
>>>> org.eclipse.m2m.atl.engine.vm.ClassNativeOperation.exec(Clas sNativeOperation.java:69)
>>>>
>>>>
>>>> ... 26 more
>>>>
Previous Topic:[QVTO] Add UML stereotypes in out model
Next Topic:Set stereotype tagged value
Goto Forum:
  


Current Time: Fri Apr 26 12:35:55 GMT 2024

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

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

Back to the top