Changes in 1.9.2
----------------
** Bug
    * [FELIX-5845] : org.apache.felix.cm.impl.persistence.PersistenceManagerProxy broken


Changes in 1.9.0
----------------
** Improvement
    * [FELIX-5288] - Implement RFC 227 (OSGi R7 Update)
    * [FELIX-5351] - Implement coordinations (OSGi R7)
    * [FELIX-5289] - Alias PID Handling of Factory Configurations (OSGi R7)
    * [FELIX-5290] - Locking Configuration Records (OSGi R7)
    * [FELIX-5291] - Improve Configuration Updates (OSGi R7)
    * [FELIX-5292] - Capabilities (OSGi R7)
    * [FELIX-5293] - Improved ConfigurationPlugin Support (OSGi R7)
    * [FELIX-5468] - Refactor persistence handling
    * [FELIX-5693] - Improve persistence manager handling
    * [FELIX-5695] - Use Java 7 as base version
    * [FELIX-5778] - Refactor factory configuration handling
** Bug
    * [FELIX-5745] - Empty collections should be allowed as property value


Changes from 1.8.14 to 1.8.16
-----------------------------
** Bug
    * [FELIX-5669] : Registering a PersistenceManager causes duplicate caches.


Changes from 1.8.12 to 1.8.14
-----------------------------
** Bug
    * [FELIX-5443] - Frequent Changes cause UpdateThread to ConcurrentModificationException
    * [FELIX-5435] - Service does not get loaded with updated properties that have been modified on file system after felix framework restart


Changes from 1.8.10 to 1.8.12
-----------------------------

** Improvement
    * [FELIX-5380] - Reduce quite useless log verbosity
    * [FELIX-5366] - Additional Unit Tests for ConfigurationHandler

** Bug
    * [FELIX-5368] - ConfigurationManager ignores NotCachablePersistenceManager marker interface
    * [FELIX-5385] - ConfigAdmin uses wrong security when calling ManagedServices


Changes from 1.8.8 to 1.8.10
----------------------------

** Improvement
    * [FELIX-5088] - CaseSensitiveDictionary should implement equals()
    * [FELIX-5211] - Use provide/require capabilities instead of obsolete and meaningless import-export service headers

** Bug
    * [FELIX-5301] - ConfigurationPlugin support is not spec compliant


Changes from 1.8.6 to 1.8.8
---------------------------

** Improvement
    * [FELIX-4917] - FilePersistenceManager doesn't support comments

** Bug
    * [FELIX-4962] - Configadmin leaks caller's security context downstream
    * [FELIX-4945] - Escaped folder names makes ConfigAdmin incompatible and factory configs not always work


Changes from 1.8.4 to 1.8.6
---------------------------

** Improvement
    * [FELIX-4844] - Store configuration data in a diff-tool friendly way
    * [FELIX-4884] - Avoid unnecessary array creation if listConfigurations does not find anything


Changes from 1.8.2 to 1.8.4
---------------------------

** Bug
    * [FELIX-4846] - Wrong exception type in list operation
    * [FELIX-4851] - ConfigAdmin only forwards ConfigurationEvents to ConfigurationListeners which are provided by bundles that are in state ACTIVE
    * [FELIX-4855] - ConfigAdmin does not update ManagedServiceFactory on framework restart


Changes from 1.8.0 to 1.8.2
----------------------------

** Bug
    * [FELIX-4302] - Config Admin can create illegal names on windows
    * [FELIX-4360] - Ensure ordered property values in configurations
    * [FELIX-4362] - Security ConfigAdmin permissions are inherited on the stack
    * [FELIX-4385] - NPE in Configuration Admin Service when deleting configuration
    * [FELIX-4408] - CaseInsensitiveDictionary is platform/locale dependant
    * [FELIX-4566] - Consistency in PersistenceManager and Cache is not guaranteed

** Improvement
    * [FELIX-4316] - Packages imported dynamically should also be imported statically with an optional flag
    * [FELIX-4811] - Optimize ConfigurationManager#listConfigurations


Changes from 1.6.0 to 1.8.0
----------------------------

** Bug
    * [FELIX-3360] - Bundle location is statically set for dynamically bound bundles
    * [FELIX-3762] - NPE in UpdateConfiguration#run
    * [FELIX-3820] - Possible NPE in ConfigAdmin after shutting down when accessed by bad behaving bundles
    * [FELIX-3823] - ConfigAdmin should explicitely unregister services
    * [FELIX-4165] - FilePersistenceManager fails to rename configuration file
    * [FELIX-4197] - [CM] Always check permission on Configuration.get/setBundleLocation
    * [FELIX-4238] - Unnecessary re-initialization of PersistenceManagers in configadmin

** Improvement
    * [FELIX-4039] - Add Permissions file in ConfigAdmin bundle 

** Task
    * [FELIX-3808] - Upgrade ConfigAdmin to pax-exam 2


Changes from 1.4.0 to 1.6.0
----------------------------

** Bug
    * [FELIX-3532] - Source artifact is not being generated
    * [FELIX-3596] - Config Admin should track SynchronousConfigurationListeners
    * [FELIX-3721] - Configuration not always provided upon initial service registration

** Improvement
    * [FELIX-3577] - Refactor helpers and service trackers
    * [FELIX-3622] - ConfigurationManager.listConfigurations may not always properly log the configuration PID

** Task
    * [FELIX-3479] - [Config Admin 1.5] Implement Configuration.getChangeCount()
    * [FELIX-3480] - [Config Admin 1.5] Implement support for SynchronousConfigurationListener
    * [FELIX-3481] - [Config Admin 1.5] Implement support for Targeted PIDs
    * [FELIX-3483] - [Config Admin 1.5] Export cm API at version 1.5
    * [FELIX-3554] - Prevent same configuration to be delivered multiple times
    * [FELIX-3562] - Use OSGi Configuration Admin 1.5 API classes
    * [FELIX-3578] - ConfigAdmin Maven build does not have Maven convention *-sources.jar artifacts


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-2888] - if you create a factory configuration and anybody takes a peek before you've had a chance to update, your pudding is trapped forever
    * [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
    * [FELIX-3390] - Intermittent NPE in ConfigurationManager

** Improvement
    * [FELIX-3180] - Provide MessageFormat based logging method
    * [FELIX-3327] - Gracefully handle Configuration access after Configuration Admin Service has terminated

** Task
    * [FELIX-3176] - Implement Configuration Admin 1.4 changes
    * [FELIX-3177] - Remove temporary inclusion of OSGi classes
    * [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
---------------------
