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

Langage Java Discussion :

[Language]Gestion de plugins


Sujet :

Langage Java

  1. #1
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut [Language]Gestion de plugins
    Bonsoir !

    Voila j'ai une appli qui dispose de plusieurs services proposées à l'utilisateur. J'aimerai pouvoir déposer de nouvelles classes (apportant d'autres services) sans avoir à modifier le code de mon appli.
    Si c'est possible comment puis-je recenser ces nouveaux plugins ? Ils apparaitraient alors dans un menu, comment leur associer des actions dynamiquement ?
    J'ai compris le système de la réflexivité, je pense que c'est une piste mais je bloque un peu...

    Merci d'avance !
    +++
    Ju

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Tu peux tout simplement utiliser l'API de reflection (voir la classe java.lang.Class et le package java.lang.reflect) pour tester l'existance d'une classe de ton plugin.

    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
     
    public class PluginAction extends AbstractAction {
     private Class targetClass;
     private Object instance = null;
     
     /**Creates a new instance.
      * @param classname The name of the target class.
      * @exception ClassNotFoundException Plugin is not installed.
      * @excepion Exception other errors.
      */
     public PluginAction(String classname) throw ClassNotFoundException, Exception {
       targetClass = Class.forName(classname);
     }
     
     /** @inheritDoc
     */
     @Override public void actionPerformed(ActionEvent event) {
       try { 
         // See reflection API for more detaisl.
         // Gets a constructor with no-arguments.
         Constructor constructor = targetClass.getConstructor(); 
         // If Java <= 1.4
         //Constructor constructor = targetClass.getConstructor(null); 
         // Create an instance.
         instance = constructor.newInstance();
         // If Java <= 1.4
         // instance = constructor.newInstance(null);
         // Maybe intanciation is not enough and we want to call a method (with no arguments in this case) if needed.
         Method aMethod = targetClass.getMethode("myMethod");
         // If Java <= 1.4
         //Method aMethod = targetClass.getMethode("myMethod", null);
         // Same as instance.myMethod()
         Object result = aMethod.invoke(instance);
         // If Java <= 1.4
         //Object result = aMethod.invoke(instance, null);
       }
       // Handle error here; eg: show a dialog box to the user.
       catch (Exception e) {
         ...
       }
     }
    }
     
     
    String[] pluginList = {"myPlugin.PluginClassToExecute"};
    java.util.List<Action> pluginActionList = new LinkedList();
    for (String pluginClassName : pluginList) {
      try {
        Action pluginAction = new PluginAction(pluginClassName);
        pluginActionList.add(pluginAction);
      }
      // No such plugin.
      catch (ClassNotFoundException) {
        // log that or show error to user.
      }
      // Other errors.
      catch (Exception e) {
      }
    }
    if (pluginList.size() > 0) {
      JMenu pluginMenu = new JMenu("Plugin");
      for (Action pluginAction : pluginActionList) {
        pluginMenu.add(pluginAction);
      }
      menuBar.add(pluginMenu);
    }
    // Same for toolbars and popup if any...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Ok je vais me lancer là dessus...
    Merki pourt ton aide !
    +++
    Ju

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

Discussions similaires

  1. [VB.Net] - Gestion de plugin (Assembly, Appdomain)
    Par olixelle dans le forum VB.NET
    Réponses: 5
    Dernier message: 06/11/2006, 09h01
  2. [RCP] Gestion des plugins.
    Par lachesis dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 22/04/2006, 15h19
  3. [Package] Gestion de plugin
    Par Rayek dans le forum Langage
    Réponses: 5
    Dernier message: 07/01/2006, 00h21
  4. [Conception] Gestion de "plugins"
    Par Tentative dans le forum Général Java
    Réponses: 4
    Dernier message: 06/01/2006, 19h55
  5. ecrire une gestion de plugin ou greffon
    Par gegeambro dans le forum C++
    Réponses: 3
    Dernier message: 13/09/2005, 11h04

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