The OSGi ConfigAdmin passes a Dictionary instance into ManagedService.updated(); the service is then expected to extract the new values from the dictionary. That's great and works fine, but one thing that I have so far not been able to find explained anywhere is whether the dictionary value types are supposed to be specific (Integer, Long, Float, Boolean) or generic Strings that the managed service then parses/converts into a suitable form by itself, instead of expecting the correct value type.
This difference seems innocuous but has pretty grave consequences for subsystem/layer coupling, as the creator of the dictionary and a ManagedService obviously have to agree on the value types.
I have so far not been able to find any recommendation on this; the spec and pretty much all existing examples completely ignore the problem and use either specific types or untyped Strings.
Am I missing something or is this really underspecified?