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
