Release Notes - Felix - Version org.apache.felix.dependencymanager-r16
======================================================================

** List of bundles being part of the release:
    * org.apache.felix.dependencymanager; version=4.6.1
    * org.apache.felix.dependencymanager.shell; version=4.0.9
    * org.apache.felix.dependencymanager.runtime; version=4.0.8
    * org.apache.felix.dependencymanager.annotation; version=5.0.2
    * org.apache.felix.dependencymanager.lambda; version=1.2.2

** Bug
   * [FELIX-6180] - Component initialization error message get's printed to sysout instead of logged to LogService

** Improvement
   * [FELIX-6278] - Update Dependency Manager with latest bndtools version

Release Notes - Felix - Version org.apache.felix.dependencymanager-r15
======================================================================

** List of bundles being part of the release:
    * org.apache.felix.dependencymanager; version=4.6.0
    * org.apache.felix.dependencymanager.shell; version=4.0.8
    * org.apache.felix.dependencymanager.runtime; version=4.0.7
    * org.apache.felix.dependencymanager.annotation; version=5.0.1
    * org.apache.felix.dependencymanager.lambda; version=1.2.1

** Task
    * [FELIX-5996] - Remove generic parameter in DM Component interface

Release Notes - Felix - Version org.apache.felix.dependencymanager-r14
======================================================================

** List of bundles being part of the release:
    * org.apache.felix.dependencymanager; version=4.5.1
    * org.apache.felix.dependencymanager.shell; version=4.0.7
    * org.apache.felix.dependencymanager.runtime; version=4.0.6
    * org.apache.felix.dependencymanager.annotation; version=5.0.1
    * org.apache.felix.dependencymanager.lambda; version=1.2.0

** Bug
    * [FELIX-5990] - DM ServiceTracker memory leak

** Wish
    * [FELIX-5991] - DM annotation scanner debug messages are logged in warn

