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
|