Extensiepunten en het register

De "bundelaspecten" van plugins zijn wellicht interessant voor de runtimeplugin en runtimetools, maar het komt vaker voor dat een plugin zich bezighoudt met door andere plugins gedefinieerde extensiepunten of met aangeleverde extensies. Deze informatie wordt verschaft door het platformextensieregister IExtensionRegistry.

Waarom wil een plugin weten welke extensies er aanwezig zijn? U ziet het belang van deze informatie aan de hand van een voorbeeld. Hierin ziet u ook het protocol voor het ophalen van de informatie.

In de view Weergave van de workbench zijn alle beschikbare views te zien die op het platform zijn geïnstalleerd.

Het dialoogvenster View afbeelden, met Hello View

U weet dat de namen van categorieën en views van alle aangeleverde views worden opgegeven in het bestand plugin.xml voor alle plugins die een extensie aanleveren voor org.eclipse.ui.views. Maar hoe komt de workbench aan deze gegevens? Uit het platformextensieregister. De volgende code is een vereenvoudigd fragment op basis van de workbenchimplementatie van het dialoogvenster View afbeelden:

	...
	IExtensionRegistry registry = Platform.getExtensionRegistry();
	IExtensionPoint point = registry.getExtensionPoint("org.eclipse.ui.views");
	if (point == null) return;
	IExtension[] extensions = point.getExtensions();
	for (int i = 0; i < extensions.length; i++)
		readExtension(extensions[i]);  //informatie over alle extensies ophalen
	...

U ziet dat het register opgehaald kan worden uit de klasse Platform. Het protocol in IExtensionRegistry wordt gebruikt om het extensiepunt met de naam org.eclipse.ui.views te zoeken. U kunt informatie over bepaalde extensiepunten of extensies in het register zoeken met het protocol dat is gedefinieerd in IExtensionRegistry, IExtensionPoint, en IExtension. De javadoc voor deze klassen bevat gedetailleerde informatie over het registerprotocol.

Als de gezochte extensiedefinitie is gevonden, kunt u het protocol in IConfigurationElement gebruiken om de afzonderlijke kenmerken van de extensie te onderzoeken.