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 the 1.8.6 to 1.10.0
--------------------------------

** Bug
    * [FELIX-3827] - Error in bbd-ipojo-plugin of manipulating jar with embedded dependencies with maven bundle plugin + bnd-ipojo-plugin
    * [FELIX-3900] - @HandlerDeclaration do not convert DOM Attributes to iPOJO Attributes correctly
    * [FELIX-3938] - maven-ipojo-plugin does not behave as bnd-ipojo-plugin
    * [FELIX-3974] - Properties cannot be set as immutable using annotations
    * [FELIX-3995] - Missing options in Bind annotation
    * [FELIX-4027] - The iPOJO Ant task requires org.objectweb.asm.tree
    * [FELIX-4046] - Inner class manipulation fails with expanded frames
    * [FELIX-4052] - Instance declaration not created correctly when using @Instantiate if the @Component specifies a name

** Improvement
    * [FELIX-3286] - Update POM to use the new parent
    * [FELIX-3452] - Extending maven-ipojo-plugin with directoryManipulation support.
    * [FELIX-3749] - Refactor the manipulator for better (and extensible) annotation support
    * [FELIX-3837] - PojoizationPlugin should be more extensible
    * [FELIX-3901] - Avoid converting Xml namespace declaration with @HandlerDeclaration
    * [FELIX-3927] - Exclude iPOJO 2.0 packages during manipulation

** New Feature
    * [FELIX-3699] - Allow annotations to handle custom component definitions.
    * [FELIX-4059] - Provide a CLI tool to manipulate iPOJO bundles

** Task
    * [FELIX-3903] - Migrate tests to pax exam 3
    * [FELIX-3921] - Update pom to latest Felix's parent
    * [FELIX-3976] - Move the online manipulator out of the core bundle

Changes from the 1.8.4 to 1.8.6
-------------------------------

** Bug
    * [FELIX-3461] - Re-manipulation with annotated component produces corrupted MANIFEST
    * [FELIX-3466] - Pojoization.directoryManipulation() does not take MANIFEST file location into account.
    * [FELIX-3508] - IPojo Manipulator left out 'array of enums' in generated metadata
    * [FELIX-3539] - iPOJO Manipulator failed on classes containing expanded frames
    * [FELIX-3573] - IPojo bytecode manipulation generates a duplicate local variable
    * [FELIX-3574] - IPojo bytecode manipulation looses method argument names
    * [FELIX-3621] - Two dimensional array as argument to a method in a component

Changes from the 1.8.2 to 1.8.4
-------------------------------

** Bug
    * [FELIX-3297] - iPOJO Manipulator throws ClassNotFoundException
    * [FELIX-3359] - Turn around to avoid to use the split verifier on Java 7
    * [FELIX-3389] - Bnd iPOJO Plugin ignores annotated components
    * [FELIX-3391] - Unexpected warning when using bnd-ipojo-plugin

** Improvement
    * [FELIX-3384] - Ensure maven-ipojo-plugin is thread-safe for parallel maven builds

Changes from the 1.8.0 to 1.8.2
-------------------------------

** Bug
    * [FELIX-2825] - The maven-ipojo-plugin does not replace component classes in WAR files
    * [FELIX-3012] - "Duplicate name&signature" problem
    * [FELIX-3098] - iPOJO new manipulator crashes when using a custom reporter
    * [FELIX-3145] - VerifyError on Java 7
    * [FELIX-3249] - iPOJO Bnd Plugin do not write all the metadatas in the manifest

** Improvement
    * [FELIX-3017] - The manipulator should return the original class if it's already manipulated
    * [FELIX-3078] - Introduce resource abstraction in the iPOJO manipulator
    * [FELIX-3079] - Adapt the Ant task and the maven plugin to use the new manipulator capabilities
    * [FELIX-3080] - Implement a BND plugin for iPOJO
    * [FELIX-3131] - Elements and attributes should conserve the insertion order
    * [FELIX-3204] - @Temporal should handle instantiation-time properties
    * [FELIX-3244] - Manipulator : DefaultManifestBuilder should be more extensible

Changes from the 1.6.4 to 1.8.0
-------------------------------
** Bug
    * [FELIX-2779] - iPOJO manipulator badly supports custom annotation attributes of type Class
    * [FELIX-2664] - Native methods should not be manipulated

** Improvement
    * [FELIX-1424] - Constructor Injection
    * [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-2630] - Rename @Component attributes to follow the java naming conventions
    * [FELIX-2732] - [iPOJO] Service modified callback should define a default method name
    * [FELIX-2742] - Constructor injection of service dependencies
    * [FELIX-2743] - Modify Pojoization to be more easily customizable
    * [FELIX-2755] - Allow the manipulator and the different front end to use several metadata files

Changes from the 1.6.2 to 1.6.4
-------------------------------
** Bug
    * [FELIX-2430] - IPOJO manipulation (ant task) results in invalid classes throwing java.lang.VerifyError at runtime in InstanceManager

** Improvement
    * [FELIX-2420] - Enum support for @Property annotation
    * [FELIX-2461] - Allow specifying the targeted service interface in the @ServiceController
    * [FELIX-2485] - Improve the performance of the manipulator on large files
    * [FELIX-2542] - Annotations on methods parameters are not moved on public methods after manipulation

Changes from the 1.6.0 to 1.6.2
-------------------------------
** Improvement
    * [FELIX-2296] - Access to ServiceReference in iPOJO service.

Changes from the 1.4.2 to 1.6.0
-------------------------------
** Improvement
    * [FELIX-1427] - Service injection with Smart Proxies
    * [FELIX-1646] - Add @Handler annotation to declare handlers without metadata.xml
    * [FELIX-1906] - Allow calling a method when service properties of an already injected service are modified

** Wish
    * [FELIX-1940] - Add @Instance annotation to declare instances without metadata.xml


Changes from the 1.4.0 to 1.4.2
-------------------------------
** Bug
    * [FELIX-1411] - Issue on windows to find components inside bundle
    * [FELIX-1518] - iPOJO manipulator is really slow even when annotation are ignored


Changes from 1.2.0 to 1.4.0
---------------------------
** Bug
    * [FELIX-1302] - Manipulator never ignore annotations
    * [FELIX-1319] - Issue in the metadata overiding analysis in iPOJO annotations

** Improvement
    * Update parent pom
    * [FELIX-943] - Allow iPOJO manipulator to manipulate directories


Changes from 1.0.0 to 1.2.0
---------------------------
** Bug
    * [FELIX-788] - Failed to create object that extends super class with BundleContext argument

** Improvement
    * [FELIX-813] - Resolve XML-Schemas locally rather than from Internet
    * [FELIX-830] - Simplify the "id/parent" resolution to compute the metadata hierarchy during annotation processing
    * [FELIX-846] - Enhance the iPojo maven plugin to take metadata from pom.
    * [FELIX-876] - Specification auto import is not supported for simple component types


Changes from 0.8.0 to 1.0.0
---------------------------
** Bug
    * [FELIX-649] - "Expecting to find object/array on stack" Error when asking for instance of an iPOJO component
    * [FELIX-697] - Generation of a duplicated field when using generics
    * [FELIX-739] - iPOJO and annotations support when manipulating
    * [FELIX-751] - Wrong access for setter methods

** Improvement
    * [FELIX-655] - Add a 'from' attribute in the service dependencies
    * [FELIX-678] - Improve missing fields detection during the packaging process
    * [FELIX-687] - Support inner and nested classes
    * [FELIX-716] - Provide XML schemas for iPOJO descriptors


Version 0.8.0
-------------
    * Initial release
