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 :

Développer Plugin & Propriété d'un projet


Sujet :

Eclipse Java

  1. #1
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut Développer Plugin & Propriété d'un projet
    Bonjour,
    je souhaite développer un plugin eclipse pour la génération de code. J'ai pas mal regardé les sources des plugins existants dont le célebre Tomcat Sysdeo.
    Je voudrais enregistrer les propriétés d'un projet Eclipse (qui aurra la nature de mon plugin eclipse) dans un fichier XML. Dans Tomcat Sysdeo par exemple, il stocke les informations du projet dans .tomcatplugin.

    Mon problème c'est que apperement, à chaque fois qu'une action du plugin est éxecuté, le rechargement de ce fichier s'effectue, pour récupérer une information de ce fichier. Dans Tomcat Sysdeo, par exemple, il gère ce fichier de configuration dans la classe TomcatProject, qui est ré-instancié à chaque action. Cette classe est associé au projet Eclipse en cours (IProject). Ma question est : comment éviter d'instancier cet objet à chaque action? En effet, dans mon cas, ce fichier de configuration peut être beaucoup plus conséquent, car il stockera les paramètres de mes templates.

    Je pensais mettre une HashMap, dans ma classe Plugin (qui etend AbstractUIPlugin), avec comme clé le nom du projet, et comme valeur cette instance de projet, pour éviter ce problème de ré-instanciation. Mais je n'ai jamais vu d'exemples de Plugin qui utilise cette technique. Je ne sais pas si cela va me poser des problèmes?

    Je vous remercie de vos réponse.
    Angelo

  2. #2
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Bonjour,
    je ne sais pas si ca interesse quelqu'un, mais j'ai enfin reussi a trouver comment on peux stocker son propre objet Project en Eclipse, pour le charger qu'une seule fois.

    Il faut utiliser les methodes getSessionproperty et setSessionProperty sur l'instance IProject du plugin. Ceci permet d'eviter de lire a chaque fois son fichier de metadonnees a chaque fois que l'on souhaite acceder a une proprietes.

    Voici mon code :

    public static final QualifiedName SESSION_PROPERTY_AKROGEN_PROJECT =
    new QualifiedName(AkrogenPlugin.PLUGIN_ID + ".sessionprops", "akrogenProject");

    /**
    * Get Akrogen project by using metdata file .akrogen
    * @param project
    * @return AkrogenProject
    */
    public static AkrogenProject getAkrogenProject(IProject project) {
    AkrogenProject akrogenProject = null;
    if (project != null) {
    try {
    // Test if Akrogen project is already loaded ?
    akrogenProject = (AkrogenProject)project.getSessionProperty(SESSION_PROPERTY_AKROGEN_PROJECT);
    if (akrogenProject == null) {
    // Akrogen project must be loaded by using .akrogen file.
    akrogenProject = AkrogenProject.create(project);
    // store instance into session
    project.setSessionProperty(SESSION_PROPERTY_AKROGEN_PROJECT, akrogenProject);
    }
    }
    catch(CoreException e) {
    logException("error while get Akrogen Project into getSessionProperty" , e);
    }
    }
    return akrogenProject;
    }

    Angelo

  3. #3
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Merci, ca pet toujours servir

    Par contre, ce serait plus sympa en utilisant la balise code !!!

  4. #4
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Oui tu as raison MarneusCalgarXP, voici le code bien formatte :

    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
    public static final QualifiedName SESSION_PROPERTY_AKROGEN_PROJECT = 
    	new QualifiedName(AkrogenPlugin.PLUGIN_ID + ".sessionprops", "akrogenProject");
     
    /**
    * Get Akrogen project by using metdata file .akrogen
    * @param project
    * @return AkrogenProject
    */
    public static AkrogenProject getAkrogenProject(IProject project) {
    	AkrogenProject akrogenProject = null;
    	if (project != null) {
    		try {
    			// Test if Akrogen project is already loaded ?
    			akrogenProject = (AkrogenProject)project.getSessionProperty(SESSION_PROPERTY_AKROGEN_PROJECT);
    			if (akrogenProject == null) {
    				// Akrogen project must be loaded by using .akrogen file.
    				akrogenProject = AkrogenProject.create(project);
    				// store instance into session
    				project.setSessionProperty(SESSION_PROPERTY_AKROGEN_PROJECT, akrogenProject);
    			}
    		}
    		catch(CoreException e) {
    			logException("error while get Akrogen Project into getSessionProperty" , e);
    		}
    	}
    	return akrogenProject;
    }

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/08/2012, 13h07
  2. développement de site : propriété intellectuelle
    Par rahan15 dans le forum Droit
    Réponses: 15
    Dernier message: 04/06/2008, 13h39
  3. [PDE]développement plugin
    Par fraoustin dans le forum Eclipse Platform
    Réponses: 10
    Dernier message: 05/06/2007, 22h13
  4. [M2]Recherche plugin d'activité sur un projet ?
    Par elitost dans le forum Maven
    Réponses: 12
    Dernier message: 12/07/2006, 14h39
  5. [plugin] Reverse Engineering sur mon projet
    Par Tourix dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 03/07/2006, 13h57

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