Changes from the 1.8.6 to 1.8.10
--------------------------------

** 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
