16710.1 Tutorial: Die Equinox-Konsole um ein greet-Kommando erweitern
Schritt 1: Anpassen der start()- und stop()-Methoden
Da die Grußbotschaft nicht mehr beim Start und beim Stopp des
»Hello World«-Bundles ausgegeben werden soll, benötigen Sie im
Gegensatz zum bisherigen Beispiel keinen Service Tracker mehr, der
das Ausgeben der Grußbotschaft beim An- und Abmelden des Transla-
tion Service übernimmt. Stattdessen verwenden wir einen »einfachen«
Service Tracker, über den wir den Translation Service abfragen, sobald
ein Anwender das
greet-Kommando auf der Konsole ausgeführt hat.
Entfernen Sie deshalb den bislang verwendeten
TranslationService-
Tracker
aus dem Activator. Instanzieren Sie in der start()-Methode
stattdessen einen normalen Service Tracker (vgl. Listing 10–1):
package org.osgibook.helloworld;
[...]
public class Activator implements BundleActivator {
private BundleContext bundleContext;
private ServiceTracker translationServiceTracker;
public void start(BundleContext context) throws Exception {
this.bundleContext = context;
translationServiceTracker = new ServiceTracker(context,
TranslationService.class.getName(), null);
translationServiceTracker.open();
}
public void stop(BundleContext context) throws Exception {
translationServiceTracker.close();
}
[...]
}
Schritt 2: Implementierung des CommandProvider-Interface
Der Equinox-Konsole können eigene Kommando hinzugefügt werden,
indem eine Klasse vom Typ
org.eclipse.osgi.framework.console.Com-
mandProvider implementiert und ein Exemplar dieser Klasse als Service
an der Service Registry angemeldet wird.
Import der
benötigten Packages
In diesem Tutorial implementieren wir der Einfachheit halber das
CommandProvider-Interface direkt am Activator des »Hello World«-
Bundles. Beachten Sie, dass Sie dafür im Bundle Manifest das Package
org.eclipse.osgi.framework.console importieren müssen, damit die ent-
sprechenden Klassen zur Verfügung stehen:
Listing 10–1
Anpassungen im
Activator des »Hello
World«-Bundles I