** Task
    * [FELIX-5992 - Do not use a global changelog for all dm modules

Release Notes - Felix - Version org.apache.felix.dependencymanager-r13
======================================================================

** List of bundles being part of the release:
    * org.apache.felix.dependencymanager; version=4.5.0
    * org.apache.felix.dependencymanager.shell; version=4.0.7
    * org.apache.felix.dependencymanager.runtime; version=4.0.6
    * org.apache.felix.dependencymanager.annotation; version=5.0.0
    * org.apache.felix.dependencymanager.lambda; version=1.2.0


** Bug
    * [FELIX-5683] - getServiceProperties returns null instead of empty dictionary
    * [FELIX-5716] - Dead Lock in DM
    * [FELIX-5768] - DM Lambda stop callback not being called
    * [FELIX-5955] - Move changelog.txt to toplevel project dir
    * [FELIX-5956] - NPE when invoking a lifecycle runnable method from init method

** New Feature
    * [FELIX-5336] - Add support for prototype scope services in DM4


** Improvement
    * [FELIX-5967] - DM does not support java9+
    * [FELIX-5937] - Refactor DM bndtools/gradle project
    * [FELIX-5939] - DM annotations enhancements
    * [FELIX-5941] - DM APi enhancements
    * [FELIX-5957] - Check if a default implementation is used only on optional dependencies


** Task
    * [FELIX-5960] - Do not supply MD5 checksum

Release Notes - Felix - Version org.apache.felix.dependencymanager-r11
======================================================================

** List of bundles being part of the release:
    * org.apache.felix.dependencymanager; version=4.4.1
    * org.apache.felix.dependencymanager.shell; version=4.0.6
    * org.apache.felix.dependencymanager.runtime; version=4.0.5
    * org.apache.felix.dependencymanager.annotation; version=4.2.1
    * org.apache.felix.dependencymanager.lambda; version=1.1.1

** Bug
    * [FELIX-5630] - NullObject is created for a required dependency if the component is removed and added again to the dependency manager
    * [FELIX-5636] - Component of aspect service does not have any service properties anymore
    * [FELIX-5657] - DM released sources can't be rebuilt

** Improvement
    * [FELIX-5619] - MultiProperyFilterIndex memory consumption
    * [FELIX-5623] - Improve performance of ComponentImpl.getName method
    * [FELIX-5650] - Support latest version of Gogo
    * [FELIX-5653] - Simplify DM-Lambda samples
    * [FELIX-5658] - Include poms in dm artifacts

Release Notes - Felix - Version org.apache.felix.dependencymanager-r9
======================================================================

** List of bundles being part of the release:
    * org.apache.felix.dependencymanager; version=4.4.0
    * org.apache.felix.dependencymanager.shell; version=4.0.5
    * org.apache.felix.dependencymanager.runtime; version=4.0.4
    * org.apache.felix.dependencymanager.annotation; version=4.2.0
    * org.apache.felix.dependencymanager.lambda; version=1.1.0

** Bug
    * [FELIX-5236] - Single @Property annotation on a type doesn't work
    * [FELIX-5242] - Configuration updates may be missed when the component is restarting
    * [FELIX-5244] - Can't inject service using a method ref on a parent class method.
    * [FELIX-5245] - Typo in error logged when a component callback is not found.
    * [FELIX-5268] - Service not unregistered while bundle is starting
    * [FELIX-5273] - Wrong log when a callback is not found from component instance(s)
    * [FELIX-5274] - remove callback fails after manually removing dynamic dependencies
    * [FELIX-5399] - Unable to define default map or list config types
    * [FELIX-5400] - Can't override default configuration type list value using an empty list
    * [FELIX-5401] - Can't override default configuration type map value using an empty map
    * [FELIX-5402] - Factory configuration adapter ignores factory method
    * [FELIX-5411] - When you stop a component, the service references are not ungotten.
    * [FELIX-5426] - Remove callbacks aren't called for optional dependencies in a "circular" dependency scenario
    * [FELIX-5428] - Dependency events set not cleared when component is removed
    * [FELIX-5429] - Aspect swap callback sometimes not called on optional dependencies
    * [FELIX-5469] - Methodcache system size property is not used
    * [FELIX-5471] - Ensure that unbound services are always handled synchronously
    * [FELIX-5517] - @Inject annotation ignored when applied on ServiceRegistration
    * [FELIX-5519] - services are not ungotten when swapped by an aspect
    * [FELIX-5523] - required dependencies added to a started adapter (or aspect) are not injected




** Improvement
    * [FELIX-5228] - Upgrade DM With latest release of BndTools
    * [FELIX-5237] - Configurable invocation handler should use default method values
    * [FELIX-5346] - Start annotation not propagated to sub classes
    * [FELIX-5355] - Allow to use properties having dots with configuration proxies
    * [FELIX-5403] - Improve the Javadoc for org.apache.felix.dm.ComponentStateListener
    * [FELIX-5405] - Do not have org.apache.felix.dm.Logger invoke toString() of message parameters when enabled log level is not high enough 
    * [FELIX-5406] - DM lambda fluent service properties don't support dots
    * [FELIX-5407] - DM annotation plugin generates temp log files even if logging is disabled
    * [FELIX-5408] - Parallel DM should not stop components asynchronously
    * [FELIX-5467] - MultiPropertyFilterIndex is unusable when a service reference contains a lot of values for one key
    * [FELIX-5499] - Remove usage of json.org from dependency manager
    * [FELIX-5515] - Upgrade DM to OSGi R6 API
    * [FELIX-5516] - Allow to not dereference services internally
    * [FELIX-5518] - Remove all eclipse warnings in DM code
    * [FELIX-5520] - ComponentStateListener not supported in DM lambda
    * [FELIX-5521] - add more callback method signature in DM lambda service dependency callbacks
    * [FELIX-5522] - Refactor aspect service implementation
    * [FELIX-5524] - add more signatures for aspect swap callbacks
    * [FELIX-5526] - Allow to use generic custom DM dependencies when using dm lambda.
    * [FELIX-5531] - Document dependency callback signatures
    * [FELIX-5532] - Swap callback is missing in @ServiceDependency annotation



** Task
    * [FELIX-5533] - Fix a semantic versioning issue when releasing dependency manager

Release Notes - Felix - Version org.apache.felix.dependencymanager-r8
======================================================================

** Bug
    * [FELIX-5146] - Service adapters turn on autoconf even if callbacks are used
    * [FELIX-5147] - Bundle Adapter auto configures class fields even if callbacks are used
    * [FELIX-5153] - DM4 calls stop before ungetService() on ServiceFactory components
    * [FELIX-5155] - Adapter/Aspect extra service dependencies injected twice if using callback instance
    * [FELIX-5178] - Make some component parameters as volatile
    * [FELIX-5181] - Only log info/debug if dm annotation log parameter is enabled
    * [FELIX-5187] - No errog log when configuration dependency callback is not found
    * [FELIX-5188] - No error log when a factory pid adapter update callback is not found
    * [FELIX-5192] - ConfigurationDependency race condition when component is stopped
    * [FELIX-5193] - Factory Pid Adapter race condition when component is stopped
    * [FELIX-5200] - Factory configuration adapter not restarted


** New Feature
    * [FELIX-4689] - Create a more fluent syntax for the dependency manager builder


** Improvement
    * [FELIX-5126] - Build DM using Java 8
    * [FELIX-5164] - Add support for callback instance in Aspects
    * [FELIX-5177] - Support injecting configuration proxies
    * [FELIX-5180] - Support for Java8 Repeatable Properties in DM annotations.
    * [FELIX-5182] - Cleanup DM samples
    * [FELIX-5201] - Improve how components are displayed with gogo shell


Release Notes - Felix - Version org.apache.felix.dependencymanager-r6
======================================================================

** Bug
    * [FELIX-4974] - DM filter indices not enabled if the dependencymanager bundle is started first
    * [FELIX-5045] - DM Optional callbacks may sometimes be invoked before start callback
    * [FELIX-5046] - Gradle wrapper is not included in DM source release




** Improvement
    * [FELIX-4921] - Ensure binary equality of the same bundle between successive DM releases
    * [FELIX-4922] - Simplify DM changelog management 
    * [FELIX-5054] - Clean-up instance bound dependencies when component is destroyed
    * [FELIX-5055] - Upgrade DM to BndTools 3.0.0
    * [FELIX-5104] - Call a conf dependency callback Instance with an instantiated component
    * [FELIX-5113] - Remove useless wrong test in ConfigurationDependencyImpl
    * [FELIX-5114] - Schedule configuration update in Component executor synchronously

Release Notes - Felix - Version  org.apache.felix.dependencymanager-r5:
======================================================================

Release Notes - Felix - Version   org.apache.felix.dependencymanager-r5



** Bug
    * [FELIX-4907] - ConfigurationDependency calls updated(null) when component is stopped.
    * [FELIX-4910] - ComponentExecutorFactory does not allow to return null from getExecutorFor method.
    * [FELIX-4913] - DM Optional callbacks may sometimes be invoked twice




** Improvement
    * [FELIX-4876] - DM Annotations bnd plugin compatibility with Bndtools 2.4.1 / 3.0.0 versions
    * [FELIX-4877] - DM Annotations should detect service type using more method signatures.
    * [FELIX-4915] - Skip unecessary manifest headers in DM bnd file

Release Notes - Felix - Version org.apache.felix.dependencymanager-r3:
=====================================================================

** Bug
    * [FELIX-4858] - DependencyManager: missing createCopy method in timed service dependency
    * [FELIX-4869] - Callbacks not invoked for dependencies that are added after the component is initialized




** Improvement
    * [FELIX-4614] - Factory create() method should have access to the component definition
    * [FELIX-4873] - Enhance DM API to get missing and circular dependencies
    * [FELIX-4878] - Support more signatures for Dependency callbacks
    * [FELIX-4880] - Missing callback instance support for some adapters
    * [FELIX-4889] - Refactor dm shell command to use the org.apache.dm.diagnostics api


** Wish
    * [FELIX-4875] - Update DM integration test with latest ConfigAdmin


Release Notes - Felix - Version org.apache.felix.dependencymanager-r2:
=====================================================================

** Bug
    * [FELIX-4832] - ClassCastException with autoconfig Iterable fields
    * [FELIX-4833] - Revisit some javadocs in the DM annotations.

Release Notes - Felix - Version org.apache.felix.dependencymanager-r1:
======================================================================

** Bug
    * [FELIX-4304] - DependencyManager ComponentImpl should not assume all service properties are stored in a Hashtable
    * [FELIX-4394] - Race problems in DependencyManager Configuration Dependency
    * [FELIX-4588] - createCopy method ConfigurationDependency produces a malfunctioning clone
    * [FELIX-4594] - Propagation from dependencies overwrites service properties
    * [FELIX-4598] - BundleDependency can effectively track only one bundle
    * [FELIX-4602] - TemporalServiceDependency does not properly propagate RuntimeExceptions
    * [FELIX-4709] - Incorrect Named Dependencies are binded to the Service Instance


** New Feature
    * [FELIX-4426] - Allow DM to manage collections of services
    * [FELIX-4807] - New thread model for Dependency Manager


** Improvement
    * [FELIX-3914] - Log unsuccessful field injections
    * [FELIX-4158] - ComponentDeclaration should give access to component information
    * [FELIX-4667] - "top" command for the Dependency Manager Shell
    * [FELIX-4672] - Allow callbacks to third party instance for adapters
    * [FELIX-4673] - Log any error thrown when trying to create a null object.
    * [FELIX-4777] - Dynamic initialization time configuration of @ConfigurationDependency 
    * [FELIX-4805] - Deprecate DM annotation metatypes


** Wish
    * [FELIX-2706] - Support callback delegation for Configuration Dependecies
    * [FELIX-4600] - Cherrypicking of propagated properties
    * [FELIX-4676] - Add Provide-Capability for DependencyManager Runtime bundle
    * [FELIX-4680] - Add more DM ServiceDependency callback signatures
    * [FELIX-4683] - Allow to configure the DependencyManager shell scope
    * [FELIX-4684] - Replace DependencyManager Runtime "factorySet" by a cleaner API
    * [FELIX-4816] - bndtools-ify Dependency Manager
    * [FELIX-4818] - New release process for Dependency Manager

