Ich stoße auf ein Problem. Ich habe einen org.osgi.service.cm.ManagedService
Impl-Client für eine OSGI-Konfiguration. Die Konfiguration ist eine Sammlung von Schlüssel/Wert-Paaren. Die Schlüssel in diesen Eigenschaften, wenn sie an die aktualisierte Methode (ManagedService.updated
) der ManagedService
als java.util.Dictionary
Objekt übergeben werden, scheinen Groß-und Kleinschreibung, d. H. props.get("HellO")
funktioniert, obwohl der Schlüssel in der Konfig "Hallo" ist.Osgis Config ManagedService-Wörterbuchschlüssel ohne Berücksichtigung der Groß- und Kleinschreibung
Wenn ich dieses Wörterbuch in eine Hashmap
durch Iterieren über seine Einträge konvertieren, werden die Schlüssel in der Karte Groß-und Kleinschreibung wie erwartet. Wird erwartet, dass die Schlüssel in Dictionary
Groß- und Kleinschreibung nicht beachten?
Dies wurde auf einer AEM 6.2-Instanz getestet.
Hier ist meine ManagedService
impl-Klasse.
public class ConfigService implements ManagedService {
public void updated(final Dictionary props) throws ConfigurationException {
// props.get("HellO") returns value
if (props != null) {
String pid = (String) props.get(Constants.SERVICE_PID);
// convert to map
Map map = map(props);
// map.get("HellO") returns null
// map.get("Hello") returns value
}
}
private static Map map(Dictionary dict) {
Map map = new ConcurrentHashMap();
for (Enumeration keys = dict.keys(); keys.hasMoreElements();) {
Object key = keys.nextElement();
map.put(key, dict.get(key));
}
return map;
}
Die ManagedService
impl wird als Dienst registriert die folgenden Code.
final Dictionary props = new Hashtable();
props.put(Constants.SERVICE_PID, "pid.of.the.osgi.configuration");
ServiceRegistration configSvc = context.registerService(ManagedService.class.getName(),
new ConfigService(), props);
Der Grund, dass die Schlüssel Groß- und Kleinschreibung sind zum Zeitpunkt (2000), dass es wie X.500-Spezifikationen sieht wichtig sein würden. X.509-Zertifikate, SNMP und LDAP sind die wenigen Dinge, die übrig geblieben sind. Groß- und Kleinschreibung wurde zum Standard und wir hatten schlechte Entscheidungen getroffen. Einer der Nachteile eines Standards, der nicht rückwärtskompatibel ist. –