Changes from 1.11.2 to 1.12.0
-----------------------------

** Bug
    * [FELIX-4464] - Wrong configuration admin package import / export clause
    * [FELIX-4488] - Attempt to create nullable object for non-interface service

** Improvement
    * [FELIX-4482] - Use scope=provided for OSGi APIs dependencies
    * [FELIX-4490] - IPOJO allows "instance.name" property to be an empty String

** New Feature
    * [FELIX-4476] - Java 8 Support

** Sub-task
    * [FELIX-4508] - Update to ASM 5.0.2
    * [FELIX-4509] - Change the frame computation strategy
    * [FELIX-4510] - Support lambda expression

Changes from 1.11.1 to 1.11.2
-----------------------------

** Bug
    * [FELIX-4229] - Provide a way to obtain the component's BundleContext (other than constructor injection)
    * [FELIX-4419] - Open access to InstanceDeclaration and TypeDeclaration
    * [FELIX-4432] - DefaultServiceRankingInterceptor holds duplicate dependencies
    * [FELIX-4448] - Invalid dynamism management when an interceptor implements both Tracking and Ranking interceptors
    * [FELIX-4449] - The ConfigurationListener list contains duplicates and fires update on unchanged configurations

** Improvement
    * [FELIX-3931] - Provide a handler to inject the bundle context
    * [FELIX-4160] - Create an Maven Parent POM for iPOJO

Changes from 1.11.0 to 1.11.1
-----------------------------

** Bug
    * [FELIX-4335] - PropertyDescription does not allow retrieving the current value of the represented property
    * [FELIX-4374] - iPOJO: ConcurrentModificationException in ProvidedService
    * [FELIX-4386] - Deadlock while creating composite instances programmatically

** Improvement
    * [FELIX-4292] - @Component 'propagation' attribute has wrong default value

Changes from 1.10.1 to 1.11.0
-----------------------------

** Bug
    * [FELIX-4115] - NPE in DependencyModel.getService() when @Bind method throws an exception
    * [FELIX-4132] - @Modified not working on Equinox
    * [FELIX-4138] - TypeDeclaration calls factory.dispose() even if it already has been disposed (externally)
    * [FELIX-4139] - package conflict with ipojo-annotations and ipojo-runtime
    * [FELIX-4164] - Instance / Component matching regression
    * [FELIX-4172] - Updated method called twice at the bundle start
    * [FELIX-4183] - Wrong Javadoc of TrackerCustomizer addingService method
    * [FELIX-4199] - The filter based service tracking interceptor should always be created
    * [FELIX-4200] - Only the last iPOJO Tracking interceptor is modifying the reference
    * [FELIX-4204] - Service Dependencies with a callback without a type attribute must be rejected
    * [FELIX-4207] - ipojo @Component with propagation set to true doesn't propagate properties
    * [FELIX-4218] - NPE with field annotated with both @Property and @ServiceProperty
    * [FELIX-4236] - Unvalued properties should be part of the instance's architecture
    * [FELIX-4247] - Memory leak with ServiceUsage and inner class (Listener style)
    * [FELIX-4248] - ServiceUsage ThreadLocal removal
    * [FELIX-4250] - Specification deduction broken when the method does not start with the 'bind' prefix
    * [FELIX-4251] - The @Bind annotation should use Class instead of String
    * [FELIX-4261] - NPE when an instance is declared without a configuration using the @ConfigurationTracker
    * [FELIX-4268] - Duplicated name errors always happen when there are 2 factories with the same name

** Improvement
    * [FELIX-4143] - Improve @Configuration management performances
    * [FELIX-4216] - Allow @Property without name in constructors
    * [FELIX-4228] - Improve dependency identification in log messages and exceptions
    * [FELIX-4232] - Service Dependency Interceptors should be part of the instance architecture
    * [FELIX-4252] - Make Extender's ThreadPool size configurable
    * [FELIX-4262] - QueueServices should be observable
    * [FELIX-4263] - iPOJO Core should use ranged imports
    * [FELIX-4264] - JobInfo should provide a way to identify the kind of task

** New Feature
    * [FELIX-4146] - Add getInstances and getInstanceNames in the Factory interface
    * [FELIX-4147] - Add getProvidedService in ProvidedServiceDescription and allow external service management
    * [FELIX-4215] - Extend manipulation metadata with argument names
    * [FELIX-4231] - Provide service binding interceptors
    * [FELIX-4265] - Provides a recorder for startup events
    * [FELIX-4267] - Define Apache Karaf features for iPOJO

