Home » Modeling » Epsilon » Trouble with cross-domain inheritance in EuGENia(Classes with supertypes defined in other models cause EuGENia to enter an infinite loop.)
Trouble with cross-domain inheritance in EuGENia [message #641702] |
Fri, 26 November 2010 20:50 |
Mark Tippetts Messages: 25 Registered: July 2009 |
Junior Member |
|
|
Hello,
I have a frustrating issue. I'm not sure if it's a limitation of EuGENia or a mistake I'm making. I can create references to model elements in foreign diagram types, but I can't create classes that inherit from elements in foreign diagram types. When I try, EuGENia has a conniption. It doesn't throw an error, and it doesn't produce any output. Instead, it seems to enter some kind of infinite loop.
In the current example, I have two domain/diagram models: Guidance and Interaction. I can't create forum attachments (?), so simplified versions of each are listed below, using Emfatic. The main thing here is that the class interaction!Interaction extends guidance!Cheatsheet.
I'd be very interested to know if anyone else has had success with cross-domain inheritance?
Thanks,
Mark
Guidance.ecore:
@gmf(foo="bar")
@namespace(uri="http://www.golemware.net/epsilontools/guidance/0.1.4", prefix="eclipsepsm.guide")
package guidance;
@gmf.diagram(onefile="false", model.extension="guidance", diagram.extension="guidance_diagram")
class CheatsheetCategory {
val Cheatsheet[*] cheatsheets;
attr String[1] name;
}
abstract class Cheatsheet {
attr String[1] name;
}
@gmf.node(label="name", tool.name="Task")
class Task extends Cheatsheet {
@gmf.compartment(layout="list", collapsible="true")
val Task[*] subtasks;
@gmf.link(label="depends on", source.decoration="none", target.decoration="arrow", tool.name="Task Dependency")
ref Task[*] dependsOn;
attr String intro;
attr String onCompletion;
attr boolean skip;
attr boolean activityGuideShowIntro;
}
Interaction.ecore:
@gmf(foo="bar")
@namespace(uri="http://www.golemware.net/eclipsepsm/interaction/0.1.0", prefix="eclipsepsm.interaction")
package interaction;
import "platform:/resource/net.golemware.eclipsepsm.design/examples/extention_problem/SimplifiedGuidance.ecore";
@gmf.diagram(onefile="false", model.extension="interaction", diagram.extension="interaction_diagram")
class InteractionModel {
val Interaction[*] interactionElements;
attr String[1] name;
}
@gmf.node(label="name", tool.name="Activity")
class Interaction extends guidance.Cheatsheet {
attr String description;
attr String helpCtxId;
attr String helpURL;
}
|
|
|
Re: Trouble with cross-domain inheritance in EuGENia [message #641939 is a reply to message #641702] |
Mon, 29 November 2010 10:23 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Mark,
I must admit I haven't tried EuGENia with cross-referencing Ecore
models. I'll have a look at this and get back to you.
Cheers,
Dimitris
On 26/11/2010 21:50, Mark Tippetts wrote:
> Hello,
>
> I have a frustrating issue. I'm not sure if it's a limitation of EuGENia
> or a mistake I'm making. I can create references to model elements in
> foreign diagram types, but I can't create classes that inherit from
> elements in foreign diagram types. When I try, EuGENia has a conniption.
> It doesn't throw an error, and it doesn't produce any output. Instead,
> it seems to enter some kind of infinite loop.
>
> In the current example, I have two domain/diagram models: Guidance and
> Interaction. I can't create forum attachments (?), so simplified
> versions of each are listed below, using Emfatic. The main thing here is
> that the class interaction!Interaction extends guidance!Cheatsheet.
>
> I'd be very interested to know if anyone else has had success with
> cross-domain inheritance?
>
> Thanks,
>
> Mark
>
> Guidance.ecore:
>
> @gmf(foo="bar")
> @namespace(uri="http://www.golemware.net/epsilontools/guidance/0.1.4",
> prefix="eclipsepsm.guide")
> package guidance;
>
> @gmf.diagram(onefile="false", model.extension="guidance",
> diagram.extension="guidance_diagram")
> class CheatsheetCategory {
> val Cheatsheet[*] cheatsheets;
> attr String[1] name;
> }
>
> abstract class Cheatsheet {
> attr String[1] name;
> }
>
> @gmf.node(label="name", tool.name="Task")
> class Task extends Cheatsheet {
>
> @gmf.compartment(layout="list", collapsible="true")
> val Task[*] subtasks;
>
> @gmf.link(label="depends on", source.decoration="none",
> target.decoration="arrow", tool.name="Task Dependency")
> ref Task[*] dependsOn;
> attr String intro;
> attr String onCompletion;
> attr boolean skip;
> attr boolean activityGuideShowIntro;
> }
>
>
>
> Interaction.ecore:
>
> @gmf(foo="bar")
> @namespace(uri="http://www.golemware.net/eclipsepsm/interaction/0.1.0",
> prefix="eclipsepsm.interaction")
> package interaction;
>
> import
> " platform:/resource/net.golemware.eclipsepsm.design/examples/ extention_problem/SimplifiedGuidance.ecore ";
>
>
> @gmf.diagram(onefile="false", model.extension="interaction",
> diagram.extension="interaction_diagram")
> class InteractionModel {
> val Interaction[*] interactionElements;
> attr String[1] name;
> }
>
> @gmf.node(label="name", tool.name="Activity")
> class Interaction extends guidance.Cheatsheet {
> attr String description;
> attr String helpCtxId;
> attr String helpURL;
> }
>
>
>
|
|
|
Re: Trouble with cross-domain inheritance in EuGENia [message #642916 is a reply to message #641702] |
Fri, 03 December 2010 10:27 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Mark,
Thanks for reporting this and apologies for the late reply. I've found
that if instead of importing guidance.ecore directly, you register it
and then import it by URI (import
"http://www.golemware.net/epsilontools/guidance/0.1.4") EuGENia doesn't
seem to be going into this infinite loop.
In any case, this appears to be an issue worthy of further
investigation. Could you please file a bug report for this?
https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon
Cheers,
Dimitris
Mark Tippetts wrote:
> Hello,
>
> I have a frustrating issue. I'm not sure if it's a limitation of EuGENia
> or a mistake I'm making. I can create references to model elements in
> foreign diagram types, but I can't create classes that inherit from
> elements in foreign diagram types. When I try, EuGENia has a conniption.
> It doesn't throw an error, and it doesn't produce any output. Instead,
> it seems to enter some kind of infinite loop.
>
> In the current example, I have two domain/diagram models: Guidance and
> Interaction. I can't create forum attachments (?), so simplified
> versions of each are listed below, using Emfatic. The main thing here is
> that the class interaction!Interaction extends guidance!Cheatsheet.
>
> I'd be very interested to know if anyone else has had success with
> cross-domain inheritance?
>
> Thanks,
>
> Mark
>
> Guidance.ecore:
>
> @gmf(foo="bar")
> @namespace(uri="http://www.golemware.net/epsilontools/guidance/0.1.4",
> prefix="eclipsepsm.guide")
> package guidance;
>
> @gmf.diagram(onefile="false", model.extension="guidance",
> diagram.extension="guidance_diagram")
> class CheatsheetCategory {
> val Cheatsheet[*] cheatsheets;
> attr String[1] name;
> }
>
> abstract class Cheatsheet {
> attr String[1] name;
> }
>
> @gmf.node(label="name", tool.name="Task")
> class Task extends Cheatsheet {
>
> @gmf.compartment(layout="list", collapsible="true")
> val Task[*] subtasks;
>
> @gmf.link(label="depends on", source.decoration="none",
> target.decoration="arrow", tool.name="Task Dependency")
> ref Task[*] dependsOn;
> attr String intro;
> attr String onCompletion;
> attr boolean skip;
> attr boolean activityGuideShowIntro;
> }
>
>
>
> Interaction.ecore:
>
> @gmf(foo="bar")
> @namespace(uri="http://www.golemware.net/eclipsepsm/interaction/0.1.0",
> prefix="eclipsepsm.interaction")
> package interaction;
>
> import
> " platform:/resource/net.golemware.eclipsepsm.design/examples/ extention_problem/SimplifiedGuidance.ecore ";
>
>
> @gmf.diagram(onefile="false", model.extension="interaction",
> diagram.extension="interaction_diagram")
> class InteractionModel {
> val Interaction[*] interactionElements;
> attr String[1] name;
> }
>
> @gmf.node(label="name", tool.name="Activity")
> class Interaction extends guidance.Cheatsheet {
> attr String description;
> attr String helpCtxId;
> attr String helpURL;
> }
>
>
>
|
|
| |
Re: Trouble with cross-domain inheritance in EuGENia [message #643606 is a reply to message #643465] |
Tue, 07 December 2010 15:48 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Mark,
Thanks for the update! Please let us know when you come up with a
reproducible test case.
Regarding the forum issue I'd encourage you to submit a bug report under
the "Forums and Newsgroups" component of the Community product in the
Bugzilla: https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Communit y
.. The newsgroup/forum integration is a bit shaky sometimes and I'm sure
the Eclipse web masters would appreciate any feedback.
Cheers,
Dimitris
Mark Tippetts wrote:
> Grr.. trouble with the boards... my replies keep getting eaten!
>
> Dimitris,
> No apology necessary. The holiday season consumes all my bandwidth
> anyhow. Happy Saturnalia!
>
> I haven't yet submitted the bug report you requested. I started to, but
> as I was documenting the conditions for reproducing the problem, I
> realized I'd misunderstood the nature of the issue. The difficulty is
> with recursive decomposition. I think it's connected to the issue in the
> thread on "Phantom nodes" (which I would link to, but that keeps eating
> my reply!).
>
> I haven't had any problem at all with EuGENia, except in the presence of
> recursive decomposition, which makes it really flaky. Strip out the
> annotations for recursive compartments/phantoms, and everything works
> great.
>
> I will continue working on developing a reproducible test case.
>
|
|
|
Goto Forum:
Current Time: Wed Apr 24 22:06:25 GMT 2024
Powered by FUDForum. Page generated in 0.03291 seconds
|