J'utilise actuellement une application Java développée avec Eclipse et RCP; cette application a peu de fichiers plugin au format jar, ces fichiers incluent des procédures spéciales pour la génération des prix.Java RCP: Créer un point d'extension à partir d'une extension existante
Je dois développer une toute nouvelle application qui utilise les extensions existantes pour créer une nouvelle liste de prix. J'ai donc créé un nouveau projet plug-in et j'ai essayé de créer le point d'extension compatible avec mes extensions existantes.
Le problème est que je ne suis pas du tout expert avec RCP, donc je fait sûr une erreur: lorsque je tente d'obtenir l'extension avec ceci:
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions =
reg.getConfigurationElementsFor("prices.year");
for (int i = 0; i < extensions.length; i++) {
if(extensions[i].getName().equals("2016")) {
// Do something
}
}
Je reçois toujours 0 éléments.
Donc, c'est sûr que j'ai fait une erreur lors de la création du point d'extension ou lorsque j'ai ajouté l'extension disponible ... ou les deux!
En fait: - J'ai ajouté les fichiers jar dans mon projet, puis inclus dans la configuration de construction - J'ai créé le point d'extension - j'ouvrir le fichier .exsd, a ajouté un élément « client » avec une « classe » attribut; cette classe « Met en œuvre » points de champ à un objet défini dans une classe de pot (le même objet est mis en œuvre dans le fichier plugin) A l'intérieur du fichier Plugin (.jar) J'ai ceci:
public class Pricelist2017 extends Pricelist
implements IPricedata
{
...
-
EDIT: Après avoir appliqué greg-449 suggestion, maintenant, je suis en mesure d'obtenir une extension, mais je fais face à problème lorsque je tente d'y accéder:
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions = reg.getConfigurationElementsFor("prices.year");
for (int i = 0; i < extensions.length; i++) {
System.out.println(extension[i].getName());
System.out.println(extension[i].getAttribute("id"));
System.out.println(extension[i].toString());
}
Je reçois (pour 2 extensio ns trouvé):
client
null
[email protected]
client
null
[email protected]
Il me manque autre chose, mais il est difficile de trouver où toucher. Un grand merci d'avance pour toute votre aide!
Très bien. Ça marche! Donc, j'ai absolument besoin de savoir à l'avance combien de classes implémentent IPricedata, puis de les ajouter une par une? (en fait j'ai quelques centaines de classes qui implémentent IPricedata, tout le monde avec des attributs différents et j'ai besoin de les sélectionner par programme) – Scare
Oui, vous devez créer une extension pour chaque classe en utilisant des points d'extension. –