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 avec les ID de nature (org.eclipse.core.resources.IProjectNature)


Sujet :

Eclipse Platform

  1. #1
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut Problème avec les ID de nature (org.eclipse.core.resources.IProjectNature)
    Salut,

    D'après la documentation, je cite :
    NOTE: The nature id is the fully qualified id of the nature extension. The fully qualified id of an extension is created by combining the plug-in id with the simple extension id in the plugin.xml file. For example, a nature with simple extension id "mynature" in the plug-in "com.example.natures" would have the name "com.example.natures.mynature"

    The natures are not actually assigned to (and configured) for the project until you set the project description into the project. Also note that the identifier used for the nature is the fully qualified name (plug-in id + extension id) of the nature extension.
    J'ai pu vérifier en effet que dans les implémentations de nature de plugin standard, comme par exemple org.eclipse.wst.common.project.facet.core.internal.FacetedProjectNature que c'est bien le cas.

    J'ai donc implémenté mon installation de nature en suivant cette préconisation :

    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
    final IProjectDescription description = project.getDescription();
    	    final String[] natures = description.getNatureIds();
    	    final String[] newNatures = new String[natures.length + 1];
    	    System.arraycopy(natures, 0, newNatures, 0, natures.length);
    	    newNatures[natures.length] = WxmNature.NATURE_FULL_ID;
    	    IStatus status = project.getWorkspace().validateNatureSet(newNatures);
     
    	    if ( status.getCode()==IStatus.OK ) {
     
    		    description.setNatureIds(newNatures);
    		    project.setDescription(description, monitor); 
     
    	    }
    	    else {
    	    	throw new CoreException(status);
    	    }
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class WxmNature implements IProjectNature {
     
    	public static final String NATURE_ID = "fr.wedia.wxm.nature"; //$NON-NLS-1$
     
    	public static final String NATURE_FULL_ID = WxmDevToolsActivator.PLUGIN_ID + "." + NATURE_ID; //$NON-NLS-1$
     
            /* ... */
    "fr.wedia.wxm.nature" étant bien l'ID configuré dans l'extension.

    Mais le validateNatureSet() soulève une exception qui dit que ma nature n'existe pas. Or, en debug, si je regarde la map des natures, je vois ma nature mappée sur l'id : fr.wedia.wxm.nature.

    En modifiant mon code, de manière à utiliser NATURE_ID au lieu de NATURE_FULL_ID, l'installation de la nature passe sans exception. Et là je ne comprends pas pourquoi c'est en suivant pas la document et en ne faisant pas comme les implémentation des plugins standard (j'ai vérifier JavaCore.NATURE_ID également). Est-ce parce que mon id de nature n'est pas un id "simple" ? Est-ce qu'il y a une autre documentation qui présente le sujet de manière plus complète que j'aurais loupée ?
    Est-ce que cela ne risque pas de me poser de problème plus tard : je comprends bien l'intérêt de rendre unique l'id de nature en le préfixant avec l'id de plugin. Du coup, ce n'est pas le cas de ma nature. Si j'ai fait comme ça, c'est parce que mon plugin est prévu pour gérer différents outils pour différents types de projet, ayant une nature différente. Je ne voyais pas pertinent de faire précéder mes ids de nature par l'id de plugin, et que du coup, je suis plutôt content de n'avoir pas le faire, mais j'aimerais avoir l'assurance que je peux vraiment faire comme çà.

    Merci par avance de vos avis.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je pense que toute la subtilité de l'omission de cette précision est dans cette partie "he plug-in id with the simple extension id". En effet, à d'autres endroits de la documentation et du code, on peut voir la distinction entre "id" et "simple id", "simple id" étant la dernière partie sans point de l'id complet, qui contient des points. La documentation est donc simplement incomplète en n'invoquant la notion de "simple id", en omettant de préciser que si l'id n'est pas simple (donc contient des points), il est inutile de le préfixer de l'id du plugin. En effet, tous les ids de nature des plugins WTP sont sans point. C'est la seule interprétation que je peux envisager.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Ajouter "org.eclipse.core.resources.natures" comme extension
    Par fzh2014 dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 23/07/2012, 15h09
  2. [RCP] Renommer un org.eclipse.core.resources.IFile
    Par deathness dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 23/11/2011, 13h26
  3. eclipse ne trouve pas org.eclipse.core.resources.IResource
    Par elekis dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/06/2008, 19h46
  4. ResourcesPlugin - org.eclipse.core.resources introuvable!
    Par gargantua dans le forum Eclipse Platform
    Réponses: 9
    Dernier message: 20/06/2007, 10h29
  5. Problème avec les servlets sous eclipse
    Par supertoms dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 03/03/2007, 19h07

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