FELIX-4092 Move 'annotation' module from 'runtime' to 'manipulator' project

* Moved project
* Introduced some properties for version references

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1488558 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/manipulator/annotations/changelog.txt b/ipojo/manipulator/annotations/changelog.txt
new file mode 100644
index 0000000..9427da4
--- /dev/null
+++ b/ipojo/manipulator/annotations/changelog.txt
@@ -0,0 +1,142 @@
+Changes from 1.8.6 to 1.8.10

+----------------------------

+

+** 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

diff --git a/ipojo/manipulator/annotations/pom.xml b/ipojo/manipulator/annotations/pom.xml
new file mode 100644
index 0000000..c060b57
--- /dev/null
+++ b/ipojo/manipulator/annotations/pom.xml
@@ -0,0 +1,78 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>felix-parent</artifactId>
+        <version>2.1</version>
+        <relativePath>../../../pom/pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.apache.felix.ipojo.annotations</artifactId>
+    <version>1.10.1-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>Apache Felix iPOJO Annotations</name>
+
+    <description>
+        iPOJO Annotation pack. contained annotations are used to define iPOJO component type.
+    </description>
+    <url>
+        http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html
+    </url>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>2.3.7</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-Name>Apache Felix iPOJO Annotations</Bundle-Name>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
+                        <Bundle-Description>iPOJO Annotations</Bundle-Description>
+                        <Bundle-DocURL>
+                            http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html
+                        </Bundle-DocURL>
+                        <Export-Package>org.apache.felix.ipojo.annotations,
+                            org.apache.felix.ipojo.handler.temporal,
+                            org.apache.felix.ipojo.handlers.jmx,
+                            org.apache.felix.ipojo.extender,
+                            org.apache.felix.ipojo.whiteboard,
+                            org.apache.felix.ipojo.handlers.event,
+                            org.apache.felix.ipojo.transaction
+                        </Export-Package>
+                    </instructions>
+                    <obrRepository>NONE</obrRepository>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/ipojo/manipulator/annotations/src/main/appended-resources/NOTICE b/ipojo/manipulator/annotations/src/main/appended-resources/NOTICE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/appended-resources/NOTICE
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Bind.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Bind.java
new file mode 100644
index 0000000..05a7a61
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Bind.java
@@ -0,0 +1,87 @@
+/* 

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+import java.util.Comparator;

+

+/**

+ * This annotation declares a bind method.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.METHOD)

+public @interface Bind {

+    

+    /**

+     * Set the dependency filter.

+     * Default : no filter

+     */

+    String filter() default "";

+    

+    /**

+     * Set if the dependency is an aggregate dependency.

+     * Default : false

+     */

+    boolean aggregate() default false;

+    

+    /**

+     * Set if the dependency is optional.

+     * Default : false

+     */

+    boolean optional() default false;

+    

+    /**

+     * Set the required specification.

+     * Default : empty (try to discover)

+     */

+    String specification() default "";

+    

+    /**

+     * Set the dependency id.

+     * Default : empty

+     */

+    String id() default "";

+    

+    /**

+     * Set the binding policy.

+     * Acceptable policy are dynamic, static and dynamic-priority.

+     * Default: dynamic.

+     */

+    String policy() default "dynamic";

+    

+    /**

+     * Set the comparator.

+     * The indicated class must implement {@link Comparator}

+     */

+    Class comparator() default Comparator.class;

+    

+    /**

+     * Set the from attribute.

+     */

+    String from() default "";

+

+    /**

+     * Set to true if the service dependency is injected

+     * as a proxy.

+     * Default: true

+     */

+    boolean proxy() default true;

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Component.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Component.java
new file mode 100644
index 0000000..28fbb2d
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Component.java
@@ -0,0 +1,96 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares a component.

+ * This annotation is mandatory to declares an iPOJO component.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.TYPE)

