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 Platform Discussion :

Problème lors de la récupération des valeurs à partir du modèle EMF


Sujet :

Eclipse Platform

  1. #1
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut Problème lors de la récupération des valeurs à partir du modèle EMF
    Bonjour à tous,

    Je fais face à un problème qui m'oblige de croiser les bras, et c'est la raison pour laquelle je sollicite votre aide.
    Je travaille sur la génération de code pour les SoC, pour celà j'utilise [XSD]+[EMF]+[Mon générateur que je crée moi même].
    Lorsque je défini mon modèle tout semble marche bien, mais quand j'essaye de récupérer les valeurs là où je vois des valeurs nulles qui partent dans tous les sens
    J'ai essayé de déboguer pour voir d'où vient ce bug, mais j'arrive pas à me faire convaincre.
    Bref Quand j'ai débogué au niveau de l'instruction permettant de récupérer la resource tout au début du programme, j'ai bien vu que la valeur est nulle lors de la récupération du modèle, sachant que dans mon modèle je défini bien la valeur.
    Ci-joint deux pièces, la première montre le bloque du modèle en question et la deuxième montre la trace du débogage qui commence de la racine et fini là où j'ai la valeur nulle.
    Je comprends que ce n'est pas facile de résoudre ce genre de questions sur des forums, mais j'aimerai bien avoir que des idées permettant de me remettre sur le bon chemin.
    Je suis preneur de toutes idées.

    Merci d'avance.

  2. #2
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut
    Bonjour,
    Voici un bout de code, j'espère que ça pourra être utile pour éclaircir ce qui ne va pas.
    La première fonction retourne la resource (modèle)
    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
     
    private static Resource settingResource(){
    	//Input StarSoC resource.
    	JFrame frame = new JFrame();
    	JFileChooser fileChooser = new JFileChooser();
    	fileChooser.setDialogTitle("Select starsoc file");
    	if(fileChooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION){
    		path = fileChooser.getSelectedFile().getAbsolutePath();
    		parentDirectory = fileChooser.getSelectedFile().getParent();
    		nameFile = fileChooser.getSelectedFile().getAbsoluteFile().getName();			
    	}	
    	//Create a resource set to hold the resources.
    	ResourceSet myResource = new ResourceSetImpl();
    	//Register the appropriate resource factory to handle all file   
    extensions.myResource.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
    	//Register the package to ensure it is available during loading.
    	myResource.getPackageRegistry().put(myPackage.eNS_URI, myPackage.eINSTANCE);
    	//Get the URI of the model
    	URI myUri = URI.createFileURI(path); 
    	//Load resource for this file.
    	Resource inputResource = myResource.getResource(myUri, true);
    	return inputResource;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    La deuxième fonction permet de retourner la racine de la ressource.
    private Application retrunApplication(Resource p_inputResource) {
    	Application rootApplication = (Application) EcoreUtil.getObjectByType(p_inputResource.getContents(), myPackage.eINSTANCE.getApplication());		
    	return rootApplication;		
    }
    Ci-joint une partie du métamodèle de l'application. En fait à partir de la racine qui Application je récupère les Type les Modules les interfaces et les ports.
    Le problème réside au niveau de la récupération du DataType à partir du Port, c'est là où j'obtiens la valeur nulle

    j'ai vraiment besoin de votre aide pour que je puisse continuer.

    Merci d'avance.

  3. #3
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut
    Je fais une auto-réponse.

    Le problème c'est au niveau de cette instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extensions.myResource.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl())
    En fait moi jai utilisé une factory de type XMI XMIResourceFactoryImpl, or moi je donne au générateur de l'XML à consommer et du coup les références de type containement, EMF les récupère bien, mais les référence non-containement sont gérées différement en XMI.

    et donc il fallait utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extensions.myResource.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new MyResourceFactoryImpl())
    la Factory ce trouve dans le paquage x.y.z.util dans le modèle généré par EMF.
    Voilà voilà ça pourra bien aider les autres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probléme lors de l'extraction des valeurs d'un élément
    Par Sweet_Pro dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 27/06/2012, 17h15
  2. problème lors de la récupération des champs null
    Par nadhir84 dans le forum Oracle
    Réponses: 2
    Dernier message: 19/08/2011, 14h20
  3. Problème lors de la récupération des champs null
    Par nadhir84 dans le forum Hibernate
    Réponses: 2
    Dernier message: 17/08/2011, 17h27
  4. Problème lors de la récupération des données
    Par hanadi. dans le forum Administration
    Réponses: 1
    Dernier message: 18/01/2010, 09h50
  5. [MySQL] problème lors de la récupération des données à modifier mysql
    Par brajae85 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/05/2008, 01h36

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