получение Пакета OSGI от Eclipse IConfigurationElement

Я ищу расширения, которые реализуют определенную точку расширения, и использую следующий приемлемый метод, чтобы сделать это:

IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry (); если (extensionRegistry == пустой указатель) {возвращают ШАБЛОНЫ;}

IConfigurationElement [] конфигурируются = extensionRegistry.getConfigurationElementsFor ("com.ibm.im.launchpoint.templates.template");

Я затем хотел бы получить версию пакета определения. Я использовал бы следующий API, но API для PluginVersionIdentifier удерживается от использования:

для (IConfigurationElement e: конфигурация) {шаблон BlueprintTemplate = новый BlueprintTemplate ();

IExtension declaringExtension = e.getDeclaringExtension (); PluginVersionIdentifier versionIdentifier = declaringExtension.getDeclaringPluginDescriptor () .getVersionIdentifier ();

Я не мог найти альтернативу в новом API - т.е. от IConfigurationElement, как я получаю идентификационный дескриптор версии пакета. Очевидно, от Пакета я могу получить версию с помощью Bundle.getHeaders (), получив значение Версии комплекта - но как я получаю Пакет во-первых??? Platform.getBundle(bundleId) недостаточно, так как у меня могло бы быть несколько версий того же пакета, установленного, и я должен знать, кто я. В данный момент у меня есть ситуация с курицей и яйцом, и единственным решением, которое я имею, является вышеупомянутый API устаревший.

5
задан Hayden Marchant 15 June 2010 в 09:01
поделиться

1 ответ

Я предлагаю немного порыться в Javadoc с описанием депривации, замена документирована. Я нашел следующий код, но не тестировал его.

String contributor = e.getDeclaringExtension().getContributor().getName();
Bundle bundle = Platform.getBundle(contributor);
Version versionInfo = bundle.getVersion();

Из любопытства: зачем вам нужно получать версию расширяющего плагина? Насколько я знаю, цель механизма точек расширения - отделить специфическую информацию о расширителе, и нужна только информация, описанная в расширении (plugin.xml) или в ссылающемся коде.

0
ответ дан 15 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: