IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 Java Discussion :

Problème EMF Stéréotype


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Octobre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 54
    Par défaut Problème EMF Stéréotype
    Bonjour,

    J'essaye de générer un modèle UML avec la librairie UML2 d'Eclipse.
    Seulement quand je veux appliquer un stéréotype sur une classe, il lève une erreur :
    Exception in thread "main" java.lang.IllegalArgumentException: org.eclipse.uml2.uml.internal.impl.StereotypeImpl@210b5b (name: type, visibility: <unset>) (isLeaf: false, isAbstract: false) (isActive: false)
    at org.eclipse.uml2.uml.internal.operations.ElementOperations.applyStereotype(ElementOperations.java:1410)
    at org.eclipse.uml2.uml.internal.impl.ElementImpl.applyStereotype(ElementImpl.java:501)
    at TestUML.create(TestUML.java:104)
    at TestUML.main(TestUML.java:178)
    Pourtant j'ai créé un profil, il s'applique bien à mon modèle (si je sauvegarde sans appliquer le stéréotype, je vois bien le profile dans le fichier uml généré), donc là je suis un peu perdu et mes recherches ne m'ont pas aidé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    ResourceSet metaResourceSet = new ResourceSetImpl();
     
            metaResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
                    .put("uml", new UMLResourceFactoryImpl());
     
            Resource metaResource = metaResourceSet.createResource(URI.createURI("./bookUML.uml"));
     
            Model model = UMLFactory.eINSTANCE.createModel();
            String name = "test";
            model.setName(name);
            String packageName = "library";
            org.eclipse.uml2.uml.Package package_ = model.createNestedPackage(packageName);
     
     
            Profile profile = UMLFactory.eINSTANCE.createProfile();
            profile.setName("profile");
            System.out.println("Profile '" + profile.getQualifiedName() + "' created.");
            Stereotype stereotype = profile.createOwnedStereotype("type", false);
            System.out.println("Stereotype '" + stereotype.getQualifiedName() + "' created.");       
     
     
            org.eclipse.uml2.uml.Class class_ = package_.createOwnedClass(name,    false);
     
            PrimitiveType primitiveType = (PrimitiveType) package_.createOwnedPrimitiveType(name);
            Property attribute = class_.createOwnedAttribute("book", primitiveType,    0, 1);
            Property attribute2 = class_.createOwnedAttribute("movie",    primitiveType, 0, 1);
     
            metaResource.getContents().add(model);
            metaResource.getContents().add(profile);
     
            profile.define();
     
            model.applyProfile(profile);
            class_.applyStereotype(stereotype);
     
            try {
                if(metaResource == null)
                    System.out.println("pas de resource");
                metaResource.save(null);
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
    Est-ce qu'il y a quelque chose que je fais mal, ou ai-je juste oublié quelque chose ?

    Merki d'avance pour toute aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Dev
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut Erreur
    il faut que tu crée un extension sur ton stéréotype .
    ( pour dire sur quoi tu peut appliquer ton stereotype)

    avec la méthode : stereotype.createExtension


    http://www.eclipse.org/modeling/mdt/...s/article.html

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Octobre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 54
    Par défaut
    J'ai essayé mais maintenant c'est le createExtension qui lève une erreur

    Exception in thread "main" java.lang.IllegalArgumentException: org.eclipse.uml2.uml.internal.impl.ClassImpl@170888e (name: Type, visibility: <unset>) (isLeaf: false, isAbstract: true) (isActive: false)
    at org.eclipse.uml2.uml.internal.operations.StereotypeOperations.createExtension(StereotypeOperations.java:174)
    at org.eclipse.uml2.uml.internal.impl.StereotypeImpl.createExtension(StereotypeImpl.java:165)
    at TestUML.create(TestUML.java:84)
    at TestUML.main(TestUML.java:213)
    Pour faire le createExtension, il faut créer une metaclasse, ce que j'ai fait, j'ai donc le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    ResourceSet metaResourceSet = new ResourceSetImpl();
    metaResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
                    .put("uml", new UMLResourceFactoryImpl());
     
    Resource metaResource = metaResourceSet.createResource(URI.createURI("./bookUML.uml"));
     
    Model model = UMLFactory.eINSTANCE.createModel();
    String name = "test";
    model.setName(name);
    String packageName = "library";
    org.eclipse.uml2.uml.Package package_ = model.createNestedPackage(packageName);
     
     
    Profile profile = UMLFactory.eINSTANCE.createProfile();
    profile.setName("profile");
    System.out.println("Profile '" + profile.getQualifiedName() + "' created.");
     
    Stereotype stereotype = profile.createOwnedStereotype("type");
    Stereotype stereotype2 = profile.createOwnedStereotype("type2");
     
    org.eclipse.uml2.uml.Class metaclass = package_.createOwnedClass("Type", true);
    org.eclipse.uml2.uml.Class metaclass2 = package_.createOwnedClass("Type2", true);
    profile.createMetaclassReference(metaclass);
    profile.createMetaclassReference(metaclass2);
     
    List list = profile.getMetaclassReferences();
    for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            ElementImport object = (ElementImport)iterator.next();
            System.out.println("Stereotype : " + object.getName());
    }
     
    Extension extension = stereotype.createExtension(metaclass, Boolean.TRUE);
    Extension extension2 = stereotype2.createExtension(metaclass2, true);
     
     
    System.out.println("Stereotype '" + stereotype.getQualifiedName() + "' created.");       
    System.out.println("Stereotype '" + profile.getOwnedStereotype("type").getQualifiedName() + "' created.");
     
     
    org.eclipse.uml2.uml.Class class_ = package_.createOwnedClass("Conteneur", false);
     
    PrimitiveType primitiveType = (PrimitiveType) package_.createOwnedPrimitiveType("primitiveType");
    Property attribute = class_.createOwnedAttribute("book", primitiveType,    0, 1);
    Property attribute2 = class_.createOwnedAttribute("movie",    primitiveType, 0, 1);
     
     
    metaResource.getContents().add(profile);
    metaResource.getContents().add(model);
     
    profile.define();
     
    list = profile.getApplicableStereotypes();
    for (Iterator iterator = list.iterator(); iterator.hasNext();) {
          Stereotype object = (Stereotype)iterator.next();
          System.out.println("Stereotype : " + object.getName());
    }
     
     
    model.applyProfile(profile);
    System.out.println("Model.isStereotypeApplicable : " +  model.isStereotypeApplicable(stereotype2));
    System.out.println("Class_.isStereotypeApplicable : " + class_.isStereotypeApplicable(stereotype2));
    class_.applyStereotype(stereotype);
    //attribute.applyStereotype(stereotype);
     
     
    try {
    if(metaResource == null)
        System.out.println("pas de resource");
        metaResource.save(null);
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
    Donc là pareil, je ne vois pas trop d'où vient l'erreur ?

Discussions similaires

  1. [EMF] Problème pour appliquer un stéréotype
    Par Neoam dans le forum Eclipse
    Réponses: 1
    Dernier message: 30/07/2010, 16h51
  2. problème avec plugin EMF
    Par Jean-Claude Dusse dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 29/05/2008, 13h25
  3. Réponses: 2
    Dernier message: 19/03/2008, 12h58
  4. Problème stéréotypes de classe
    Par MENIER dans le forum BOUML
    Réponses: 4
    Dernier message: 26/02/2008, 19h28
  5. [ EMF ] problème Projet EMF
    Par zsoh dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 11/08/2005, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo