Extensions und Extension Points
Extensions und Extension Points sind ein generischer Mechanismus der Eclipse-Plattform, mit dem Plug-ins Erweiterungsangebote bereitstellen können. Andere Plug-ins können zu diesen Angeboten Erweiterungen deklarieren:
Extension Points
Plug-ins können Extension Points in der Datei plugin.xml, die sich im Root-Verzeichnis des Plug-ins befindet, deklarieren:
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<extension-point id="greetings"
name="Greetings Extension Point"
schema="schema/greetings.exsd"/>
</plugin>
Zu jedem Extension Point wird ein XML Schema-Dokument hinterlegt. Dieses beschreibt jene Informationen, die das nutzende Plug-in bereitstellen muss.
Ein solche Definition ergibt einen Extension Point, der sich aus der ID des Plugins und der ID des Extension Points zusammensetzt:
<plug-in id> .<extension-point id> com.example.greeter.greetings
Für die Bearbeitung von Extension Points und dem zugehörigem XML-Schema stellt die Eclipse IDE einen grafischen Editor bereit:
Extensions
RCP-Entwickler verwenden vor allem Extension Points der Eclipse-Plugins, um ihre Anwendungen um neue Funktionalitäten zu erweitern. Extensions zu Extension Points werden ebenfalls im plugin.xml deklariert. Sie werden auch als Contributions bezeichnet. Beispiel:
<extension point="com.example.greeter.greetings">
<greeting text="Hello world!"/>
</extension>
Das XML innerhalb des <extension/>-Tags muss konform zum Schema des Extension Points sein. Der Extension Point gibt so die Struktur der Informationen vor, die eine Erweiterung bereitstellen muss. Auch für die Bearbeitung der Extensions stellt Eclipse einen grafischen Editor bereit:
Zusammenspiel Extension Point und Extensions
Das Plug-in, welches den Extension Point bereitstellt, kann über die ExtensionRegistry der Eclipse-Plattform alle Extensions auslesen, die zu einem Extension Point bereitgestellt wurden. Es sieht die gesammelten XML-Daten aus dem plugin.xml der jeweiligen Plug-ins und kann diese Informationen auswerten.
Die Interpretation der Contributions zur Laufzeit obliegt also dem Plug-in, welches den Extension Point bereitstellt. Es wird diese Informationen abfragen und verwenden, um die Erweiterungen zu realisieren.
Das heißt, Extensions und Extension Points stellen einen Kontrakt dar zwischen:
- dem Plug-in, welches den Extension Point bereitstellt
- und den Plug-ins, die zu dem Extension Point contributen
Dieser Kontrakt, also das Verhalten, welches Extensions an einem Extension Point bewirken, wird in der Regel ausführlich dokumentiert. Die Dokumentation zu einem Extension Point erreichen Sie über den Extension-Editor:



Großes Kino!
Aber in den XML - Ausschnitten sollten entweder immer die umschließenden tags, wie <plugin>...</plugin>, oder nie enthalten sein.