Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Modeling Discussion :

Comment surcharger proprement le code généré ?


Sujet :

Eclipse Modeling

  1. #1
    Membre confirmé
    Comment surcharger proprement le code généré ?
    Bonjour,

    Cette discussion est ouverte pour recueillir les commentaires de l'article suivant :

    Surcharger proprement du code EMF généré

    Toute remarque est bienvenue.

    Olivier

  2. #2
    Membre averti
    Bonjour Olivier,

    Est-ce que ça gère les chaines d'héritage?

    Typiquement, si on a "Développeur" qui hérite de "Personne" et que je customise le code de la méthode "getAdresse()" de "Personne" en utilisant la classe générée dans le code src, est-ce que lorsque que j'appelerai "monDev.getAdresse()", j'appelerai bien mon code surchargé?

    Le factory_override ne fonctionne que pour les classes feuilles, il faut faire attention...

    Ici on utilise EGF (EMF generation factories) pour modifier les templates Jet servant à la génération EMF, c'est une autre façon de faire...

    Cordialement,

  3. #3
    Rédacteur/Modérateur

    Bonsoir,

    Je me permets de répondre pour Olivier: le plugin ne gère pour l'instant pas la surcharge quand on a des chaines d'héritage comme ce que tu décris. Il y a une issue d'ailleurs ouverte sur le sujet sur le github du projet :
    https://github.com/opcoach/genModelAddon/issues/13
    Si tu as une idée de comment la résoudre on prend volontiers

    Alain
    Pas de messages techniques par MP, les forums sont là pour ça.
    Rédacteur d'articles sur la plateforme Eclipse

    N'oubliez pas de consulter les FAQ Eclipse et les cours et tutoriels Eclipse

  4. #4
    Membre averti
    Bonjour Alain,

    La solution est simple!

    Il suffit de modifier la chaine d'héritage existante:
    Person<-PersonImpl<-OverridenPersonImpl
    Person<-{Developper,PersonImpl}<-DevelopperImpl<-OverridenDevelopperImpl

    Par celle-ci:
    Person<-PersonImpl<-OverridenPersonImpl
    Person<-{Developper,OverridenPersonImpl}<-DevelopperImpl<-OverridenDevelopperImpl

    Ca force à mettre le code généré et le code de surcharge dans le même plugin, mais ça fonctionne!
    Il n'y à plus qu'à modifier les patterns JET de génération EMF pour prendre en compte cette modification comme explicité dans la 'Bible' EMF:http://www.informit.com/store/emf-ec...-9780321331885

    Cordialement,

###raw>template_hook.ano_emploi###