+public @interface Component {

+

+    /**

+     * Set if the component type is public.

+     * Default: true

+     * @deprecated renamed to publicFactory.

+     */

+    boolean public_factory() default true;

+

+    /**

+     * Set if the component type is public.

+     * Default: true

+     */

+    boolean publicFactory() default true;

+

+    /**

+     * Set the component type name.

+     * Default : implementation class name.

+     */

+    String name() default "";

+

+    /**

+     * Enable / Disable the architecture exposition.

+     * Default : false

+     */

+    boolean architecture() default false;

+

+    /**

+     * Set if the component is immediate.

+     * Default : false

+     */

+    boolean immediate() default false;

+

+    /**

+     * Set if the component must propagate received configuration to provided services.

+     * default: false

+     */

+    boolean propagation() default false;

+

+    /**

+     * Set the Managed Service PID.

+     * default no PID (i.e. the managed service will not be exposed).

+     */

+    String managedservice() default "";

+

+    /**

+     * Set the factory-method, if the pojo has to be created

+     * from a static method. The specified method must be a static

+     * method and return a pojo object.

+     * By default, iPOJO uses the 'regular' constructor.

+     * @deprecated now is called <tt>factoryMethod</tt>.

+     */

+    String factory_method() default "";

+

+    /**

+     * Set the factory-method, if the pojo has to be created

+     * from a static method. The specified method must be a static

+     * method and return a pojo object.

+     * By default, iPOJO uses the 'regular' constructor.

+     */

+    String factoryMethod() default "";

+

+    /**

+     * Set the version of the component type.

+     */

+    String version() default "";

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Controller.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Controller.java
new file mode 100644
index 0000000..e4bfaeb
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Controller.java
@@ -0,0 +1,32 @@
+/* 

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares a lifecycle controller.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.FIELD)

+public @interface Controller {

+    

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Handler.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Handler.java
new file mode 100644
index 0000000..7b8e4a4
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Handler.java
@@ -0,0 +1,53 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation declares a handler.
+ * This annotation is mandatory to declares an iPOJO handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface Handler {
+
+    /**
+     * Name of the handler (required).
+     */
+    String name();
+
+    /**
+     * Namespace of the handler (required).
+     */
+    String namespace();
+
+    /**
+     * Start-level of the handler.
+     * Default: 1.
+     */
+    int level() default 1;
+
+    /**
+     * Enable / Disable the architecture exposition.
+     * Default : false
+     */
+    boolean architecture() default false;
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/HandlerDeclaration.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/HandlerDeclaration.java
new file mode 100644
index 0000000..c4eaeaf
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/HandlerDeclaration.java
@@ -0,0 +1,36 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation is used to configure a handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface HandlerDeclaration {
+
+    /**
+     * The content of this attribute represents the XML 
+     * that would be used in the metadata.xml.
+     */
+    String value();
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Instantiate.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Instantiate.java
new file mode 100644
index 0000000..dba9d43
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Instantiate.java
@@ -0,0 +1,37 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation is used to create an 'empty' instance of the
+ * current component type.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface Instantiate {
+    
+    /**
+     * Optional attribute to set the instance name.
+     * Default: no name
+     */
+    String name() default ""; 
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Invalidate.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Invalidate.java
new file mode 100644
index 0000000..72a7c6c
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Invalidate.java
@@ -0,0 +1,31 @@
+/* 

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares an invalidate callback.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.METHOD)

+public @interface Invalidate {

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Modified.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Modified.java
new file mode 100644
index 0000000..ea18919
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Modified.java
@@ -0,0 +1,81 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+import java.util.Comparator;

+

+/**

+ * This annotation declares a modify method.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.METHOD)

+public @interface Modified {

+

+    /**

+     * Set the dependency filter.

+     * Default : no filter

+     */

+    String filter() default "";

+

+    /**

+     * Set if the dependency is an aggregate dependency.

+     * Default : false

+     */

+    boolean aggregate() default false;

+

+

+    /**

+     * Set if the dependency is optional.

+     * Default : false

+     */

+    boolean optional() default false;

+

+    /**

+     * Set the required specification.

+     * Default : empty (try to discover).

+     */

+    String specification() default "";

+

+    /**

+     * Set the dependency id.

+     * Default : empty.

+     */

+    String id() default "";

+

+    /**

+     * Set the binding policy.

+     * Acceptable policy are dynamic, static and dynamic-priority.

+     * Default: dynamic.

+     */

+    String policy() default "dynamic";

+

+    /**

+     * Set the comparator.

+     * The indicated class must implement {@link Comparator}

+     */

+    Class comparator() default Comparator.class;

+

+    /**

+     * Set the from attribute.

+     */

+    String from() default "";

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/PostRegistration.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/PostRegistration.java
new file mode 100644
index 0000000..2e6bac8
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/PostRegistration.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+
+/**
+ * This annotation declares a post-service-registration method.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.METHOD)
+public @interface PostRegistration {
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/PostUnregistration.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/PostUnregistration.java
new file mode 100644
index 0000000..428dff5
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/PostUnregistration.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+
+/**
+ * This annotation declares a post-service-unregistration method.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.METHOD)
+public @interface PostUnregistration {
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Property.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Property.java
new file mode 100644
index 0000000..a5ba338
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Property.java
@@ -0,0 +1,56 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares a component property.

+ * It can target both fields and methods.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER })

+public @interface Property {

+

+    /**

+     * Set property name.

+     * Default : empty

+     */

+    String name() default "";

+

+    /**

+     * Set property value.

+     * Default : empty

+     */

+    String value() default "";

+

+    /**

+     * Is the property mandatory?

+     * Default: false

+     */

+    boolean mandatory() default false;

+

+    /**

+     * Is the property immutable?

+     * Default: false

+     */

+    boolean immutable() default false;

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Provides.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Provides.java
new file mode 100644
index 0000000..c58c3ef
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Provides.java
@@ -0,0 +1,57 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+* This annotation declares that the component instances will provide a service.

+* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+*/

+@Target(ElementType.TYPE)

+public @interface Provides {

+

+    /**

+     * Set the provided specifications.

+     * Default : all implemented interfaces

+     */

+    Class[] specifications() default { };

+

+    /**

+     * Set the service object creation strategy.

+     * Two value are possible: SINGLETON, SERVICE, METHOD, INSTANCE or the strategy class name.

+     * SERVICE means OSGi Service Factory.

+     * METHOD delegates the creation to the factory-method of the component

+     * INSTANCE creates one service object per requiring instance

+     * for other strategies, specify the qualified name of the CreationStrategy class.

+     * Default : SINGLETON

+     */

+    String strategy() default "SINGLETON";

+

+    /**

+     * Allows adding static properties to the service.

+     * Nested properties are static service properties,

+     * so <b>must</b> contain the name and the value as

+     * they are not attached to a field.

+     * The array contains {@link StaticServiceProperty} elements.

+     * Default : No service properties

+     */

+    StaticServiceProperty[] properties() default {};

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Requires.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Requires.java
new file mode 100644
index 0000000..4ea2408
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Requires.java
@@ -0,0 +1,96 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Inherited;

+import java.lang.annotation.Target;

+import java.util.Comparator;

+

+/**

+ * This annotation declares a service requirement.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target({ ElementType.FIELD, ElementType.PARAMETER })

+@Inherited

+public @interface Requires {

+

+    /**

+     * Set the LDAP filter of the dependency.

+     * Default : no filter

+     */

+    String filter() default "";

+

+    /**

+     * Set if the dependency is optional.

+     * Default : false

+     */

+    boolean optional() default false;

+

+    /**

+     * Set the dependency id.

+     * Default : empty

+     */

+    String id() default "";

+

+    /**

+     * Enable / Disable nullable pattern.

+     * Default : true

+     */

+    boolean nullable() default true;

+

+    /**

+     * Set the default-implementation to use if the dependency is optional,

+     * and no providers are available.

+     * The class must implement the required service interface.

+     * Default : no default-implementation

+     */

+    Class defaultimplementation() default Class.class;

+

+    /**

+     * Set the binding policy.

+     * Acceptable policy are dynamic, static and dynamic-priority.

+     * Default: dynamic.

+     */

+    String policy() default "dynamic";

+

+    /**

+     * Set the comparator.

+     * The indicated class must implement {@link Comparator}

+     */

+    Class comparator() default Comparator.class;

+

+    /**

+     * Set the from attribute.

+     */

+    String from() default "";

+

+    /**

+     * Set the required service specification.

+     * This attribute is required for Collection field.

+     */

+    String specification() default "";

+

+    /**

+     * Set to true if the service dependency is injected

+     * as a proxy.

+     * Default: true

+     */

+    boolean proxy() default true;

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/ServiceController.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/ServiceController.java
new file mode 100644
index 0000000..bd0dd5f
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/ServiceController.java
@@ -0,0 +1,43 @@
+/* 

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares a service controller.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.FIELD)

+public @interface ServiceController {

+    

+    /**

+     * Sets the initial value of the controller.

+     */

+    boolean value() default true;

+    

+    

+    /**

+     * Sets the targeted specification.

+     * If not set, target all specifications.

+     */

+    Class specification() default Object.class;

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/ServiceProperty.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/ServiceProperty.java
new file mode 100644
index 0000000..ceba75f
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/ServiceProperty.java
@@ -0,0 +1,50 @@
+/* 

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares a service property.

+ * It can target both fields and methods.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.FIELD)

+public @interface ServiceProperty {

+    

+    /**

+     * Set the property name.

+     * Default : empty

+     */

+    String name() default "";

+    

+    /**

+     * Set the property value.

+     * Default : empty

+     */

+    String value() default "";

+    

+    /**

+     * Is the property mandatory?

+     * Default: false

+     */

+    boolean mandatory() default false;

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/StaticServiceProperty.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/StaticServiceProperty.java
new file mode 100644
index 0000000..c3adae1
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/StaticServiceProperty.java
@@ -0,0 +1,54 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares a static service property.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target({})

+public @interface StaticServiceProperty {

+

+    /**

+     * Set the property name.

+     * This name is mandatory for static properties.

+     */

+    String name();

+

+    /**

+     * Set the property value.

+     * Default : empty

+     */

+    String value() default "";

+

+    /**

+     * Is the property mandatory?

+     * Default: false

+     */

+    boolean mandatory() default false;

+

+    /**

+     * Set the type.

+     * This value is required only for static properties.

+     */

+    String type();

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Unbind.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Unbind.java
new file mode 100644
index 0000000..f34129f
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Unbind.java
@@ -0,0 +1,88 @@
+/* 

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+import java.util.Comparator;

+

+/**

+ * This annotation declares an unbind method.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.METHOD)

+public @interface Unbind {

+    

+    /**

+     * Set the dependency filter.

+     * Default : no filter

+     */

+    String filter() default "";

+    

+    /**

+     * Set if the dependency is an aggregate dependency.

+     * Default : false

+     */

+    boolean aggregate() default false;

+    

+    

+    /**

+     * Set if the dependency is optional.

+     * Default : false

+     */

+    boolean optional() default false;

+    

+    /**

+     * Set the required specification.

+     * Default : empty (try to discover).

+     */

+    String specification() default "";

+    

+    /**

+     * Set the dependency id.

+     * Default : empty.

+     */

+    String id() default "";

+    

+    /**

+     * Set the binding policy.

+     * Acceptable policy are dynamic, static and dynamic-priority.

+     * Default: dynamic.

+     */

+    String policy() default "dynamic";

+    

+    /**

+     * Set the comparator.

+     * The indicated class must implement {@link Comparator}

+     */

+    Class comparator() default Comparator.class;

+    

+    /**

+     * Set the from attribute.

+     */

+    String from() default "";

+

+    /**

+     * Set to true if the service dependency is injected

+     * as a proxy.

+     * Default: true

+     */

+    boolean proxy() default true;

+    

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Updated.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Updated.java
new file mode 100644
index 0000000..285d236
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Updated.java
@@ -0,0 +1,32 @@
+/* 

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares an updated callback.

+ * Updated callback are called after a reconfiguration.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.METHOD)

+public @interface Updated {

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Validate.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Validate.java
new file mode 100644
index 0000000..50e239f
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/annotations/Validate.java
@@ -0,0 +1,31 @@
+/* 

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+package org.apache.felix.ipojo.annotations;

+

+import java.lang.annotation.ElementType;

+import java.lang.annotation.Target;

+

+/**

+ * This annotation declares a validate callback.

+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>

+ */

+@Target(ElementType.METHOD)

+public @interface Validate {

+

+}

diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/extender/Extender.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/extender/Extender.java
new file mode 100644
index 0000000..6c1af00
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/extender/Extender.java
@@ -0,0 +1,49 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.extender;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Extender pattern Handler annotation.
+ * Allows configuring an extender pattern.
+ * Be aware that despite is it provided in the annotations jar, 
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface Extender {
+    
+    /**
+     * Sets the looked Manifest entry.
+     */
+    String extension();
+    
+    /**
+     * Sets the on service arrival callback.
+     */
+    String onArrival();
+    
+    /**
+     * Sets the on service departure callback.
+     */
+    String onDeparture();
+    
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handler/temporal/Requires.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handler/temporal/Requires.java
new file mode 100644
index 0000000..3e9e03a
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handler/temporal/Requires.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handler.temporal;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Temporal dependency annotation.
+ * Allows specifying a temporal dependency.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ * @deprecated replaced by {@link Temporal}
+ */
+@Target(ElementType.FIELD)
+@Deprecated
+public @interface Requires {
+
+    /**
+     * Set the LDAP filter of the dependency.
+     * Default : no filter
+     */
+    String filter() default "";
+
+    /**
+     * Timeout of the dependency.
+     * Default : true
+     */
+    long timeout() default 3000;
+
+    /**
+     * Set the on timeout action.
+     * Supports null, nullable, empty, and default-implementation.
+     * In this latter case, you must specify the qualified class name
+     * of the default-implementation (instead of default-implementation).
+     * Default: no action (i.e throws a runtime exception)
+     */
+    String onTimeout() default "";
+
+    /**
+     * Set the service specification (for Collection fields).
+     * This attribute is mandatory for Collections.
+     */
+    String specification() default "";
+
+    /**
+     * Inject a proxy instead of the real object.
+     * This allows passing this reference to collaborators.
+     * Default: false
+     */
+    boolean proxy() default false;
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handler/temporal/Temporal.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handler/temporal/Temporal.java
new file mode 100644
index 0000000..c123cda
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handler/temporal/Temporal.java
@@ -0,0 +1,75 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handler.temporal;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Temporal dependency annotation.
+ * Allows specifying a temporal dependency.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.FIELD)
+public @interface Temporal {
+
+    /**
+     * Set the dependency id.
+     * Default: empty, will use the field name.
+     */
+    String id() default "";
+
+    /**
+     * Set the LDAP filter of the dependency.
+     * Default: no filter
+     */
+    String filter() default "";
+
+    /**
+     * Timeout of the dependency.
+     * Default: 3000 ms.
+     */
+    long timeout() default 3000;
+
+    /**
+     * Set the on timeout action.
+     * Supports null, nullable, empty, and default-implementation.
+     * In this latter case, you must specify the qualified class name
+     * of the default-implementation (instead of default-implementation).
+     * Default: no action (i.e throws a runtime exception)
+     */
+    String onTimeout() default "";
+
+    /**
+     * Set the service specification (for Collection fields).
+     * This attribute is mandatory for Collections.
+     */
+    String specification() default "";
+
+    /**
+     * Inject a proxy instead of the real object.
+     * This allows passing this reference to collaborators.
+     * Default: false
+     */
+    boolean proxy() default false;
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Publisher.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Publisher.java
new file mode 100644
index 0000000..466d6f0
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Publisher.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.event;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+
+/**
+ * Event Admin Publisher handler.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ * @deprecated replaced by Publishes
+ */
+@Target(ElementType.FIELD)
+public @interface Publisher {
+
+    /**
+     * Sets the publisher name.
+     */
+    String name();
+
+    /**
+     * Sets topics on which event are sent.
+     * The topics are separated by a ',' such as in
+     * "foo, bar".
+     * Default : no topics (configured in the instance configuration)
+     */
+    String topics() default "";
+
+    /**
+     * Enables/Disables synchronous sending.
+     * Default : false (asynchronous)
+     */
+    boolean synchronous() default false;
+
+    /**
+     * Sets the data key in which the data is
+     * put.
+     * Default : user.data
+     * @deprecated replaced by dataKey
+     */
+    String data_key() default "user.data";
+
+    /**
+     * Sets the data key in which the data is
+     * put.
+     * Default : user.data
+     */
+    String dataKey() default "user.data";
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Publishes.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Publishes.java
new file mode 100644
index 0000000..5102df4
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Publishes.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.event;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+
+/**
+ * Event Admin Publisher handler.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.FIELD)
+public @interface Publishes {
+
+    /**
+     * Sets the publisher name.
+     */
+    String name();
+
+    /**
+     * Sets topics on which event are sent.
+     * The topics are separated by a ',' such as in
+     * "foo, bar".
+     * Default : no topics (configured in the instance configuration)
+     */
+    String topics() default "";
+
+    /**
+     * Enables/Disables synchronous sending.
+     * Default : false (asynchronous)
+     */
+    boolean synchronous() default false;
+
+    /**
+     * Sets the data key in which the data is
+     * put.
+     * Default : user.data
+     */
+    String dataKey() default "user.data";
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Subscriber.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Subscriber.java
new file mode 100644
index 0000000..70cb7a8
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/event/Subscriber.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.event;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+
+/**
+ * Event Admin Subscriber handler.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.METHOD)
+public @interface Subscriber {
+
+    /**
+     * Sets the subscriber name.
+     */
+    String name();
+
+    /**
+     * Sets topics on which event are received.
+     * The topics are separated by a ',' such as in
+     * "foo, bar".
+     * Default : no topics (configured in the instance configuration)
+     */
+    String topics() default "";
+
+    /**
+     * Sets the data key in which the data is
+     * stored.
+     * Default : no key
+     * @deprecated replaced by dataKey
+     */
+    String data_key() default "";
+
+    /**
+     * Sets the data type (type of the received data).
+     * Default : no type.
+     * @deprecated replaced by dataType
+     */
+    String data_type() default "";
+
+    /**
+     * Sets the data key in which the data is
+     * stored.
+     * Default : no key
+     */
+    String dataKey() default "";
+
+    /**
+     * Sets the data type (type of the received data).
+     * Default : no type.
+     */
+    String dataType() default "";
+
+
+    /**
+     * Sets the event filter. Only event matching with the
+     * specified LDAP filter are received.
+     * default : no filter;
+     */
+    String filter() default "";
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Config.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Config.java
new file mode 100644
index 0000000..9a0d5e9
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Config.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.jmx;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * JMX Handler annotation.
+ * Allows exposing the instances as a JMX MBean.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ * @deprecated replaced by {@link JMXBean}
+ */
+@Target(ElementType.TYPE)
+public @interface Config {
+
+    /**
+     * Enables or Disables MOSGi usage.
+     * If MOSGi is used, MBeans are exposed with the MOSGi mechanism.
+     * Otherwise the MBean Platform Server is used.
+     * Default : false
+     */
+    boolean usesMOSGi() default false;
+
+    /**
+     * Sets the MBean object name.
+     * Default : 'package-name:factory-name:instance-name'.
+     */
+    String objectname() default "";
+
+    /**
+     * Sets the MBean domain.
+     * Default : 'package-name'
+     */
+    String domain() default "";
+
+    /**
+     * Sets the MBean name.
+     * Default : 'instance-name'
+     */
+    String name() default "";
+
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXBean.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXBean.java
new file mode 100644
index 0000000..ca31185
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXBean.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.jmx;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * JMX Handler annotation.
+ * Allows exposing the instances as a JMX MBean.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface JMXBean {
+
+    /**
+     * Enables or Disables MOSGi usage.
+     * If MOSGi is used, MBeans are exposed with the MOSGi mechanism.
+     * Otherwise the MBean Platform Server is used.
+     * Default : false
+     */
+    boolean usesMOSGi() default false;
+
+    /**
+     * Sets the MBean object name.
+     * Default : 'package-name:factory-name:instance-name'.
+     */
+    String objectname() default "";
+
+    /**
+     * Sets the MBean domain.
+     * Default : 'package-name'
+     */
+    String domain() default "";
+
+    /**
+     * Sets the MBean name.
+     * Default : 'instance-name'
+     */
+    String name() default "";
+
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXMethod.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXMethod.java
new file mode 100644
index 0000000..27ca89a
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXMethod.java
@@ -0,0 +1,42 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.jmx;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * JMX Method annotation.
+ * Allows exposing methods in the MBean.
+ * This annotation must be used only if the {@link Config} annotation
+ * is used.
+ * Be aware that despite is it provided in the annotations jar, 
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.METHOD)
+public @interface JMXMethod {
+        
+    /**
+     * Gets the method description.
+     * Default : no description
+     */
+    String description() default "";
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXProperty.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXProperty.java
new file mode 100644
index 0000000..1b31c7c
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/JMXProperty.java
@@ -0,0 +1,55 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.jmx;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * JMX Property annotation.
+ * Allows exposing properties in the MBean.
+ * This annotation must be used only if the {@link Config} annotation
+ * is used.
+ * Be aware that despite is it provided in the annotations jar, 
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.FIELD)
+public @interface JMXProperty {
+        
+    /**
+     * Sets the property name.
+     */
+    String name();
+    
+    /**
+     * Sets the access permission.
+     * Possible values are 'r' (default) or 'w'.
+     * 'w' implies read and write access.
+     */
+    String rights() default "r";
+    
+    /**
+     * Enables notification on the current property.
+     * Notifications are disable by default.
+     */
+    boolean notification() default false;
+    
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Method.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Method.java
new file mode 100644
index 0000000..4fb0cd1
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Method.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.jmx;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * JMX Method annotation.
+ * Allows exposing methods in the MBean.
+ * This annotation must be used only if the {@link Config} annotation
+ * is used.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ * @deprecated replaced by {@link JMXMethod}
+ */
+@Target(ElementType.METHOD)
+public @interface Method {
+
+    /**
+     * Gets the method description.
+     * Default : no description
+     */
+    String description() default "";
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Property.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Property.java
new file mode 100644
index 0000000..6de9e83
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/handlers/jmx/Property.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.handlers.jmx;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * JMX Property annotation.
+ * Allows exposing properties in the MBean.
+ * This annotation must be used only if the {@link Config} annotation
+ * is used.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ * @deprecated replaced by {@link JMXProperty}
+ */
+@Target(ElementType.FIELD)
+public @interface Property {
+
+    /**
+     * Sets the property name.
+     */
+    String name();
+
+    /**
+     * Sets the access permission.
+     * Possible values are 'r' (default) or 'w'.
+     * 'w' implies read and write access.
+     */
+    String rights() default "r";
+
+    /**
+     * Enables notification on the current property.
+     * Notifications are disable by default.
+     */
+    boolean notification() default false;
+
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transaction.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transaction.java
new file mode 100644
index 0000000..c70762c
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transaction.java
@@ -0,0 +1,51 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.transaction;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Transaction Handler annotation.
+ * Allows the declaration of transactionnal methods
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface Transaction {
+
+    /**
+     * Sets the Transaction field. The specified field must be of the type
+     * Transaction.
+     */
+    String field() default "";
+
+    /**
+     * Sets the method called when a transaction is committed.
+     */
+    String oncommit() default "";
+
+    /**
+     * Sets the method called when a transaction is rolled back.
+     */
+    String onrollback() default "";
+
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transactional.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transactional.java
new file mode 100644
index 0000000..ba41f5e
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transactional.java
@@ -0,0 +1,56 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.transaction;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Transactionnal Method annotation.
+ * Allows the declaration of transactionnal method.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.METHOD)
+public @interface Transactional {
+
+    /**
+     * Sets the transaction timeout.
+     */
+    long timeout() default 0;;
+
+    /**
+     * Sets the transaction propagation policy.
+     * Supported values are : requires mandatory, notsupported, never, requiresnew.
+     */
+    String propagation() default "requires";
+
+    /**
+     * Sets the exceptions that do not rollback the current transaction.
+     */
+    String[] norollbackfor() default { };
+
+    /**
+     * Sets if the transaction rollback throws an exception.
+     */
+    boolean exceptiononrollback() default false;
+
+
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/whiteboard/Wbp.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/whiteboard/Wbp.java
new file mode 100644
index 0000000..570ade1
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/whiteboard/Wbp.java
@@ -0,0 +1,54 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.whiteboard;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Whiteboard pattern Handler annotation.
+ * Allows configuring a whiteboard pattern.
+ * Be aware that despite is it provided in the annotations jar, 
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface Wbp {
+    
+    /**
+     * Sets the whiteboard pattern filter.
+     */
+    String filter();
+    
+    /**
+     * Sets the on service arrival callback.
+     */
+    String onArrival();
+    
+    /**
+     * Sets the on service departure callback.
+     */
+    String onDeparture();
+    
+    /**
+     * Sets the on service modification callback.
+     * Default : no callback.
+     */
+    String onModification() default "";
+}
diff --git a/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/whiteboard/Whiteboards.java b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/whiteboard/Whiteboards.java
new file mode 100644
index 0000000..d00f1b5
--- /dev/null
+++ b/ipojo/manipulator/annotations/src/main/java/org/apache/felix/ipojo/whiteboard/Whiteboards.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.whiteboard;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Whiteboard pattern Handler annotation.
+ * Allows configuring several whiteboard patterns.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface Whiteboards {
+
+    /**
+     * Whiteboards list.
+     */
+    Wbp[] whiteboards() default {};
+}
diff --git a/ipojo/manipulator/bnd-ipojo-plugin/pom.xml b/ipojo/manipulator/bnd-ipojo-plugin/pom.xml
index cc68e8f..645e44b 100644
--- a/ipojo/manipulator/bnd-ipojo-plugin/pom.xml
+++ b/ipojo/manipulator/bnd-ipojo-plugin/pom.xml
@@ -40,12 +40,12 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-            <version>1.10.1-SNAPSHOT</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.ipojo.annotations</artifactId>
-            <version>1.8.0</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
diff --git a/ipojo/manipulator/ipojo-ant-task/pom.xml b/ipojo/manipulator/ipojo-ant-task/pom.xml
index bdcf267..9da8ca4 100644
--- a/ipojo/manipulator/ipojo-ant-task/pom.xml
+++ b/ipojo/manipulator/ipojo-ant-task/pom.xml
@@ -46,7 +46,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-            <version>1.10.1-SNAPSHOT</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>xerces</groupId>
diff --git a/ipojo/manipulator/manipulator/pom.xml b/ipojo/manipulator/manipulator/pom.xml
index 89eb5a0..9b12e67 100644
--- a/ipojo/manipulator/manipulator/pom.xml
+++ b/ipojo/manipulator/manipulator/pom.xml
@@ -51,7 +51,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.ipojo.annotations</artifactId>
-            <version>1.8.0</version>
+            <version>${project.version}</version>
         </dependency>
       <dependency>
           <groupId>org.mockito</groupId>
diff --git a/ipojo/manipulator/maven-ipojo-plugin/pom.xml b/ipojo/manipulator/maven-ipojo-plugin/pom.xml
index f9aa76d..d31af7e 100644
--- a/ipojo/manipulator/maven-ipojo-plugin/pom.xml
+++ b/ipojo/manipulator/maven-ipojo-plugin/pom.xml
@@ -76,7 +76,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-            <version>1.10.1-SNAPSHOT</version>
+            <version>${project.version}</version>
         </dependency>
     </dependencies>
     <build>
diff --git a/ipojo/manipulator/online-manipulator/pom.xml b/ipojo/manipulator/online-manipulator/pom.xml
index 3b5e62e..a3eac0b 100644
--- a/ipojo/manipulator/online-manipulator/pom.xml
+++ b/ipojo/manipulator/online-manipulator/pom.xml
@@ -132,7 +132,7 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-ipojo-plugin</artifactId>
-                <version>1.10.1-SNAPSHOT</version>
+                <version>${project.version}</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/ipojo/manipulator/pom.xml b/ipojo/manipulator/pom.xml
index c55d536..29bddcc 100644
--- a/ipojo/manipulator/pom.xml
+++ b/ipojo/manipulator/pom.xml
@@ -35,6 +35,7 @@
     </description>
 
     <modules>
+        <module>annotations</module>
         <module>manipulator</module>
         <module>manipulator-it</module>
         <module>ipojo-ant-task</module>