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 :

Créer plusieurs fragments pour un même plugin ?


Sujet :

Eclipse Platform

  1. #1
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut Créer plusieurs fragments pour un même plugin ?
    Bonjour,

    j'ai créé un fragment de plugin pour un plugin qui possédait déjà un fragment.

    Dans le fragment que j'ai créé, je veux créer un répertoire "bin", pour mettre les fichier binaire à appeler. MAIS comme dans le premier fragment qui existe déjà, un répertoire "bin" est déjà existant, alors au moment de retrouver le fichier binaire par le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     // we find the path of the executable (dll under windows.)
            Bundle bundle = MonPluginPlugin.getDefault().getBundle();
            URL propUrl = FileLocator.find(bundle, new Path("bin"), null);
            String pathlib = null;
            try {
                pathlib = FileLocator.resolve(propUrl).getFile().substring(1);
            }
            catch (IOException ioe) {
                ioe.printStackTrace();
                LOGGER.error("lib isn't found");// TODO
            }
    il y a confusion (il va chercher dans le premier fragment) entre les deux fragments et donc il ne trouve pas le binaire...
    Je suis obligé de créer un nom de répertoire différents ce qui me gène un peu .

    Y a t'il une méthode spécial pour appelé le binaire, pour spécifier dans quel fragment il va chercher ??

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Tout d'abord, j'ai une petite question : que stockes-tu exactement dans tes fragments ?
    Dans la philosophie Eclipse, les fragments servent à spécialiser un plugin (typiquement selon l'OS ou la Locale utilisée). D'où mon interrogation de trouver des binaires dedans

    Sinon, je pense qu'en remplaçant la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    URL propUrl = FileLocator.find(bundle, new Path("bin"), null);
    .. par une boucle qui testerait le résultat de cet apel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (URL url : FileLocator.findEntries(bundle, new Path("bin"), null) {
    // tester ici les retours.
    }
    .. tu pourrais t'en sortir.

  3. #3
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Tout d'abord, merci de ta réponse je vais la tester.

    En ce qui concerne ta question.

    les différents fragments sont utilisé pour différencier les binaire win32 win64 linux32 et linux64... (autant là le plugin regardait dans quel archi il était et choisissais en fonction.) Logiquement j'aurais réutilisé ces fragments déjà existant pour mettre mes binaires.

    Mais on me contraint à mettre tout cela dans un nouveau fragment. d'où ma question. A moins que je construise un nouveaux plugin (un peu comme pour l'externalisation )? quel autre choix me proposerais tu ?

    merci d'avance.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par L4BiN Voir le message
    Mais on me contraint à mettre tout cela dans un nouveau fragment. d'où ma question. A moins que je construise un nouveaux plugin (un peu comme pour l'externalisation )? quel autre choix me proposerais tu ?
    Tu fais donc des appels système directs ?
    Sans passer par les fragments déjà présents dans Eclipse ?
    Parce que , normalement, mis à part le launcher, le filesystem, le réseau et les graphiques SWT, le code devrait être le même sur ces 4 OS ...
    Est-ce parce que tu appelles des librairies "maison" ?
    Sinon, pourquoi refaire ce qu'Eclipse fait déjà très bien ?

    J'ai vraiment du mal à comprendre ton archi. Pourrais-tu me donner le nom du plugin et des fragments afin que je cerne mieux le problème ?

  5. #5
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Tu fais donc des appels système directs ?
    Sans passer par les fragments déjà présents dans Eclipse ?
    Parce que , normalement, mis à part le launcher, le filesystem, le réseau et les graphiques SWT, le code devrait être le même sur ces 4 OS ...
    Est-ce parce que tu appelles des librairies "maison" ?
    Sinon, pourquoi refaire ce qu'Eclipse fait déjà très bien ?
    Je fais des appels à une dll faite maison. Et ces dll seront différentes entre les différents OS, (déja parce sous linux ce sera des .so). Les plugins sont aussi des plugins fait maison.

    En gros j'ai un plugin :A: qui fait le travail principal, j'ai des fragments :A.win32: :A.win64: A.linux32 et A.linux64 pour les différentes versions d'OS + un plugin A.nl pour l'externalisation. Hors j'ai des nouveaux binaire a mettre, mais on ne veux pas que je les mettent dans A.winXX mais dans un B.winXX.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par L4BiN Voir le message
    En gros j'ai un plugin :A: qui fait le travail principal, j'ai des fragments :A.win32: :A.win64: A.linux32 et A.linux64 pour les différentes versions d'OS + un plugin A.nl pour l'externalisation. Hors j'ai des nouveaux binaire a mettre, mais on ne veux pas que je les mettent dans A.winXX mais dans un B.winXX.
    C'est là que l'architecture Rcp est un peu bousculée.
    Normalement, le plulgin A peut avoir des fragments A.winXX et A.linuxXX mais pas B.winXX ou B.linuxXX.
    Normalement, si tu dois créer un fragment B.winXX ou B.linuxXX, c'est pour le plugin B.
    Je pense qu'aller à l'encontre de cette règle risque de compromettre la robustesse de ton Appli à terme.

    Les solutions pour respecter l'archi RCP sont 2 :
    1. En respectant la philosophie Eclipse : se servir des versions de plugins et fragments pour refléter l'évolution de l'appli.
      Ancienne version : plugin A_1.0.0 et fragments A_win32_1.0.0, A_win64_1.0.0, A_linux32_1.0.0 et A_linux64_1.0.0.
      Nouvelle version plugin A_1.1.0 et fragments A_win32_1.1.0, A_win64_1.1.0, A_linux32_1.1.0 et A_linux64_1.1.0.
      Un outil type SVN ou CVS permettant alors de récupérer les anciennes versions en cas de régression. L'attribut "bundle-version" de la clé "Require-Bundle" du Manifest de tes plugins permettant d'aller attaquer l'un ou l'autre des versions.
    2. En bousculant un peu celle-ci : Si vraiment ta hierarchie ne veut pas que tu touches aux anciens fragments et que tu doives créer des fragments B.xxx, la solution est alors de créer un plugin B dont dépendent ces fragments même si ce plugin ne contient aucun code. A ce moment là, l'ancienne version de ton appli dépend du plugin A et de ses fragments, la nouvelle version dépend de B et de ses fragments.

  7. #7
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Bonjour,

    merci pour tes réponses, je me disait bien que ce n'etait pas clean de faire comme ca. j v essayer de les convaincres de modifier l'existant.

    Merci encore

  8. #8
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    finalement ce sera un nouveaux plugin B avec les sources que j'ai developper, puis les plugins B.winXX pour les fragments. Ainsi je respecte le protocole...

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

Discussions similaires

  1. Plusieurs entités pour une même relation
    Par Mandotnet dans le forum Schéma
    Réponses: 1
    Dernier message: 08/04/2007, 19h13
  2. Plusieurs destinations pour un même formulaire
    Par dessinateurttuyen dans le forum Langage
    Réponses: 14
    Dernier message: 01/08/2006, 14h13
  3. Plusieurs valeurs pour un même champ
    Par will89 dans le forum Requêtes
    Réponses: 32
    Dernier message: 14/06/2006, 10h06
  4. Réponses: 8
    Dernier message: 05/12/2005, 14h43
  5. Plusieurs vues pour le même objet
    Par nicolas66 dans le forum OpenGL
    Réponses: 4
    Dernier message: 25/10/2004, 10h27

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