Changes from the 1.6.8 to 1.8.0
-------------------------------
** Bug
    * [FELIX-2694] - Instance state not recomputed after reconfiguration when the instance is stopped
    * [FELIX-2716] - [iPOJO] Failure when creating proxies for classes in java.* packages

** Improvement
    * [FELIX-2781] - Expose the implementation class as service when no interfaces are found in the hierarchy
    * [FELIX-1424] - Constructor Injection
    * [FELIX-1428] - Constructor injection of Configuration properties
    * [FELIX-2461] - Allow specifying the targeted service interface in the @ServiceController
    * [FELIX-2620] - Change iPojo annotation parameters to follow java naming conventions
    * [FELIX-2621] - Rename annotations to remove collisions
    * [FELIX-2622] - Support static service properties that are not mirrored into fields
    * [FELIX-2688] - iPojo "requires.filters" - Array object instead of Dictionary object
    * [FELIX-2705] - Provide a way to extend the logger strategy
    * [FELIX-2742] - Constructor injection of service dependencies
    * [FELIX-2744] - Add annotations to the maven-ipojo-plugin archetype

Changes from the 1.6.6 to 1.6.8
-------------------------------
** Improvement
 * [FELIX-2688] - iPojo "requires.filters" - Array object instead of Dictionary object
 * [FELIX-2705] - Provide a way to extend the logger strategy

** Bug
 * [FELIX-2685] - Wrong Element name when XML namespace contains ':'
 * [FELIX-2694] - Instance state not recomputed after reconfiguration when the instance is stopped

Changes from the 1.6.4 to 1.6.6
-------------------------------
** Improvement
 * [FELIX-2594] - Have a way to create new custom iPojo handler without having to specify a handler usage
 * [FELIX-2623] - @Update annotated methods should not require a Dictionary parameter

** Bug
 * [FELIX-2580] - iPOJO failed to create proxies on service which are not interface
 * [FELIX-2596] - DependencyHandler.onObjectCreation throws NPE when bundle is refreshed
 * [FELIX-2603] - wrong behavior of InstanceManager.onSet(..) method
 * [FELIX-2636] - Cannot control the validity of an iPOJO instance using a configuration property

Changes from the 1.6.2 to 1.6.4
-------------------------------
** Improvement
    * [FELIX-2420] - Enum support for @Property annotation
    * [FELIX-2461] - Allow specifying the targeted service interface in the @ServiceController
    * [FELIX-2472] - Proxies should throw a runtime exception instead of a null pointer exception

** Bug
	* [FELIX-2561] - Properties set as required instead of optional in  the component type descriptions

Changes from the 1.6.0 to 1.6.2
-------------------------------
** Bug
    * [FELIX-2308] - getService is called during the unregistration of a service.
    * [FELIX-2309] - Potential NPE when a service has abruptly in the smart proxies.
    * [FELIX-2323] - Unbind method should not be called during the invalidation process if the invalidation does not come from a service departure.

** Improvement
    * [FELIX-2296] - Access to ServiceReference in iPOJO service.

Changes from the 1.4.0 to 1.6.0
-------------------------------
** Bug
    * [FELIX-1533] - Potential deadlock when stopping the underlying OSGi framework
    * [FELIX-1965] - iPojo component is made available regardless of exception during validate
    * [FELIX-2014] - Potential ClassCastException when a service property does not receive a value and is used in the constructor
    * [FELIX-2019] - The Property value is 'null' in the Architecture description, while the value is well assigned to the component's field.
    * [FELIX-2052] - Handler require callback are not called if the service (required) is registered before the instance of the handler has been started.
    * [FELIX-2093] - iPOJO doesn't always use the correct class loader

