Home » Modeling » ATL » Problem in a helper
Problem in a helper [message #1058091] |
Sat, 11 May 2013 00:25 |
Eclipse User |
|
|
|
Dears,
I have a helper that gets all instances of a certain class in my meta model, as follows:
helper def: getNodes() : Sequence(Flowchart!Node) =
Flowchart!Node.allInstances();
But it returns a sequence as follows:
{IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>}
Note that the number of the "IN!<unnamed>" elements in the result sequence is the same number of the nodes in the input file.
Anyone can help?
|
|
|
Re: Problem in a helper [message #1058307 is a reply to message #1058091] |
Mon, 13 May 2013 14:12 |
Hugo Bruneliere Messages: 674 Registered: July 2009 |
Senior Member |
|
|
Hello,
How do you obtain the following display: {IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>}?
Have you tried to use the result of the helper in one of your transformation rules? The result may actually be correct.
Hugo
--------------------------------------------------------
Hugo Bruneliere, PhD
NaoMod team (IMT Atlantique & LS2N-CNRS)
Nantes - France
--------------------------------------------------------
|
|
|
Re: Problem in a helper [message #1058398 is a reply to message #1058307] |
Mon, 13 May 2013 23:01 |
Eclipse User |
|
|
|
I obtained this output when I print it in the helper
When I use the result in another rule, it throws exception and the sequence as nulls.
The rule is as follows:
rule DecisionNode2IFStatement
{
from
node : Flowchart!Node
using{
ifNodes : Sequence(Flowchart!Node) = thisModule.getIfStmts();
}
to
stmt : Java!IfStatement(
condition<-node.title ,
statements<-ifNodes->collect(n | thisModule.Node2Stmt )
)
}
where "Node2Stmt" is another lazy rule :
lazy rule Node2Stmt {
from
node : Flowchart!Node
to
javaStmt: Java!JavaStatement(
javaStmt <- node
)
}
And the exception is (the important parts are red and bold):
org.eclipse.m2m.atl.engine.emfvm.VMException
at __resolve__#3(Flowchart2Java.atl)
local variables: self=Flowchart2Java : ASMModule, value=<null>
at __resolve__#26(Flowchart2Java.atl)
local variables: self=Flowchart2Java : ASMModule, value=Sequence {<null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>}, e=<null>
at __applyDecisionNode2IFStatement#31(Flowchart2Java.atl[130:4-130:59])
local variables: self=Flowchart2Java : ASMModule, link=TransientLink {rule = DecisionNode2IFStatement, sourceElements = {node = org.eclipse.emf.ecore.impl.DynamicEObjectImpl@5246e0 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false))}, targetElements = {stmt = org.eclipse.emf.ecore.impl.DynamicEObjectImpl@a4599e (eClass: org.eclipse.emf.ecore.impl.EClassImpl@dbfedf (name: IfStatement) (instanceClassName: null) (abstract: false, interface: false))}, variables = {ifNodes = [org.eclipse.emf.ecore.impl.DynamicEObjectImpl@84dd5c (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@e0cc83 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@92d5f0 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@1babf7 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@b70709 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@2ef3ba (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@83562d (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@8ed5db (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@17a4528 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@5246e0 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@1ab4552 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@1543047 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false)), org.eclipse.emf.ecore.impl.DynamicEObjectImpl@2d8b20 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@17b4941 (name: Node) (instanceClassName: null) (abstract: false, interface: false))]}}, node=IN!<unnamed>, stmt=OUT!<unnamed>, ifNodes=OrderedSet {IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>, IN!<unnamed>}
Thanks a lot for your help and Sorry for the long message.
[Updated on: Tue, 14 May 2013 08:14] by Moderator Report message to a moderator
|
|
| |
Re: Problem in a helper [message #1058759 is a reply to message #1058622] |
Tue, 14 May 2013 23:15 |
Eclipse User |
|
|
|
Sorry, My helper name is getIfStmts.
It's called in the using section in the rule "DecisionNode2IFStatement".
I don't use an attribute helper, because later I will need to send a parameter to this helper (range of nodes' ids).
But now I was just testing a small part.
|
|
| | |
Goto Forum:
Current Time: Fri Apr 19 01:00:03 GMT 2024
Powered by FUDForum. Page generated in 0.02508 seconds
|