[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.tools.emf] Re: The definitive truth about multiple inheritance

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 é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