** Task
    * [FELIX-3925] - Merge the temporal dependency handler within the service dependency handler
    * [FELIX-4133] - Add distribution creation in the iPOJO runtime build
    * [FELIX-4134] - Move integration-tests to the reactor
    * [FELIX-4136] - Document service dependency interceptors
    * [FELIX-4151] - Fix mistakes in the javadoc tags
    * [FELIX-4156] - Fix versions of maven plugins
    * [FELIX-4217] - Ensure compatibility between Aries Blueprint and iPOJO
    * [FELIX-4245] - Deadlock in Dependency
    * [FELIX-4270] - Bump iPOJO package version to 1.11.0

** Sub-task
    * [FELIX-4239] - Extend service dependency documentation with the 'exception' attribute.
    * [FELIX-4240] - Support the 'exception' attribute in service dependencies
    * [FELIX-4242] - Support the 'timeout' attribute in service dependencies
    * [FELIX-4243] - Define the dependency configuration matrix and improve error detection
    * [FELIX-4244] - Extend the service dependency documentation with the timeout attribute
    * [FELIX-4257] - Allow the dependency handler to track the entry and exit of inner class methods

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.8.4 to 1.8.6
-------------------------------

** Bug
    * [FELIX-3742] - Implementing class fails to load unless super interface's (interface extended by implemented interface) package is imported.
    * [FELIX-3789] - Deadlock due to synchronization on INSTANCE_NAME
    * [FELIX-3819] - The export directive of iPOJO is wrong

Changes from the 1.8.2 to 1.8.4
--------------------------------

** Bug
    * [FELIX-3451] - "instance.name" attribute not recognized
    * [FELIX-3500] - InstanceManager concurrency issue: "A methodID cannot be associated with a method from the POJO class"
    * [FELIX-3501] - IPojo FactoryStateListener doesn't get notified while stopping factory
    * [FELIX-3545] - Memory leak when unregistering a component used by an aggregate dependency with an unbind callback
    * [FELIX-3548] - Concurrent access during startup
    * [FELIX-3567] - iPOJO Configuration Handler should not reuse the dictionary object from the configuration admin
    * [FELIX-3576] - iPOJO fails when using constructor injection and expecting BundleContext in ctor
    * [FELIX-3599] - Problem with 'subservice action="instantiate"' in ipojo composite
    * [FELIX-3621] - Two dimensional array as argument to a method in a component
    * [FELIX-3672] - Potential Concurrent Modification Exception when a bundle is stopped

** Improvement
    * [FELIX-3560] - Extensions to IPojo's Factory and ComponentInstance documentation for custom handlers

Changes from the 1.8.0 to 1.8.2
-------------------------------
** Bug
    * [FELIX-2893] - Properties are not propagate to service by default
    * [FELIX-2902] - Service properties added by propagation overrides already existing properties
    * [FELIX-2907] - Problem calling _setInstanceManager on guice enhanced classe
    * [FELIX-2981] - Unable to remove configuration properties using iPOJO's configuration handler
    * [FELIX-2989] - Using a Service Controller set to true can trigger a service registration-unregistration-registration sequence
    * [FELIX-2995] - The service properties are updated despite there is no changes
    * [FELIX-3009] - Abstract classes as service specifications generates warnings at runtime
    * [FELIX-3075] - Change to ServiceController status in current trunk does not re-register service
    * [FELIX-3172] - Error when calling BundleContext.register(Class, Object, Dictionary)
    * [FELIX-3192] - Service properties are not updated if the properties were already propagated
    * [FELIX-3271] - On KF, the Instance singleton strategy throws an UnsupportedOperationException when stopping
    * [FELIX-3323] - Ipojo composite throw ClassCastException when configuration is updated thru ConfigAdmin
    * [FELIX-3356] - Objectweb ASM Clashes with IPojo
    * [FELIX-3374] - Use of java.lang.Properties in iPOJO Core

** Improvement
    * [FELIX-3036] - Add IPOJO-Components header support
    * [FELIX-3081] - Integrate the online-manipulator in iPOJO Core
    * [FELIX-3144] - Method interceptors should receive Method or Constructor objects
    * [FELIX-3155] - Allow identifying iPojo extensions by a namespace qualified name
    * [FELIX-3190] - iPOJO Factories doesn't give access to the complete Metadata model
    * [FELIX-3252] - Merge the online manipulator into iPOJO Core
    * [FELIX-3326] - Accessing IPojo-Component's all inherited classes and all implemented interfaces in PrimitiveTypeDescription

** New Feature
    * [FELIX-2932] - Allows disabling the asynchronous processing in the iPOJO Extender

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
