Я ищу расширения, которые реализуют определенную точку расширения, и использую следующий приемлемый метод, чтобы сделать это:
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 устаревший.
Я предлагаю немного порыться в Javadoc с описанием депривации, замена документирована. Я нашел следующий код, но не тестировал его.
String contributor = e.getDeclaringExtension().getContributor().getName();
Bundle bundle = Platform.getBundle(contributor);
Version versionInfo = bundle.getVersion();
Из любопытства: зачем вам нужно получать версию расширяющего плагина? Насколько я знаю, цель механизма точек расширения - отделить специфическую информацию о расширителе, и нужна только информация, описанная в расширении (plugin.xml) или в ссылающемся коде.