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-3130] - Nested composites throws StackOverflowError on instantiation
    * [FELIX-3323] - Ipojo composite throw ClassCastException when configuration is updated thru ConfigAdmin
    * [FELIX-3451] - "instance.name" attribute not recognized

Changes from the 1.6.0 to 1.8.0
-------------------------------
** Improvement
    * [FELIX-2746] - Composite should support instance configuration

Changes from the 1.4.0 to 1.6.0
-------------------------------
** Improvement
    * [FELIX-1427] - Service injection with Smart Proxies
    * [FELIX-1906] - Allow calling a method when service properties of an already injected service are modified


Changes from 1.2.0 to 1.4.0
---------------------------
** Bug
    * [FELIX-994] - ClassCastException while Architecture on a composite with a provided service

** Improvement
    * Update parent pom


Changes from 1.0.0 to 1.2.0
---------------------------
** Bug
    * [FELIX-797] - Composite Architecture contains duplicate instances
    * [FELIX-817] - iPOJO Service Exported throw an error when stopping

Changes from 0.8.1 to 1.0.0
---------------------------
** Bug
    * [FELIX-622] - iPOJO Composite Service Instance can use factories twice to create service instance
    * [FELIX-628] - Architecture service should not publish the instance.name property
    * [FELIX-637] - Composite service implementation does not support long argument

** Improvement
    * [FELIX-673] - Provide OBR description to iPOJO bundles
    * [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

Version 0.8.1
-------------
    * Initial release
