Changes from 1.12.0 to 1.12.1
-----------------------------

** Bug
    * [FELIX-3836] - NPE when calling InstanceDescription.getDescription()
    * [FELIX-4565] - Occasional ArrayIndexOutOfBoundException in iPOJO's ProvidedServiceHandler
    * [FELIX-4646] - @Context(Context.Source.INSTANCE) does not inject bundle context
    * [FELIX-4713] - Error in ProvidedServiceHandler.checkProvidedService : only the first service is checked
    * [FELIX-4715] - instance bundle context injection does not works
    * [FELIX-4716] - Bundle org.apache.felix.ipojo physically contains OSGi API classes
    * [FELIX-4717] - Cannot use the stream API on injected collections
    * [FELIX-4728] - InstanceManager concurrency issue

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
