je me extensions qui mettent en œuvre un point d'extension spécifique, et emploie le procédé suivant acceptable pour ce faire:obtenir OSGI Bundle de Eclipse IConfigurationElement
IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry(); if (extensionRegistry == null) { return MODÈLES; }
IConfigurationElement [] config = extensionRegistry.getConfigurationElementsFor ("com.ibm.im.launchpoint.templates.template");
Je voudrais ensuite obtenir la version du bundle de définition. J'utiliserais l'API suivante, mais l'API pour PluginVersionIdentifier est obsolète:
pour (IConfigurationElement e: config) { BlueprintTemplate template = new BlueprintTemplate();
IExtension declareExtension = e.getDeclaringExtension(); PluginVersionIdentifier versionIdentifier = declaringExtension.getDeclaringPluginDescriptor(). GetVersionIdentifier();
Je ne trouvais pas d'alternative dans la nouvelle API, c'est-à-dire d'un IConfigurationElement, comment puis-je obtenir le descripteur d'id de version de l'ensemble. Évidemment, à partir du Bundle, je peux obtenir la version en utilisant Bundle.getHeaders(), obtenant la valeur Bundle-Version - mais comment puis-je obtenir le Bundle en premier lieu? Platform.getBundle (bundleId) n'est pas suffisant car il se peut que plusieurs versions du même bundle soient installées, et j'ai besoin de savoir qui je suis. En ce moment j'ai une situation d'oeuf & de poulet, et la seule solution que j'ai est l'API désapprouvée ci-dessus.
encore, cela ne m'aide pas vraiment, car il pourrait y avoir plusieurs paquets avec cet ID, mais seulement l'un d'entre eux dans lequel cette extension est définie. Autre point, Bundle n'a pas de méthode getVersion. La raison pour laquelle j'en ai besoin est que je suis en train d'enregistrer un «modèle de document» en tant que point d'extension, et que ce modèle peut avoir différentes versions. Donc, quand un template se charge, j'aimerais savoir quelle version il est, pour la notation, etc. Pour l'instant, j'ai utilisé un attribut supplémentaire dans le schéma pour mon point d'extension, ce qui est dommage. –
Je pense que cet attribut supplémentaire est la meilleure solution. De cette façon, il est possible de mettre à jour le plug-in sans mettre à jour la version de l'extension, et sans modifier le récepteur pour mettre à jour pour la nouvelle version. Il est intéressant que le bundle ne contienne pas la méthode getVersion(). Peut-être que c'est une nouvelle méthode dans Eclipse 3.6, que j'utilisais lorsque j'ai recherché le contributeur. –