** Improvement
    * [FELIX-1425] - Service Proxy Mode
    * [FELIX-1426] - Service injection with Dynamic Proxies
    * [FELIX-1427] - Service injection with Smart Proxies
    * [FELIX-1532] - Be able to set the iPOJO Log Level from BND
    * [FELIX-1741] - Allows the configuration handler description to retrieve the managed service PID
    * [FELIX-1854] - Allows instances to directly declares service.* properties (pid, ranking, vendor, description)
    * [FELIX-1885] - Ease CreationStrategy & iPOJOServiceFactory usage
    * [FELIX-1906] - Allow calling a method when service properties of an already injected service are modified

** New Feature
    * [FELIX-2132] - Provides a way to control service exposition from the implementation class


Changes from 1.2.0 to 1.4.0
---------------------------
** Bug
    * [FELIX-985] - iPOJO analyzes already installed bundle by holding a lock
    * [FELIX-1002] - iPOJO Static binding policy is not compliant with the Declarative Service static binding policy.
    * [FELIX-1318] - Case mismatch problem of iPOJO custom handler name
** Improvement
    * Update parent pom
    * [FELIX-936] - Allowing publishing class as services
    * [FELIX-966] - iPOJO: Better error reporting when getPojoObject return null
    * [FELIX-982] - Declare iPOJO as a singleton bundle to avoid multiple version of the runtime at the same time
    * [FELIX-1114] - callback after configuration change needed
    * [FELIX-1163] - Improve error message when an array cannot be created due to a classloading issue
    * [FELIX-1182] - iPOJO - reconfiguration : get all properties with the update callback


Changes from 1.0.0 to 1.2.0
---------------------------
** Bug
    * [FELIX-797] - Composite Architecture contains duplicate instances
    * [FELIX-803] - iPOJO Core schema needs to be fixed
    * [FELIX-805] - Instance not created if the factory becomes valid later
    * [FELIX-866] - iPOJO Provides 'interface' attribute should be 'specifications'

** Improvement
    * [FELIX-787] - iPOJO logger log messages inside the log service and print them
    * [FELIX-796] - Allows enabling/disabling the internal event dispatcher
    * [FELIX-801] - Support service properties injection in bind/unbind callbacks
    * [FELIX-815] - Support optional properties
    * [FELIX-816] - Support comparator attribute with any service binding policy
    * [FELIX-818] - Implement the ServiceReference compareTo method
    * [FELIX-853] - Provide new service object creation strategies
    * New introspection API

Changes from 0.8.0 to 1.0.0
---------------------------
** Bug
    * [FELIX-557] - Factories still living when a primitive component does not have its manipulation metadata
    * [FELIX-632] - Component are set to immediate despite they are already immediate
    * [FELIX-635] - Simplify factory name computation
    * [FELIX-628] - Architecture service should not publish the instance.name property
    * [FELIX-621] - Instances not disposed when instances creation failed

** Improvement
    * [FELIX-552] - ClassCastException when using services as dynamic proxies
    * [FELIX-555] - Error message in the iPOJO Extender could be more accurate when failing to get the bundle context
    * [FELIX-558] - Non caught NoClassDefFoundError when the instantiation of a Nullable object failed
    * [FELIX-603] - Improve iPOJO Arch service dependency description
    * [FELIX-626] - Allow specifying instance configuration containing empty dictionaries
    * [FELIX-629] - Allows instance configuration to declares complex properties
    * [FELIX-631] - Immediate Component Detection
    * [FELIX-633] - Factory creation should be done in another thread
    * [FELIX-634] - Improve error handling
    * [FELIX-655] - Add a 'from' attribute in the service dependencies
    * [FELIX-673] - Provide OBR description to iPOJO bundles
    * [FELIX-683] - Supporting lists and vectors in the service dependency management
    * [FELIX-686] - Supporting collections and set in the service dependency management
    * [FELIX-688] - Better error reporting when an instance creation failed
    * [FELIX-689] - Instance 'name' property should become 'instance.name'
    * [FELIX-716] - Provide XML schemas for iPOJO descriptors
    * [FELIX-732] - Duplicate instance created of a managed service

Version 0.8.0
-------------
    * Initial release
