38922.2 Extension Points und Extensions im Überblick
22.2 Extension Points und Extensions im Überblick
Extension Points
und Extensions
Über Extension Points können Sie Bundles für Erweiterungen durch an-
dere Bundles öffnen, ohne dass die konkreten Erweiterungen zur Ent-
wicklungszeit bekannt sein müssen. Ein Extension Point wird deklarativ
in der Datei
plugin.xml beschrieben, die sich im Wurzelverzeichnis des
definierenden Bundles befinden muss. Bundles, die ein solches Bundle
erweitern möchten, können Extensions bereitstellen, die ebenfalls de-
klarativ innerhalb einer
plugin.xml-Datei beschrieben werden.
Die Extension Registry
Das Abfragen aller zu einem Extension Point verfügbaren Extensi-
ons erfolgt über die Extension Registry. Die Extension Registry liest
bei der Installation eines Bundles die ggf. vorhandene
plugin.xml-Datei
aus und registriert die spezifizierten Extension Points und Extensions.
Über den Service
IExtensionRegistry können die im System vorhande-
nen Extensions zu einem Extension Point ausgelesen und entsprechend
verarbeitet werden (vgl. Abb. 22–7)
Auswertung zur
Installationszeit
Da das Auslesen der Extension Points und Extensions eines Bundles
bereits bei der Installation eines Bundles erfolgt, können Extensions zu
einem Extension Point ausgewertet werden, ohne dass das Bundle, das
einen Extension Point definiert, gestartet sein muss. Diese Eigenschaft
wird bspw. in der Eclipse IDE genutzt, um über Extensions bereitge-
stellte Funktionalität bereits in der GUI anzuzeigen, obwohl das imple-
mentierende Bundle noch nicht gestartet wurde. Der Start eines Bund-
les erfolgt dann, wenn die bereitgestellte Funktionalität das erste Mal
abgerufen wird, was die Startup-Dauer drastisch reduziert.
Abb. 22–7
Arbeitsweise der
Extension Registry
Equinox Extension Registry
IExtensionRegistry
MANIFEST.MF
META-INF
org.osgibook.helloworld.swing
schema
plugin.xml
MANIFEST.MF
META-INF
org.osgibook.helloaction
plugin.xml
2. Abfragen von
Extensions und
ExtensionPoints
1. Auslesen von Extensions und ExtensionPoints
22 Extension Points und Extensions390
22.3 Extension Points definieren
22.3.1 Deklarative Beschreibung
Ein Extension Point wird in der Datei plugin.xml beschrieben, die sich
im Wurzelverzeichnis eines Bundles befinden muss. Das Root-Element
dieser Datei ist das Element
plugin, das keine weiteren Attribute
besitzt.
Ein Extension Point wird über das Element
extension-point
beschrieben, das als Unterelement des plugin-Elementes verwendet
wird. Das
extension-point-Element besitzt die in Tabelle 22–1 aufge-
führten Attribute.
Beispiel
Im folgenden Beispiel wird der Extension Point action mit dem spre-
chenden Namen »Action« definiert. Als Schema-Datei wird die Datei
schema/action.exsd angegeben.
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension-point id="action"
name="Action"
schema="schema/action.exsd"/>
</plugin>
22.3.2 Definition von Extension Points im PDE
Die Definition von Extension Points wird innerhalb des Plug-in Deve-
lopment Environments (PDE) durch grafisch-interaktive Editoren
unterstützt. Diese Editoren können im Manifest-Editor unter dem Rei-
ter Extension Points ausgewählt werden. Falls diese Reiter nicht zur
Verfügung stehen, können Sie diese auf der Registerkarte Overview
Name Optional Beschreibung
id nein Die »einfache/unqualifizierte« Id Ihres Extension
Points. Wenn Sie innerhalb Ihres Bundles mehrere
Extension Points definieren, muss die Id für jeden
Extension Point eindeutig sein. Die »qualifizierte«
Id ergibt sich aus dem symbolischen Namen eines
Bundles gefolgt von der hier eingetragenen Id.
name nein Ein sprechender Name für den Extension Point
schema ja Der Name der Schema-Datei, die die möglichen
Attribute Ihres Extension Points beschreibt. Geben
Sie hier einen Pfad relativ zum Root-Verzeichnis
Ihres Bundles an.
Tab. 22–1
Attribute des Elements
extension-point
39122.4 Extension definieren
über den Link Extension Points im Abschnitt Extension/Extension
Point Content aktivieren.
Folgende Editoren stehen zur Definition von Extension Points zur
Verfügung:
Der Extension Point Editor: Der Extension Point Editor ermöglicht
die Definition der Extension Points, die von einem Bundle angebo-
ten werden. Die Funktionsweise des Extension Point Editors ist in
der Eclipse-Hilfe oder online unter [ECHEME] beschrieben.
Der Schema Editor: Über den Schema Editor kann spezifiziert wer-
den, welche Konfigurationselemente eine Extension zu dem defi-
nierten Extension Point bereitstellen kann/muss. Die Struktur der
möglichen Konfigurationselemente werden in einem XML-Sche-
mas definiert, das über den Schema Editor definiert werden kann.
Die Funktionsweise des Schema Editors ist ebenfalls in der Eclipse-
Hilfe oder online unter [ECHEME] beschrieben.
Die Schema-Informationen werden im Übrigen nur zur Entwicklungs-
zeit im PDE ausgewertet. Eine Überprüfung von Extensions bzgl. des
vom Extension Point spezifizierten Schemas zur Laufzeit findet nicht
statt.
22.4 Extension definieren
22.4.1 Eine Extension definieren
Die Definition einer Extension erfolgt ebenfalls in der plugin.xml-Datei
eines Bundles. Dort verwenden Sie das
extension-Element, mit dem Sie
angeben, für welchen Extension Point Sie Ihre Extension zur Verfü-
gung stellen wollen. Das
extension-Element verfügt über die in Tabelle
22–1 dargestellten Attribute.
Name Optional Beschreibung
point nein Die qualifizierte Id des Extension Points. Die Id setzt
sich zusammen aus der Id des Bundles, das den
Extension Point zur Verfügung stellt und der Id des
Extension Points.
id ja Eine Id für Ihre Extension
name ja Ein sprechender Name für Ihre Extension
Tab. 22–2
Attribute des Elements
extension

Get Die OSGi Service Platform: Eine Einführung mit Eclipse Equinox now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.