Changes from the 1.11.0 to 1.11.1
---------------------------------

** Bug
    * [FELIX-4340] - Flex iPOJO online manipulator error if metadata.xml file not supplied
    * [FELIX-4347] -  should ignore inner classes that are assigned to static fields

Changes from the 1.10.1 to 1.11.0
---------------------------------

** Bug
    * [FELIX-4021] - maven-ipojo-plugin fails on WAR packaging
    * [FELIX-4219] - Variables named not stored in bytecode for constructors during manipulation
    * [FELIX-4247] - Memory leak with ServiceUsage and inner class (Listener style)

** Improvement
    * [FELIX-4112] - Add meta annotations for handler description
    * [FELIX-4269] - Introduce an enumeration to configure binding policy from the annotation

** Task
    * [FELIX-4134] - Move integration-tests to the reactor
    * [FELIX-4151] - Fix mistakes in the javadoc tags
    * [FELIX-4155] - Update bnd-ipojo-plugin for bndlib 2.x
    * [FELIX-4156] - Fix versions of maven plugins
    * [FELIX-4270] - Bump iPOJO package version to 1.11.0

** Sub-task
    * [FELIX-4253] - Add methods from inner classes in the metadata collected during the manipulation
    * [FELIX-4254] - Specify the method id of methods from inner class
    * [FELIX-4255] - Extend the inner class manipulation to allow method interception
    * [FELIX-4256] - Avoid manipulation native and static methods from inner classes

Changes from the 1.10.0 to 1.10.1
---------------------------------

** Bug
    * [FELIX-4077] - Fix documentation urls in maven projects
    * [FELIX-4091] - Bnd iPOJO Plugin only browse classes annotated with some iPOJO annotations
    * [FELIX-4093] - Dependency is ignored if @Bind does not respect naming pattern
    * [FELIX-4110] - @ServiceProperty and @StaticServiceProperty are missing the immutable attribute

** Improvement
    * [FELIX-4094] - Recognize add/remove method naming pattern

** New Feature
    * [FELIX-4095] - Add CDI-like @Stereotype

** 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

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
-------------------------------
** Improvement
    * [FELIX-3380] - minor javadoc corrections in @Temporal annotation

Changes from the 1.6.4 to 1.8.0
-------------------------------
** Bug
    * [FELIX-2568] - Rename Transactionnal to Transactional

** Improvement
    * [FELIX-1428] - Constructor injection of Configuration properties
    * [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-2624] - Support multiple whiteboards using annotations
    * [FELIX-2630] - Rename @Component attributes to follow the java naming conventions
    * [FELIX-2631] - Rename @Publisher and @Subscriber attributes to follow the java naming conventions
    * [FELIX-2633] - Rename JMX annotations
    * [FELIX-2634] - Rename the @Publisher annotation into @Publishes annotation to avoid collision
    * [FELIX-2666] - Rename the temporal handler annotation to avoid collision
    * [FELIX-2742] - Constructor injection of service dependencies

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

Changes from the 1.6.0 to 1.6.2
-------------------------------
** Improvement
    * [FELIX-2296] - Access to ServiceReference in iPOJO service.

Changes from the 1.4.0 to 1.6.0
-------------------------------
** Bug
    * [FELIX-1557] - Cosmetic change of the Bundle-Name and Bundle-SymbolicName in iPOJO annotations.

** Improvement
    * [FELIX-1426] - Service injection with Dynamic Proxies
    * [FELIX-1427] - Service injection with Smart Proxies
    * [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

** Wish
    * [FELIX-1940] - Add @Instance annotation to declare instances without metadata.xml

Changes from 1.2.0 to 1.4.0
---------------------------
** Bug
    * [FELIX-1319] - Issue in the metadata overriding analysis in iPOJO annotations

** Improvement
    * Update parent pom


Changes from 1.0.0 to 1.2.0
---------------------------
** Improvement
    * [FELIX-825] - Provide annotation for iPojo JMX Handler
    * [FELIX-834] - Provide Annotations for the extender, whiteboard and event admin handlers

** Bug
    * [FELIX-867] - iPOJO @ServiceProperty can target method
    * [FELIX-868] - iPOJO @Component don't support factory methods


Changes from 0.8.0 to 1.0.0
---------------------------
** Improvement
    * [FELIX-627] - Temporal dependency annotation


Version 0.8.0
-------------
    * Initial release
