Busco extensiones que implementan un punto de extensión específica, y estoy usando el siguiente método aceptable para hacer esto:conseguir OSGi paquete de Eclipse IConfigurationElement
IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry(); if (extensionRegistry == null) { return PLANTILLAS; }
IConfigurationElement [] config = extensionRegistry.getConfigurationElementsFor ("com.ibm.im.launchpoint.templates.template");
Luego me gustaría obtener la versión del paquete definitorio. Utilizaría la siguiente API, pero la API para PluginVersionIdentifier está obsoleta:
for (IConfigurationElement e: config) { BlueprintTemplate template = new BlueprintTemplate();
IExtension declarando la extensión = e.getDeclaringExtension(); PluginVersionIdentifier versionIdentifier = declarando Extensión.getDeclaringPluginDescriptor(). GetVersionIdentifier();
No pude encontrar una alternativa en la nueva API, es decir, desde IConfigurationElement, cómo obtengo el descriptor de ID de la versión del paquete. Obviamente, del Bundle puedo obtener la versión usando Bundle.getHeaders(), obteniendo el valor Bundle-Version, pero ¿cómo obtengo el Bundle en primer lugar? Platform.getBundle (bundleId) no es suficiente, ya que podría tener varias versiones del mismo paquete instaladas, y necesito saber quién soy. En este momento tengo una situación de huevo de pollo &, y la única solución que tengo es la anterior API obsoleta.
otra vez, esto realmente no me ayuda, ya que puede haber múltiples paquetes con esa ID, pero solo uno de ellos dentro de los cuales ESTA extensión está definida. Otro punto, Bundle no tiene un método getVersion. La razón por la que necesito esto es porque estoy registrando una 'plantilla de documento' como punto de extensión, y es posible que tenga diferentes versiones de esta plantilla. Entonces, cuando se carga una plantilla, me gustaría saber de qué versión se trata, para notación, etc. Por ahora, uso un atributo adicional en el esquema para mi punto de extensión, lo cual es una pena. –
Creo que ese atributo adicional es la mejor solución. De esta forma, es posible actualizar el complemento sin actualizar la versión de la extensión y sin modificar el receptor para actualizar la nueva versión. Es interesante que el paquete no contenga el método getVersion(). Quizás es un método nuevo en Eclipse 3.6, que estaba usando cuando investigué al colaborador. –