Changes from 1.2.8 to 1.4.0
----------------------------

** Bug
    * [FELIX-2766] - Calling update() on a newly created factory configuration causes FileNotFoundException
    * [FELIX-2771] - Configuration Admin does not work on Foundation 1.2 and Mika
    * [FELIX-2813] - NPE in UpdateThread when updating a configuration right after ConfigurationAdmin service starts
    * [FELIX-2847] - NPE in ConfigurationManager.java:1003 (static String toString( ServiceReference ref ))
    * [FELIX-2885] - The config admin bundle does not indicate its provided and required services dependencies
    * [FELIX-3046] - Empty array configuration value is read as null after restart
    * [FELIX-3175] - RankingComparator results in wrong results
    * [FELIX-3227] - ManagedService.update must be called with null if configuration exists but is not visilbe
    * [FELIX-3228] - Configuration.getBundleLocation to generous
    * [FELIX-3229] - ConfigurationAdmin.getConfiguration(String, String) and .createConfiguration(String) to generous
    * [FELIX-3230] - ConfiguartionAdapter.setBundleLocation checks configuration permission incorrectly
    * [FELIX-3231] - Disable update counter
    * [FELIX-3233] - ConfigurationManager.canReceive may throw NullPointerException

** Improvement
    * [FELIX-3180] - Provide MessageFormat based logging method

** Task
    * [FELIX-3176] - Implement Configuration Admin 1.4 changes
    * [FELIX-3200] - Track PID changes of ManagedService[Factory] services
    * [FELIX-3301] - Enforce only using Java 1.3 API use

** Wish
    * [FELIX-1747] - Use Remote Resources Plugin to generate the legal files


Changes from 1.2.4 to 1.2.8
---------------------------

** Bug
    * [FELIX-1545] - Configurations may still be delivered more than once (or not at all)
    * [FELIX-1727] - Properties with leading dots not allowed
    * [FELIX-2179] - junit does not need to be a compile scope dependency of configadmin
    * [FELIX-2557] - ConfigurationEvent delivery not building the listener list correctly

** Improvement
    * [FELIX-1907] - Improve documentation on PersistenceManager API
    * [FELIX-2552] - Add caching PersistenceManager proxy
    * [FELIX-2554] - Improve unit test setup to allow for easier use of integration tests from within IDEs

** Task
    * [FELIX-1543] - Remove org.osgi.service.cm from configadmin project as soon as R4.2 compendium library is available from the Maven Repository
    * [FELIX-2559] - Adapt Configuration Admin LICENSE and NOTICE files


Changes from 1.2.0 to 1.2.4
---------------------------

** Bug
    * [FELIX-1535] - Permission is checked against the using bundle instead of the access control context (call stack)
    * [FELIX-1542] - Configuration may be supplied twice in certain situations

** Improvement
    * [FELIX-1541] - Include latest CM 1.3 (Compendium R 4.2) package export


Changes from 1.0.10 to 1.2.0
----------------------------

** Bug
    * [FELIX-979] - Config Admin throwing NPE
    * [FELIX-1146] - ConfigAdmin can deliver updates to a managed service factory more than once
    * [FELIX-1165] - When restarting a bundle, the config admin reports "Configuration ... has already been delivered", and the bundle receives no configuration.
    * [FELIX-1477] - ConfigAdmin implementation is not thread-safe
    * [FELIX-1479] - Security errors accessing configurations in the file system
    * [FELIX-1484] - Dynamically bound configuration must be reset to null after target bundle is uninstalled.
    * [FELIX-1486] - Multiple PIDs must be supported
    * [FELIX-1488] - Configuration binding is broken
    * [FELIX-1489] - New Configurations must still be delivered to ManagedService
    * [FELIX-1508] - Configuration.update() must not send CM_UPDATED event

** Improvement
    * [FELIX-1219] - ConfigAdmin package version has been bumped
    * [FELIX-1507] - Prevent update failure in case of multiple updates/deletes

** New Feature
    * [FELIX-1231] - Support multi-value service.pid service properties
    * [FELIX-1234] - Configuration Plugins should be called for all configuration instances of factory targets


Changes from 1.0.8 to 1.0.10
----------------------------

** Bug
    * [FELIX-889] - Arrays of primitives not supported by Configuration Admin
    * [FELIX-890] - Configuration.getProperty returns a Dictionary which is not entirely private

** Improvement
    * [FELIX-903] - Add functionality to limit log output in the absence of a LogService


Changes from 1.0.4 to 1.0.8
---------------------------

** Bug
    * [FELIX-740] - ConfigurationManager throws NPE when bundle that registered service is uninstalled
    * [FELIX-880] - ServiceReference of ConfigurationEvent is null
    * [FELIX-881] - Stopping the Configuration Admin bundle causes a NullPointerException

** Improvement
    * [FELIX-665] - Configuration Admin OBR description
    * [FELIX-865] - OBR: Do not declare ManagedService[Factory], ConfigurationListener and PersistenceManager as required services
    * [FELIX-879] - Use Collection interface internally instead of Vector, also be lenient and accept any Colleciton value and do not require Vector


Changes from 1.0.1 to 1.0.4
---------------------------

** Bug
    * [FELIX-611] - ConfigurationAdmin.listConfigurations returns empty configurations
    * [FELIX-612] - ConfigurationAdmin.createFactoryConfiguration should not persist Configuration

** Improvement
    * [FELIX-605] - Include ServiceTracker as private package


Changes from 1.0.0 to 1.0.1
---------------------------

** Bug
    * [FELIX-516] - ManagedService[Factory] may be updated twice with the same Configuration
    * [FELIX-522] - Configuration Admin allows configuration keys with illegal characters


Initial Release 1.0.0
---------------------
