Changes from 1.10.0 to 1.10.1
-----------------------------

** Bug
    * [FELIX-4072] - onGet and onSet methods do not provide the reference on the pojo object
    * [FELIX-4076] - Useless locking on getRequiredHandler
    * [FELIX-4077] - Fix documentation urls in maven projects
    * [FELIX-4089] - Extender do not deactivate managed components when stopped
    * [FELIX-4096] - NPE when retrieve required and missing handler on a disposed factory
    * [FELIX-4105] - Factories not disposed when their bundle is leaving
    * [FELIX-4106] - Defensive service registration and update
    * [FELIX-4108] - Deadlock in the new extender
    * [FELIX-4109] - ComponentTypeDescription.addProperty() ignore immutable parameter
    * [FELIX-4113] - Factories not disposed when the extension provider is leaving
    * [FELIX-4114] - iPOJO ProvidedServiceDescription does not expose policy & CreationStrategy
    * [FELIX-4123] - Deadlock in new extender because of factory lock used in removedService
    * [FELIX-4127] - Configuration tracker bug when starting and stopping iPOJO successively
    * [FELIX-4129] - Cannot change the optionality of a dependency

** Improvement
    * [FELIX-1430] - Notification mechanism on bind/unbind events
    * [FELIX-4073] - PrimitiveHandler.attach(ComponentInstance) is final
    * [FELIX-4119] - Allow customization of DependencyHandler created Callbacks

** New Feature
    * [FELIX-4116] - Ability to listen for component service dependencies, providings, configuration properties, ...
    * [FELIX-4120] - Allow external entity to interact during the service resolution
    * [FELIX-4125] - Provide 'components' and 'component' commands
    * [FELIX-4130] - Allow retrieving the component instance from the instance description
    * [FELIX-4131] - Explicitly set configuration's location when the configuration is null

** Task
    * [FELIX-4092] - Move 'annotation' module from 'runtime' to 'manipulator' project
    * [FELIX-4103] - Skip deployment of it-tests
    * [FELIX-4104] - Do not run integration-tests in the default build
    * [FELIX-4124] - Move arch-gogo to runtime

Changes from 1.8.6 to 1.10.0
----------------------------

** Bug
    * [FELIX-3451] - "instance.name" attribute not recognized
    * [FELIX-3843] - ClassCastException when listing service properties of a non-ComponentFactory Factory service
    * [FELIX-3895] - iPOJO instance is not shown (with the "arch" commands) if constructor is failing
    * [FELIX-3896] - Null reference are injected with @Bind(optional=false) method on iPOJO components
    * [FELIX-3918] - iPOJO Logger cannot be dynamically configured on Equinox and KF
    * [FELIX-3919] - iPOJO Proxies strategy cannot be configured dynamically on Equinox and KF
    * [FELIX-3920] - Creation Strategy does not work on KF3
    * [FELIX-3974] - Properties cannot be set as immutable using annotations
    * [FELIX-3995] - Missing options in Bind annotation
    * [FELIX-4041] - Properties starting with . should not be propagated
    * [FELIX-4048] - @Requires handler does not fail when no specification can be found
    * [FELIX-4053] - Avoid @StaticServiceProperty to be used on classes
    * [FELIX-4054] - Use current factory version to generate instance name if required

** Improvement
    * [FELIX-3860] - factories and instances iPOJO gogo commands should show the "public=false" instances/factories
    * [FELIX-3932] - Allow dependency filter's to get context-source variables
    * [FELIX-4040] - Implement config admin support to handle binding location properly
    * [FELIX-4045] - Chain Exceptions when possible

** New Feature
    * [FELIX-4034] - Instance configuration DSL

** Task
    * [FELIX-3892] - Upgrade runtime codebase to Java 5
    * [FELIX-3903] - Migrate tests to pax exam 3
    * [FELIX-3921] - Update pom to latest Felix's parent
    * [FELIX-3948] - Define a new extender model
    * [FELIX-3978] - Check that we don't use java 6+ API

** Wish
    * [FELIX-3926] - Provide metadata for the Extender namespace

Changes from the 1.6.0 to 1.8.0
-------------------------------
** Improvement
    * [FELIX-2758] - Add post-registration and post-unregistration callbacks to the iPOJO API
    * [FELIX-2759] - The iPOJO API do not support constructor injection

Changes from the 1.4.0 to 1.6.0
-------------------------------
** Improvement
    * [FELIX-1427] - Service injection with Smart Proxies
    * [FELIX-1906] - Allow calling a method when service properties of an already injected service are modified
    * [FELIX-2268] - Simplify setting of properties.

** New Feature
    * [FELIX-2132] - Provides a way to control service exposition from the implementation class

Version 1.4.0
-------------

** Bug
    * [FELIX-965] - Avoid classloading issue if an already manipulated class is used by the API

** Improvement
    * Update parent pom
    * Initial commit


