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


Version 1.8.2
-------------
    * Initial release
