Daten zwischen Plugins austauschen

JasDA

Aktives Mitglied
Ich habe ein Haupt-Plugin, das von beliebigen anderen Plugins erweitert werden kann. Diese anderen Plugins benötigen Daten wie den eingeloggten User. Diese Daten sind alle im Activator des Haupt-Plugins enthalten. Nur wie greife ich auf den Activator zu?

Habe bis jetzt nur diese wie ich finde unschöne Lösung gefunden:

Java:
		Bundle bundle = Platform.getBundle("de.test.plugin");
		String activator = (String)bundle.getHeaders().get(Constants.BUNDLE_ACTIVATOR);
		Class activatorClass = bundle.loadClass(activator);
		Method method = activatorClass.getMethod("getInstance");
		Object activatorInstance = method.invoke(null);
 
Falls mal jemand vor dem gleichen Problem steht, die Lösung über OSGi Services funktioniert ausgezeichnet. In der Start-Methode des Activators den Service registrieren:

Java:
context.registerService(SessionHolder.class.getName(), sessionHolder, null);

SessionHolder ist ein Objekt der Klasse, in der ich Infos wie Username etc. halte.

In anderen Plugins kann dann so auf die Instanz zugegriffen werden:
Java:
BundleContext context = Platform.getBundle(Activator.PLUGIN_ID).getBundleContext();
ServiceReference serviceReference = context.getServiceReference(SessionHolder.class.getName());
SessionHolder session = (SessionHolder) context.getService(serviceReference);
 

Neue Themen


Zurück
Oben