O'Reilly logo

Die OSGi Service Platform: Eine Einführung mit Eclipse Equinox by Matthias Lübken, Bernd Kolb, Nils Hartmann, Gerd Wütherich

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

18 Der Preferences Service316
Reihe von Methoden, mit denen die Properties gesetzt, manipuliert
und ausgelesen werden können (vgl. Abb. 18–3).
Die Wurzelknoten der entsprechenden Preferences-Bäume nnen
über den Preferences Service abgefragt werden.
System und
User Preferences
Der Preferences Service unterteilt die pro Bundle abzulegenden
Einstellungen in die zwei Kategorien System Preferences und User Pre-
ferences:
System Preferences: System Preferences sind Einstellungen, die für
ein Bundle unabhängig von einem konkreten Anwender relevant
sind. System Preferences existieren für jedes Bundles genau einmal.
User Preferences: User Preferences enthalten Daten, die einem kon-
kreten Benutzer zugeordnet sind. Pro Bundle können beliebig viele
User Preferences angelegt werden.
Es liegt in der Verantwortung des Anwendungsentwickers, die abzu-
legenden Einstellungen in die entsprechenden Kategorien einzuteilen.
Preferences-Bäume sind immer spezifisch für das anlegende bzw.
auslesende Bundle. Die gemeinsame Nutzung von System- oder Benut-
zereinstellungen in unterschiedlichen Bundles ist über den Preferences
Service nicht möglich. Wird ein Bundle aus dem OSGi Framework
deinstalliert, dann werden auch seine gespeicherten Preferences
gelöscht. In Abb. 18–4 sind die möglichen Preferences-Bäume inner-
halb des Preferences Service schematisch dargestellt.
knoten_2
key_1 = value_1
...
key_n = value_n
knoten_3
key_1 = value_1
...
key_n = value_n
<root>
key_1 = value_1
...
key_n = value_n
knoten_1
key_1 = value_1
...
key_n = value_n
Abb. 18–3
Der Preferences-Baum
31718.3 Zugriff auf Preferences
18.3 Zugriff auf Preferences
18.3.1 Das Interface PreferencesService
Der Preferences Service ist unter dem Interface org.osgi.service.
prefs.PreferencesService
in der Service Registry angemeldet.
package org.osgi.service.prefs;
public interface PreferencesService {
public Preferences getSystemPreferences();
public Preferences getUserPreferences(String name);
public String[] getUsers();
}
Über dieses Interface haben Sie Zugriff auf die Preferences-Root-Kno-
ten eines Bundles. Die Methode
getSystemPreferences() liefert Ihnen
das Root-Preferences-Objekt der System Preferences zurück. Über die
Methode
getUserPreferences(String name) fragen Sie das Root-Prefe-
rences-Objekt für den angegebenen Benutzer ab. Falls für den Benutzer
noch kein Root-Objekt existiert, wird es automatisch angelegt. Die
Methode
getUsers() liefert Ihnen die Namen aller Benutzer zurück, für
die bereits Preferences existieren.
Beispiel
Mit der folgenden Anweisung lesen Sie bspw. die System-Präferen-
zen eines Bundles aus:
Preferences userPreferences =
preferencesService.getSystemPreferences();
System
Preferences
User 1
Preferences
User n
Preferences
...
Bundle 1
...
Bundle n
System
Preferences
User 1
Preferences
User n
Preferences
...
Bu
n
dle
n
Abb. 18–4
Preferences-Bäume im
Preferences Service
Listing 18–4
Das Interface
PreferencesService
18 Der Preferences Service318
Um anwenderspezifische Einstellungen auszulesen, können Sie die
Methode
getUserPreferences() verwenden:
Preferences userPreferences = preferencesService.
getUserPreferences(“andi“);
Um die Namen aller Anwender zu ermitteln, für die Preferences-
Bäume verfügbar sind, können Sie die Methode
getUser() verwenden:
String[] users = preferencesService.getUsers();
18.3.2 Das Interface Preferences
Das Interface org.osgi.service.prefs.Preferences repräsentiert einen
Knoten in der hierarchischen Struktur der vom Preferences Service ver-
walteten Daten (vgl. Listing 18–5). Ein Preferences-Objekt erfüllt die
folgenden Aufgaben, auf die wir in den weiteren Abschnitten näher
eingehen werden:
Navigation durch den Preferences-Baum: Von einem Preferences-
Objekt aus können Sie zu den weiteren Knoten in Ihrem Prefe-
rences-Baum navigieren, neue Knoten anlegen und bestehende
Knoten löschen.
Setzen und Auslesen von Properties: Über das Preferences-Objekt
können Sie auf die in Form von Properties hinterlegten Daten
zugreifen, diese ändern und löschen.
Schreiben und Synchronisieren: Über die Methoden
flush() und
sync() können Sie Preferences explizit speichern bzw. mit dem
Backend synchronisieren.
31918.3 Zugriff auf Preferences
package org.osgi.service.prefs;
public interface Preferences {
public String[] childrenNames() throws BackingStoreException;
public Preferences parent();
public Preferences node(String pathName);
public boolean nodeExists(String pathName)
throws BackingStoreException;
public void removeNode() throws BackingStoreException;
public String name();
public String absolutePath();
public void put(String key, String value);
public void putInt(String key, int value);
public void putLong(String key, long value);
public void putBoolean(String key, boolean value);
public void putFloat(String key, float value);
public void putDouble(String key, double value);
public void putByteArray(String key, byte[] value);
public String[] keys() throws BackingStoreException;
public String get(String key, String def);
public int getInt(String key, int def);
public long getLong(String key, long def);
public boolean getBoolean(String key, boolean def);
public float getFloat(String key, float def);
public double getDouble(String key, double def);
public byte[] getByteArray(String key, byte[] def);
public void remove(String key);
public void clear() throws BackingStoreException;
public void flush() throws BackingStoreException;
public void sync() throws BackingStoreException;
}
()
Schreiben und Synchronisieren
bl
i
i
d
(
S
i
k
S
i
Setzen und Auslesen von Properties
[
]
(
)
Navigation durch den Preferences-Baum
Listing 18–5
Das Interface
Preferences

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required