Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » UML2 » Re: The definitive truth about multiple inheritance
Re: The definitive truth about multiple inheritance [message #478583] Thu, 02 July 2009 21:53 Go to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 26281
Registered: July 2009
Senior Member
Guillaume,

The UML project has an extended GenModel and has specialized some of the
templates for generating the code. Perhaps that's part of what's going
on...

I do have UML installed, so if you export to a zip the project with your
model, I should be able to reproduce what you're seeing and determine if
there's a bug in how EOperations are handled in a multiple inheritance
scenario...

I suspect that you need to use UML's extended GenModel if you extend the
UML model. I've added the UML2 newsgroup to the "to"list of the reply
for their comments about how one should extend UML2...


Guillaume Vauvert wrote:
> Ed,
>
> Ed Merks a écrit :
>>> So :
>>> - A inherits from Action
>>> - C inherits from Class
>> Class is a bit of a confusing name.
>>> - D inherits from both A and C
>>> So simple when it is clear !
>>>
>>> The generated code :
>>> - the class DImpl extends the class AImpl : it is OK.
>>> - the class DImpl implements the interface D ; the interface D
>>> extends the interface A and the interface C.
>>> - the class DImpl inherits methods from AImpl : so it implements
>>> the interface A;
>>> - the class DImpl contains methods that are declared in the
>>> interface C ;
>>> - BUT DImpl does not contain methods that are inherited by the
>>> interface C from the interface Class.
>> Did you declare all these methods in Ecore's version of Class? I'm
>> suspicious about that name...
> I am building a Modeling Language that extends UML.
> I am using platform:/plugin/org.eclipse.uml2.uml/model/UML.core as
> model of UML.
> The metaclass Class (using ECore) declares the EOperation
> "ownedOperation".
> In the generated class DImpl, I obtain a class that should contains
> the implementation of getOwnedReception() (from the interface C).
> Instead, I have a class DImpl that lacks this method ; so, Eclipse
> Java IDE saids :
> "The type DImpl must implement the inherited abstract method
> Class.getOwnedReception(String, EList<String>, EList<Type>)"
>
>>> And do you see a solution ... ?
>> I'd suggest you provide an example model that I can use to reproduce
>> the problem. Then I can tell you if the problem is your model or in
>> the framework.
> Even if my example is exactly what I descrived before, I can provide
> it, but how (future generations of newsgroups users must be able to
> see the model !) ?
>
> I feel the light closer ...
>
> Thanks !
>
> Guillaume Vauvert
> http://www.ixmas.org
Re: The definitive truth about multiple inheritance [message #478588 is a reply to message #478583] Sat, 04 July 2009 09:10 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 26281
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040407050404070808060007
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Guillaume,

This definitely sounds UML specific. Try using the text editor to
replace this

xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"

with this

xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"

I.e., trying changing it to be the UML project's derived GenModel. That
should ensure that UML's generator specializations kick in.

Also, try avoid doing reply-all on newsgroup postings so they don't also
end up in my personal in-box. :-P


Try to avoid doing reply-all

Guillaume Vauvert wrote:
> Hello MDT/UML2 users,
>
> I had a question on model code generation, but, thanks to Ed, I now
> believe that the question is more MDT/UML2 specific.
>
> The model contains a class TempleteableActivityNode that inherits from
> both the class Templeteable and the class ActivityNode. The class
> ActivityNode contains the attribute "incoming" with multiplicty 0..* .
>
> This attribute "incoming" is implemented in ActivityNodeImpl as :
> public EList<ActivityEdge> getIncomings()
> and as :
> public ActivityEdge getIncoming(String name)
>
> In the generated model code class TempleteableActivityNode, the method
> "public EList<ActivityEdge> getIncomings()" is implemented, but not
> the method "public ActivityEdge getIncoming(String name)", what leads
> to an error :
> "The type TempleteableActivityNodeImpl must implement the inherited
> abstract method ActivityNode.getIncoming(String)"
>
> Have you an idea of where I am wrong ?
>
> Thank you ...
>
> Guillaume Vauvert
>
> Thanks you Ed for your help : you guide me to investigate more deeply
> my problem.
>
>
> Ed Merks a
Re: The definitive truth about multiple inheritance [message #478589 is a reply to message #478583] Sat, 04 July 2009 10:38 Go to previous message
Eclipse UserFriend
Originally posted by: gvauvert.gmail.com

Hello MDT/UML2 users,

I had a question on model code generation, but, thanks to Ed, I now
believe that the question is more MDT/UML2 specific.

The model contains a class TempleteableActivityNode that inherits from
both the class Templeteable and the class ActivityNode. The class
ActivityNode contains the attribute "incoming" with multiplicty 0..* .

This attribute "incoming" is implemented in ActivityNodeImpl as :
public EList<ActivityEdge> getIncomings()
and as :
public ActivityEdge getIncoming(String name)

In the generated model code class TempleteableActivityNode, the method
"public EList<ActivityEdge> getIncomings()" is implemented, but not the
method "public ActivityEdge getIncoming(String name)", what leads to an
error :
"The type TempleteableActivityNodeImpl must implement the inherited
abstract method ActivityNode.getIncoming(String)"

Have you an idea of where I am wrong ?

Thank you ...

Guillaume Vauvert

Thanks you Ed for your help : you guide me to investigate more deeply
my problem.


Ed Merks a écrit :
> Guillaume,
>
> The UML project has an extended GenModel and has specialized some of
the templates for generating the code. Perhaps that's part of what's
going on...
> I do have UML installed, so if you export to a zip the project with
your model, I should be able to reproduce what you're seeing and
determine if there's a bug in how EOperations are handled in a multiple
inheritance scenario...
>
> I suspect that you need to use UML's extended GenModel if you extend
the UML model. I've added the UML2 newsgroup to the "to"list of the
reply for their comments about how one should extend UML2...
>
>
> Guillaume Vauvert wrote:
>> Ed,
>>
>> Ed Merks a écrit :
>>>> So :
>>>> - A inherits from Action
>>>> - C inherits from Class
>>> Class is a bit of a confusing name.
>>>> - D inherits from both A and C
>>>> So simple when it is clear !
>>>>
>>>> The generated code :
>>>> - the class DImpl extends the class AImpl : it is OK.
>>>> - the class DImpl implements the interface D ; the interface D
extends the interface A and the interface C.
>>>> - the class DImpl inherits methods from AImpl : so it
implements the interface A;
>>>> - the class DImpl contains methods that are declared in the
interface C ;
>>>> - BUT DImpl does not contain methods that are inherited by the
interface C from the interface Class.
>>> Did you declare all these methods in Ecore's version of Class? I'm
suspicious about that name...
>> I am building a Modeling Language that extends UML.
>> I am using platform:/plugin/org.eclipse.uml2.uml/model/UML.core as
model of UML.
>> The metaclass Class (using ECore) declares the EOperation
"ownedOperation".
>> In the generated class DImpl, I obtain a class that should contains
the implementation of getOwnedReception() (from the interface C).
Instead, I have a class DImpl that lacks this method ; so, Eclipse Java
IDE saids :
>> "The type DImpl must implement the inherited abstract method
Class.getOwnedReception(String, EList<String>, EList<Type>)"
>>
>>>> And do you see a solution ... ?
>>> I'd suggest you provide an example model that I can use to
reproduce the problem. Then I can tell you if the problem is your model
or in the framework.
>> Even if my example is exactly what I descrived before, I can provide
it, but how (future generations of newsgroups users must be able to see
the model !) ?
>>
>> I feel the light closer ...
>>
>> Thanks !
>>
>> Guillaume Vauvert
>> http://www.ixmas.org
Re: The definitive truth about multiple inheritance [message #627769 is a reply to message #478583] Sat, 04 July 2009 09:10 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 26281
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040407050404070808060007
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Guillaume,

This definitely sounds UML specific. Try using the text editor to
replace this

xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"

with this

xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"

I.e., trying changing it to be the UML project's derived GenModel. That
should ensure that UML's generator specializations kick in.

Also, try avoid doing reply-all on newsgroup postings so they don't also
end up in my personal in-box. :-P


Try to avoid doing reply-all

Guillaume Vauvert wrote:
> Hello MDT/UML2 users,
>
> I had a question on model code generation, but, thanks to Ed, I now
> believe that the question is more MDT/UML2 specific.
>
> The model contains a class TempleteableActivityNode that inherits from
> both the class Templeteable and the class ActivityNode. The class
> ActivityNode contains the attribute "incoming" with multiplicty 0..* .
>
> This attribute "incoming" is implemented in ActivityNodeImpl as :
> public EList<ActivityEdge> getIncomings()
> and as :
> public ActivityEdge getIncoming(String name)
>
> In the generated model code class TempleteableActivityNode, the method
> "public EList<ActivityEdge> getIncomings()" is implemented, but not
> the method "public ActivityEdge getIncoming(String name)", what leads
> to an error :
> "The type TempleteableActivityNodeImpl must implement the inherited
> abstract method ActivityNode.getIncoming(String)"
>
> Have you an idea of where I am wrong ?
>
> Thank you ...
>
> Guillaume Vauvert
>
> Thanks you Ed for your help : you guide me to investigate more deeply
> my problem.
>
>
> Ed Merks a
Re: The definitive truth about multiple inheritance [message #627770 is a reply to message #478583] Sat, 04 July 2009 10:38 Go to previous message
Eclipse UserFriend
Originally posted by: gvauvert.gmail.com

Hello MDT/UML2 users,

I had a question on model code generation, but, thanks to Ed, I now
believe that the question is more MDT/UML2 specific.

The model contains a class TempleteableActivityNode that inherits from
both the class Templeteable and the class ActivityNode. The class
ActivityNode contains the attribute "incoming" with multiplicty 0..* .

This attribute "incoming" is implemented in ActivityNodeImpl as :
public EList<ActivityEdge> getIncomings()
and as :
public ActivityEdge getIncoming(String name)

In the generated model code class TempleteableActivityNode, the method
"public EList<ActivityEdge> getIncomings()" is implemented, but not the
method "public ActivityEdge getIncoming(String name)", what leads to an
error :
"The type TempleteableActivityNodeImpl must implement the inherited
abstract method ActivityNode.getIncoming(String)"

Have you an idea of where I am wrong ?

Thank you ...

Guillaume Vauvert

Thanks you Ed for your help : you guide me to investigate more deeply
my problem.


Ed Merks a écrit :
> Guillaume,
>
> The UML project has an extended GenModel and has specialized some of
the templates for generating the code. Perhaps that's part of what's
going on...
> I do have UML installed, so if you export to a zip the project with
your model, I should be able to reproduce what you're seeing and
determine if there's a bug in how EOperations are handled in a multiple
inheritance scenario...
>
> I suspect that you need to use UML's extended GenModel if you extend
the UML model. I've added the UML2 newsgroup to the "to"list of the
reply for their comments about how one should extend UML2...
>
>
> Guillaume Vauvert wrote:
>> Ed,
>>
>> Ed Merks a écrit :
>>>> So :
>>>> - A inherits from Action
>>>> - C inherits from Class
>>> Class is a bit of a confusing name.
>>>> - D inherits from both A and C
>>>> So simple when it is clear !
>>>>
>>>> The generated code :
>>>> - the class DImpl extends the class AImpl : it is OK.
>>>> - the class DImpl implements the interface D ; the interface D
extends the interface A and the interface C.
>>>> - the class DImpl inherits methods from AImpl : so it
implements the interface A;
>>>> - the class DImpl contains methods that are declared in the
interface C ;
>>>> - BUT DImpl does not contain methods that are inherited by the
interface C from the interface Class.
>>> Did you declare all these methods in Ecore's version of Class? I'm
suspicious about that name...
>> I am building a Modeling Language that extends UML.
>> I am using platform:/plugin/org.eclipse.uml2.uml/model/UML.core as
model of UML.
>> The metaclass Class (using ECore) declares the EOperation
"ownedOperation".
>> In the generated class DImpl, I obtain a class that should contains
the implementation of getOwnedReception() (from the interface C).
Instead, I have a class DImpl that lacks this method ; so, Eclipse Java
IDE saids :
>> "The type DImpl must implement the inherited abstract method
Class.getOwnedReception(String, EList<String>, EList<Type>)"
>>
>>>> And do you see a solution ... ?
>>> I'd suggest you provide an example model that I can use to
reproduce the problem. Then I can tell you if the problem is your model
or in the framework.
>> Even if my example is exactly what I descrived before, I can provide
it, but how (future generations of newsgroups users must be able to see
the model !) ?
>>
>> I feel the light closer ...
>>
>> Thanks !
>>
>> Guillaume Vauvert
>> http://www.ixmas.org
Previous Topic:No notification from classifier when package changes
Next Topic:Best way to create an uml-approximated metamodel
Goto Forum:
  


Current Time: Thu Dec 18 20:20:14 GMT 2014

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

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