tree: 3c4b40be70caae23f2925234a45e8e02175367c8 [path history] [tgz]
  1. config_admin_tst/
  2. example/
  3. service/
  4. CMakeLists.txt
  5. readme.md
config_admin/readme.md

Configuration Admin


Introduction

The configuration Admin service allows defining and deploying configuration data to bundles. When compared to config.properties it adds the option to update configuration data by providing a persisten storage. It also allows changing configuration data at run-time.


Design

The config_admin bundle implements the configuration_admin service, the interface to configuration objects and the interface of a managed service. At the moment, the implementation uses a config_admin_factory to generate config_admin services for each bundle that wants to use this service. This is an inheritance of the original design and not needed. The configuration data is stored persistently in a subdirectory store of the current bundle directory. The filenames have the name of the PID and have an extension pid, e.g. base.device1.pid The files contains a list of key/value pairs. At least the following keys need to be present: service.bundleLocation service.pid


TODO

  1. Test the configuration of a service_factory
  2. Think about the option to allow remote update of the managed_services
  3. Support configuration of multiple managed services with the same PID. At the moment, only one service is bound to a configuration object. To support this the getConfiguration2 function needs to be called with a location NULL according to the spec.

Usage

  1. Bundle that needs configuration data This bundle has to register next to its normal service a managed service that has an update method. This managed service needs to be registered with a properties object that contains the key/value pair service.pid=. Use config_admin_tst/example_test as an example (it is better than example_test2)
  2. Bundle/application that wants to update the configuration data of the system This bundle needs to retrieve the running config_admin service. With this service it can retrieve all configuration objects for all known Persistent Identifiers (PIDs). For each PID, get all properites that need to be updated. See config_admin_test for an example.