Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [henshin-dev] Interpreter Wizard

Hi,

I committed another patch that solves the other issue too. So now the wizard should correctly handle multiple (and changing) root objects. Let me know if you still experience any problems. The fixed version should be available at the nightly builds update site in 24h.

Cheers,
Christian

On 10/30/2012 07:28 PM, Christian Krause wrote:
I committed a patch that fixes this issue. It seems to work, but there is still a problem related to the registering of packages in the wizard.

Cheers,
Christian

On 10/30/2012 06:52 PM, Christian Krause wrote:
Hi,

I debugged the problem a bit more. The problem with the Sierpinski example is actually caused by the missing handling of root objects by the interpreter wizard. What we need to do in the interpreter wizard is to use a Resource as model root, and not just a single EObject. After the transformation we need to collect newly created root objects from EGraph and put them back into the resource. Than we can make the diff on the two resources (or apply the transformation and save the new resource).

The Sierpinski example is a bit special: to improve the performance, the transformation only considers Vertex objects, and not VertexContainers. In the interpreter wizard you might expect that the new vertices are added to the container, but this is not done by the rule for performance reasons.

Cheers,
Christian

On 10/19/2012 08:48 PM, Christian Krause wrote:
Dear Gregor,
could you at some point revise the interpreter wizard? We currently have 2 problems:

1) The Sierpinski example seems not to work in the wizard (but in the stand-alone Java app).

2) The wizard does not support models with multiple root objects. As an example you can take the Ecore2UML example. It should generate two UML packages ("ecore" and "flowchartdsl") which should be added as new root objects. Actually, all generated trace objects should also become root objects. If the model is too big, you can also try a smaller example.

In general, I recommend to construct an EGraph like this: new EGraphImpl(resource) or EGraph(eobject). Note that there are 2 new methods called addGraph(EObject) and removeGraph(EObject). In contrast to addTree(EObject), the new methods will add / remove all transitively reachable objects to the graph, and not just the children in the containment tree. When you transformed the graph, use getRoots() to obtain the root objects again.

Cheers,
Christian





Back to the top