Jakkolwiek aspekty związane z pakunkiem modułu dodatkowego mogą odgrywać pewną rolę dla tego modułu i narzędzi środowiska w czasie wykonywania modułu, zdecydowanie częściej kod modułu dodatkowego koncentruje się na punktach rozszerzeń definiowanych przez inne moduły oraz na wnoszonych przez nie rozszerzeniach. Informacje te są zapisane w rejestrze rozszerzeń platformy o nazwie IExtensionRegistry.
Dlaczego lista obecnych rozszerzeń może być interesująca z punktu widzenia modułu dodatkowego? Znaczenie tej informacji oraz sposób jej pozyskiwania zostanie pokazany na konkretnym przykładzie.
Za przykład posłuży okno dialogowe Pokaż widok w środowisku roboczym, zawierające wszystkie dostępne widoki zainstalowane na platformie.
Wiadomo, że nazwy kategorii i nazwy widoków wszystkich widoków są definiowane w pliku plugin.xml każdego modułu dodatkowego, który wnosi rozszerzenie dla punktu rozszerzenia org.eclipse.ui.views. W jaki sposób środowisko robocze odczytuje te informacje? Z rejestru rozszerzeń platformy. Poniżej przedstawiono uproszczony fragment kodu, bazujący na implementacji okna dialogowego Pokaż widok w środowisku roboczym:
... 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]); //pobranie informacji o każdym rozszerzeniu ...
Jak widać na przykładzie, treść rejestru można odczytać przy użyciu klasy Platform. Protokół w interfejsie IExtensionRegistry jest używany w celu odszukania punktu rozszerzenia o nazwie org.eclipse.ui.views. Zawarte w rejestrze informacje na temat określonych punktów rozszerzeń i samych rozszerzeń można odczytać za pomocą protokołów zdefiniowanych w interfejsach IExtensionRegistry, IExtensionPoint i IExtension. Dołączona do tych klas dokumentacja javadoc zawiera szczegółowe informacje na temat protokołu obsługi rejestru.
Po znalezieniu informacji na temat odpowiedniego rozszerzenia można użyć protokołu zdefiniowanego w interfejsie IConfigurationElement w celu poznania poszczególnych atrybutów tego rozszerzenia.