Fix FELIX-2308
Fix FELIX-2309
Update versions


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@939354 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java
index 9bcaf8a..66f9a4f 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java
@@ -1,4 +1,4 @@
-/* 
+/*
  * 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
@@ -231,7 +231,7 @@
      * @param pojo : pojo instance on which calling the bind method.
      */
     protected void onObjectCreation(Object pojo) {
-                
+
         ServiceReference[] refs;
         synchronized (this) {
             if (!m_isStarted) { return; }
@@ -333,6 +333,31 @@
         }
     }
 
+    private Object createNullableObject() {
+    	 // To load the proxy we use the POJO class loader. Indeed, this classloader imports iPOJO (so can access to Nullable) and has
+        // access to the service specification.
+    	try {
+            ClassLoader cl = new NullableClassLoader(
+                    getHandler().getInstanceManager().getClazz().getClassLoader(),
+                    getSpecification().getClassLoader());
+
+            m_nullable =
+                Proxy.newProxyInstance(cl, new Class[] {
+                        getSpecification(), Nullable.class }, new NullableObject()); // NOPMD
+
+        } catch (NoClassDefFoundError e) {
+            // A NoClassDefFoundError is thrown if the specification uses a class not accessible by the actual instance.
+            // It generally comes from a missing import.
+            throw new IllegalStateException("Cannot create the Nullable object, a referenced class cannot be loaded: " + e.getMessage());
+        } catch (Throwable e) { // Catch any other exception that can occurs
+            throw new IllegalStateException(
+                    "Cannot create the Nullable object, an unexpected error occurs: "
+                            + e.getMessage());
+        }
+
+        return m_nullable;
+    }
+
     /**
      * Start the dependency.
      */
@@ -342,26 +367,7 @@
             if (m_di == null) {
                 // If nullable are supported, create the nullable object.
                 if (m_supportNullable) {
-                    // To load the proxy we use the POJO class loader. Indeed, this classloader imports iPOJO (so can access to Nullable) and has
-                    // access to the service specification.
-                    try {
-                        ClassLoader cl = new NullableClassLoader(
-                                getHandler().getInstanceManager().getClazz().getClassLoader(), 
-                                getSpecification().getClassLoader());
-                        
-                        m_nullable =
-                            Proxy.newProxyInstance(cl, new Class[] {
-                                    getSpecification(), Nullable.class }, new NullableObject()); // NOPMD
-                        
-                    } catch (NoClassDefFoundError e) {
-                        // A NoClassDefFoundError is thrown if the specification uses a class not accessible by the actual instance.
-                        // It generally comes from a missing import.
-                        throw new IllegalStateException("Cannot create the Nullable object, a referenced class cannot be loaded: " + e.getMessage());
-                    } catch (Throwable e) { // Catch any other exception that can occurs
-                        throw new IllegalStateException(
-                                "Cannot create the Nullable object, an unexpected error occurs: "
-                                        + e.getMessage());
-                    }
+                	createNullableObject();
                 }
             } else {
                 // Create the default-implementation object.
@@ -617,6 +623,7 @@
             if (refs == null) {
                 if (m_nullable == null && m_supportNullable) {
                     m_handler.warn("[" + m_handler.getInstanceManager().getInstanceName() + "] The dependency is not optional, however no service object can be injected in " + m_field + " -> " + getSpecification().getName());
+                    createNullableObject();
                 }
                 usage.m_object = m_nullable; // Add null if the Nullable pattern is disable.
             } else {
@@ -783,21 +790,21 @@
         setAggregate(true);
         m_type = type;
     }
-    
+
     /**
      * Classloader for nullable objects.
      */
     private class NullableClassLoader extends ClassLoader {
        /**
-        * Component classloader. 
+        * Component classloader.
         */
         private ClassLoader m_component;
-       
+
        /**
-        * Specification classloader. 
+        * Specification classloader.
         */
         private ClassLoader m_specification;
-       
+
         /**
          * Creates a NullableClassLoader.
          * @param cmp the component class loader.
@@ -807,7 +814,7 @@
             m_component = cmp;
             m_specification = spec;
         }
-        
+
         /**
          * Loads the given class.
          * This method uses the classloader of the component class
@@ -824,8 +831,8 @@
                 return m_specification.loadClass(name);
             }
         }
-        
-       
+
+
     }
 
     /**
@@ -904,17 +911,17 @@
          * HashCode method.
          */
         private Method m_hashCodeMethod;
-        
+
         /**
          * Equals method.
          */
         private Method m_equalsMethod;
-        
+
         /**
-         * toStirng method. 
+         * toStirng method.
          */
         private Method m_toStringMethod;
-        
+
         /**
          * Creates a DynamicProxyFactory.
          */
@@ -928,7 +935,7 @@
                 throw new NoSuchMethodError(e.getMessage());
             }
         }
-        
+
         /**
          * Creates a proxy object for the given specification. The proxy
          * uses the given dependency to get the service object.
@@ -967,7 +974,7 @@
                             "Unexpected Object method dispatched: " + method);
                 }
             }
-            
+
             return method.invoke(svc, args);
         }
 
diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java
index 180ac02..52c11c2 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/DependencyModel.java
@@ -1,4 +1,4 @@
-/* 

+/*

  * 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

@@ -38,7 +38,7 @@
 

 /**

  * Abstract dependency model.

- * This class is the parent class of every service dependency. It manages the most 

+ * This class is the parent class of every service dependency. It manages the most

  * part of dependency management. This class creates an interface between the service

  * tracker and the concrete dependency.

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

@@ -60,29 +60,29 @@
     public static final int UNRESOLVED = 0;

 

     /**

-     * Dependency state : RESOLVED. 

+     * Dependency state : RESOLVED.

      * A dependency is resolved if the dependency is optional or at least one

      * provider is available.

      */

     public static final int RESOLVED = 1;

 

     /**

-     * Binding policy : Dynamic. 

+     * Binding policy : Dynamic.

      * In this policy, services can appears and departs without special treatment.

      */

     public static final int DYNAMIC_BINDING_POLICY = 0;

 

     /**

-     * Binding policy : Static. 

+     * Binding policy : Static.

      * Once a service is used, if this service disappears the dependency becomes

      * {@link DependencyModel#BROKEN}. The instance needs to be recreated.

      */

     public static final int STATIC_BINDING_POLICY = 1;

 

     /**

-     * Binding policy : Dynamic-Priority. 

+     * Binding policy : Dynamic-Priority.

      * In this policy, services can appears and departs. However, once a service

-     * with a highest ranking (according to the used comparator) appears, this 

+     * with a highest ranking (according to the used comparator) appears, this

      * new service is re-injected.

      */

     public static final int DYNAMIC_PRIORITY_BINDING_POLICY = 2;

@@ -109,7 +109,7 @@
     private Comparator m_comparator;

 

     /**

-     * The LDAP filter object selecting service references 

+     * The LDAP filter object selecting service references

      * from the set of providers providing the required specification.

      */

     private Filter m_filter;

@@ -121,7 +121,7 @@
     private BundleContext m_context;

 

     /**

-     * Listener object on which invoking the {@link DependencyStateListener#validate(DependencyModel)} 

+     * Listener object on which invoking the {@link DependencyStateListener#validate(DependencyModel)}

      * and {@link DependencyStateListener#invalidate(DependencyModel)} methods.

      */

     private final DependencyStateListener m_listener;

@@ -143,12 +143,12 @@
     private Tracker m_tracker;

 

     /**

-     * The list of matching service references. This list is a 

-     * subset of tracked references. This set is computed according 

+     * The list of matching service references. This list is a

+     * subset of tracked references. This set is computed according

      * to the filter and the {@link DependencyModel#match(ServiceReference)} method.

      */

     private final List m_matchingRefs = new ArrayList();

-    

+

     /**

      * The instance requiring the service.

      */

@@ -165,7 +165,7 @@
      * Creates a DependencyModel.

      * If the dependency has no comparator and follows the

      * {@link DependencyModel#DYNAMIC_PRIORITY_BINDING_POLICY} policy

-     * the OSGi Service Reference Comparator is used. 

+     * the OSGi Service Reference Comparator is used.

      * @param specification the required specification

      * @param aggregate is the dependency aggregate ?

      * @param optional is the dependency optional ?

@@ -221,7 +221,7 @@
         ungetAllServices();

         m_state = UNRESOLVED;

     }

-    

+

     /**

      * Ungets all 'get' service references.

      * This also clears the service object map.

@@ -244,19 +244,19 @@
     }

 

     /**

-     * Is the reference set frozen (cannot change anymore)? 

+     * Is the reference set frozen (cannot change anymore)?

      * This method must be override by concrete dependency to support

      * the static binding policy. In fact, this method allows optimizing

      * the static dependencies to become frozen only when needed.

-     * This method returns <code>false</code> by default. 

+     * This method returns <code>false</code> by default.

      * The method must always return <code>false</code> for non-static dependencies.

      * @return <code>true</code> if the reference set is frozen.

      */

     public boolean isFrozen() {

         return false;

     }

-    

-    

+

+

     /**

      * Unfreezes the dependency.

      * This method must be overide by concrete dependency to support

@@ -269,7 +269,7 @@
     /**

      * Does the service reference match ? This method must be override by

      * concrete dependencies if they need advanced testing on service reference

-     * (that cannot be expressed in the LDAP filter). By default this method 

+     * (that cannot be expressed in the LDAP filter). By default this method

      * returns <code>true</code>.

      * @param ref the tested reference.

      * @return <code>true</code> if the service reference matches.

@@ -313,7 +313,7 @@
     }

 

     /**

-     * Service tracker adding service callback. 

+     * Service tracker adding service callback.

      * It accepts the service only if the dependency isn't broken or frozen.

      * @param ref the arriving service reference.

      * @return <code>true</code> if the reference must be tracked.

@@ -324,7 +324,7 @@
     }

 

     /**

-     * Service Tracker added service callback. 

+     * Service Tracker added service callback.

      * If the service matches (against the filter and the {@link DependencyModel#match(ServiceReference)},

      * manages the provider arrival.

      * @param ref : new references.

@@ -336,10 +336,10 @@
         }

         // Do not store the service if it doesn't match.

     }

-    

+

     /**

      * Checks if the given service reference match the current filter.

-     * This method aims to avoid calling {@link Filter#match(ServiceReference)} 

+     * This method aims to avoid calling {@link Filter#match(ServiceReference)}

      * method when manipulating a composite reference. In fact, this method thrown

      * a {@link ClassCastException} on Equinox.

      * @param ref the service reference to check.

@@ -359,7 +359,7 @@
     }

 

     /**

-     * Manages the arrival of a new service reference. 

+     * Manages the arrival of a new service reference.

      * The reference is valid and matches the filter and the {@link DependencyModel#match(ServiceReference)}

      * method. This method has different behavior according to the binding policy.

      * @param ref the new reference

@@ -412,8 +412,8 @@
     }

 

     /**

-     * Service tracker removed service callback. 

-     * A service provider goes away. The depart needs to be managed only if the 

+     * Service tracker removed service callback.

+     * A service provider goes away. The depart needs to be managed only if the

      * reference was used.

      * @param ref the leaving service reference

      * @param arg1 the service object if the service was already get

@@ -433,7 +433,7 @@
     private void manageDeparture(ServiceReference ref, Object obj) {

         // Unget the service reference

         ungetService(ref);

-        

+

         // If we already get this service and the binding policy is static, the dependency becomes broken

         if (isFrozen() && obj != null) {

             if (m_state != BROKEN) {

@@ -478,10 +478,10 @@
     }

 

     /**

-     * Service tracker modified service callback. 

-     * This method must handle if the modified service should be considered as 

+     * Service tracker modified service callback.

+     * This method must handle if the modified service should be considered as

      * a depart or an arrival.

-     * According to the dependency filter, a service can now match or can no match 

+     * According to the dependency filter, a service can now match or can no match

      * anymore.

      * @param ref the modified reference

      * @param arg1 the service object if already get.

@@ -507,7 +507,7 @@
 

     /**

      * Gets the next matching service reference.

-     * @return <code>null</code> if no more provider is available, 

+     * @return <code>null</code> if no more provider is available,

      * else returns the first reference from the matching set.

      */

     public ServiceReference getServiceReference() {

@@ -522,7 +522,7 @@
 

     /**

      * Gets matching service references.

-     * @return the sorted (if a comparator is used) array of matching service 

+     * @return the sorted (if a comparator is used) array of matching service

      * references, <code>null</code> if no references are available.

      */

     public ServiceReference[] getServiceReferences() {

@@ -572,22 +572,22 @@
     }

 

     /**

-     * Concrete dependency callback. 

-     * This method is called when a new service needs to be 

+     * Concrete dependency callback.

+     * This method is called when a new service needs to be

      * re-injected in the underlying concrete dependency.

      * @param ref the service reference to inject.

      */

     public abstract void onServiceArrival(ServiceReference ref);

 

     /**

-     * Concrete dependency callback. 

+     * Concrete dependency callback.

      * This method is called when a used service (already injected) is leaving.

      * @param ref the leaving service reference.

      */

     public abstract void onServiceDeparture(ServiceReference ref);

-    

+

     /**

-     * Concrete dependency callback. 

+     * Concrete dependency callback.

      * This method is called when a used service (already injected) is modified.

      * @param ref the modified service reference.

      */

@@ -609,7 +609,7 @@
                 onServiceDeparture((ServiceReference) m_matchingRefs.get(1));

                 onServiceArrival(ref);

             }

-            

+

         } else {

             // It's a modification...

             onServiceModification(ref);

@@ -617,7 +617,7 @@
     }

 

     /**

-     * Concrete dependency callback. 

+     * Concrete dependency callback.

      * This method is called when the dependency is reconfigured and when this

      * reconfiguration implies changes on the matching service set ( and by the

      * way on the injected service).

@@ -627,7 +627,7 @@
     public abstract void onDependencyReconfiguration(ServiceReference[] departs, ServiceReference[] arrivals);

 

     /**

-     * Calls the listener callback to notify the new state of the current 

+     * Calls the listener callback to notify the new state of the current

      * dependency.

      */

     private void invalidate() {

@@ -635,7 +635,7 @@
     }

 

     /**

-     * Calls the listener callback to notify the new state of the current 

+     * Calls the listener callback to notify the new state of the current

      * dependency.

      */

     private void validate() {

@@ -659,7 +659,7 @@
     }

 

     /**

-     * Sets the required specification of this service dependency. 

+     * Sets the required specification of this service dependency.

      * This operation is not supported if the dependency tracking has already begun.

      * @param specification the required specification.

      */

@@ -791,7 +791,7 @@
 

     /**

      * Returns the dependency filter (String form).

-     * @return the String form of the LDAP filter used by this dependency, 

+     * @return the String form of the LDAP filter used by this dependency,

      * <code>null</code> if not set.

      */

     public String getFilter() {

@@ -803,7 +803,7 @@
     }

 

     /**

-     * Sets the aggregate attribute of the current dependency. 

+     * Sets the aggregate attribute of the current dependency.

      * If the tracking is opened, it will call arrival and departure callbacks.

      * @param isAggregate the new aggregate attribute value.

      */

@@ -863,7 +863,7 @@
     }

 

     /**

-     * Sets the binding policy. 

+     * Sets the binding policy.

      * Not yet supported.

      */

     public void setBindingPolicy() {

@@ -875,7 +875,7 @@
         m_comparator = cmp;

         // NOTE: the array will be sorted at the next get.

     }

-    

+

     /**

      * Gets the used comparator name.

      * <code>Null</code> if no comparator (i.e. the OSGi one is used).

@@ -911,31 +911,30 @@
         Object svc =  m_tracker.getService(ref);

         if (svc instanceof IPOJOServiceFactory) {

             Object obj =  ((IPOJOServiceFactory) svc).getService(m_instance);

-            m_serviceObjects.put(ref, obj);

+            m_serviceObjects.put(ref, svc); // We store the factory !

             return obj;

         } else {

             m_serviceObjects.put(ref, svc);

             return svc;

         }

     }

-    

+

     /**

      * Ungets a used service reference.

      * @param ref the reference to unget.

      */

     public void ungetService(ServiceReference ref) {

-        Object svc = m_tracker.getService(ref); // Get the service object

         m_tracker.ungetService(ref);

         Object obj = m_serviceObjects.remove(ref);  // Remove the service object

-        if (svc instanceof IPOJOServiceFactory) {

-            ((IPOJOServiceFactory) svc).ungetService(m_instance, obj);

+        if (obj != null  && obj instanceof IPOJOServiceFactory) {

+            ((IPOJOServiceFactory) obj).ungetService(m_instance, obj);

         }

     }

 

     /**

      * Helper method parsing the comparator attribute and returning the

      * comparator object. If the 'comparator' attribute is not set, this method

-     * returns null. If the 'comparator' attribute is set to 'osgi', this method 

+     * returns null. If the 'comparator' attribute is set to 'osgi', this method

      * returns the normal OSGi comparator. In other case, it tries to create

      * an instance of the declared comparator class.

      * @param dep the Element describing the dependency

@@ -984,9 +983,9 @@
     }

 

     /**

-     * Helper method parsing the binding policy. 

-     * If the 'policy' attribute is not set in the dependency, the method returns 

-     * the 'DYNAMIC BINDING POLICY'. Accepted policy values are : dynamic, 

+     * Helper method parsing the binding policy.

+     * If the 'policy' attribute is not set in the dependency, the method returns

+     * the 'DYNAMIC BINDING POLICY'. Accepted policy values are : dynamic,

      * dynamic-priority and static.

      * @param dep the Element describing the dependency

      * @return the policy attached to this dependency

diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Tracker.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Tracker.java
index 0989734..cea8d3b 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Tracker.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Tracker.java
@@ -1,4 +1,4 @@
-/* 

+/*

  * 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

@@ -64,31 +64,31 @@
     protected String m_listenerFilter;

 

     /**

-     * The class name to be tracked. If this field is set, then we are 

+     * The class name to be tracked. If this field is set, then we are

      * tracking by class name.

      */

     private String m_trackClass;

 

     /**

-     * The reference to be tracked. If this field is set, then we are 

+     * The reference to be tracked. If this field is set, then we are

      * tracking a single ServiceReference.

      */

     private ServiceReference m_trackReference;

 

     /**

-     * The tracked services: ServiceReference object -> customized. 

+     * The tracked services: ServiceReference object -> customized.

      *Object and ServiceListener object

      */

     private Tracked m_tracked;

 

     /**

-     * The cached ServiceReference for getServiceReference. 

+     * The cached ServiceReference for getServiceReference.

      * This field is volatile since it is accessed by multiple threads.

      */

     private volatile ServiceReference m_cachedReference;

 

     /**

-     * The cached service object for getService. This field is volatile 

+     * The cached service object for getService. This field is volatile

      * since it is accessed by multiple threads.

      */

     private volatile Object m_cachedService;

@@ -124,7 +124,7 @@
      * @param context the BundleContext object against which the tracking is done.

      * @param clazz the Class name of the services to be tracked.

      * @param customizer the customizer object to call when services are added, modified, or removed in this Tracker object. If customizer is null, then this Tracker object will be used as

-     *            the TrackerCustomizer object and the Tracker object will call the TrackerCustomizer methods on itself.    

+     *            the TrackerCustomizer object and the Tracker object will call the TrackerCustomizer methods on itself.

      */

     public Tracker(BundleContext context, String clazz, TrackerCustomizer customizer) {

         // Security Check

@@ -132,7 +132,7 @@
             throw new SecurityException("The bundle " + context.getBundle().getBundleId()

                     + " does not have the permission to get the service " + clazz);

         }

-        

+

         this.m_context = context;

         this.m_trackReference = null;

         this.m_trackClass = clazz;

@@ -158,7 +158,7 @@
      * @param context the BundleContext object against which the tracking is done.

      * @param filter the Filter object to select the services to be tracked.

      * @param customizer The customizer object to call when services are added, modified, or removed in this Tracker object. If customizer is null, then this Tracker object will be used as the

-     *            TrackerCustomizer object and the Tracker object will call the TrackerCustomizer methods on itself.   

+     *            TrackerCustomizer object and the Tracker object will call the TrackerCustomizer methods on itself.

      */

     public Tracker(BundleContext context, Filter filter, TrackerCustomizer customizer) {

         this.m_context = context;

@@ -263,7 +263,7 @@
     }

 

     /**

-     * Default implementation of the TrackerCustomizer.addedService method.  

+     * Default implementation of the TrackerCustomizer.addedService method.

      * @param reference the added reference.

      * @see org.apache.felix.ipojo.util.TrackerCustomizer#addedService(org.osgi.framework.ServiceReference)

      */

@@ -341,7 +341,7 @@
             Iterator keys = tracked.keySet().iterator();

             for (int i = 0; i < length; i++) {

                 references[i] = (ServiceReference) keys.next();

-            }            

+            }

             return references;

         }

     }

@@ -367,7 +367,7 @@
             return references;

         }

     }

-    

+

     /**

      * Returns the list of references used by the tracker.

      * A reference becomes used when the dependency has already

@@ -418,17 +418,17 @@
     /**

      * Returns the service object for the specified ServiceReference object if the referenced service is being tracked by this Tracker object.

      * @param reference the Reference to the desired service.

-     * @return the Service object or <code>null</code> if the service referenced by the specified ServiceReference object is not being tracked.

+     * @return the Service object. Try to get the service if not yet tracked.

      */

     public Object getService(ServiceReference reference) {

         // Security Check

-        if (! SecurityHelper.hasPermissionToGetServices((String[]) reference.getProperty(Constants.OBJECTCLASS), 

+        if (! SecurityHelper.hasPermissionToGetServices((String[]) reference.getProperty(Constants.OBJECTCLASS),

                 m_context)) {

             throw new SecurityException("The bundle " + m_context.getBundle().getBundleId() + " does not have"

-                    + " the permission to get the services " 

+                    + " the permission to get the services "

                     + Arrays.asList((String[]) reference.getProperty(Constants.OBJECTCLASS)));

         }

-        

+

         Tracked tracked = this.m_tracked; // use local var since we are not synchronized

         if (tracked == null) { /* if Tracker is not open */

             return null;

@@ -445,8 +445,8 @@
             } else { // The object was already get.

                 return object;

             }

-            // Not already tracked.

-            return m_context.getService(reference);

+

+            return  m_context.getService(reference);

         }

     }

 

@@ -687,7 +687,7 @@
         }

 

         /**

-         * Common logic to add a service to the tracker used by track and trackInitialServices. 

+         * Common logic to add a service to the tracker used by track and trackInitialServices.

          * The specified reference must have been placed in the adding list before calling this method.

          * @param reference the Reference to a service to be tracked.

          */

@@ -703,7 +703,7 @@
                     if (m_adding.remove(reference)) { // if the service was not untracked during the customizer callback

                         if (mustBeTracked) {

                             this.put(reference, null);

-                            modified(); 

+                            modified();

                             mustCallAdded = true;

                             notifyAll(); // notify any waiters in waitForService

                         }

@@ -742,7 +742,7 @@
                     return; // in case the service is untracked while in the process of adding

                 }

 

-                boolean isTraked = this.containsKey(reference); // Check if we was tracking the reference 

+                boolean isTraked = this.containsKey(reference); // Check if we was tracking the reference

                 object = this.remove(reference); // must remove from tracker before calling customizer callback

 

                 if (!isTraked) { return; }

diff --git a/ipojo/junit4osgi/maven-junit4osgi-plugin/pom.xml b/ipojo/junit4osgi/maven-junit4osgi-plugin/pom.xml
index 747257a..416dbb1 100644
--- a/ipojo/junit4osgi/maven-junit4osgi-plugin/pom.xml
+++ b/ipojo/junit4osgi/maven-junit4osgi-plugin/pom.xml
@@ -61,7 +61,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>1.5.0-SNAPSHOT</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
diff --git a/ipojo/tests/api/pom.xml b/ipojo/tests/api/pom.xml
index 895103f..9b47e54 100644
--- a/ipojo/tests/api/pom.xml
+++ b/ipojo/tests/api/pom.xml
@@ -59,29 +59,29 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.api</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.composite</artifactId>
-      <version>${pom.version}</version>
+      <version>1.6.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-      <version>${pom.version}</version>
+      <version>1.6.0</version>
     </dependency>
 
-    <!-- For external handlermanagement -->
+    <!-- For external handler management -->
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.handler.whiteboard</artifactId>
-      <version>${pom.version}</version>
+      <version>1.4.0</version>
     </dependency>
 
   <!--
diff --git a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/CompositeTest.java b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/CompositeTest.java
index 93a72a9..c52794d 100644
--- a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/CompositeTest.java
+++ b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/CompositeTest.java
@@ -65,7 +65,6 @@
         Option[] opt =  options(
                 felix(),
                 equinox(),
-                knopflerfish(),
                 provision(
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo.composite").version(asInProject()),
diff --git a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/ExternalHandlerTest.java b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/ExternalHandlerTest.java
index 2c2038c..9c3dcf7 100644
--- a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/ExternalHandlerTest.java
+++ b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/ExternalHandlerTest.java
@@ -54,7 +54,6 @@
         Option[] opt =  options(
                 felix(),
                 equinox(),
-                knopflerfish(),
                 provision(
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo.api").version(asInProject()),
diff --git a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/PrimitiveComponentTest.java b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/PrimitiveComponentTest.java
index 6ecfa68..de92867 100644
--- a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/PrimitiveComponentTest.java
+++ b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/PrimitiveComponentTest.java
@@ -62,7 +62,6 @@
         Option[] opt =  options(
                 felix(),
                 equinox(),
-                knopflerfish(),
                 provision(
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo.api").version(asInProject())
diff --git a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/SingletonComponentTest.java b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/SingletonComponentTest.java
index 1e4e3f4..7023df8 100644
--- a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/SingletonComponentTest.java
+++ b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/SingletonComponentTest.java
@@ -64,7 +64,6 @@
         Option[] opt =  options(
                 felix(),
                 equinox(),
-                knopflerfish(),
                 provision(
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo.api").version(asInProject())
diff --git a/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/pom.xml b/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/pom.xml
index 1cf653b..cba2f23 100644
--- a/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/pom.xml
+++ b/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/pom.xml
@@ -13,7 +13,7 @@
     <groupId>org.apache.felix</groupId>
     <version>1.2.1</version>
   </parent>
-  
+
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -29,7 +29,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-      <version>1.4.0</version>
+      <version>1.6.0</version>
     </dependency>
     <dependency>
       <groupId>xerces</groupId>
@@ -51,7 +51,7 @@
     </plugins>
   </build>
 
-<repositories>	
+<repositories>
   <repository>
     <id>aQute</id>
     <url>http://www.aQute.biz/repo</url>
diff --git a/ipojo/tests/bundleAsiPOJO/helpers/pom.xml b/ipojo/tests/bundleAsiPOJO/helpers/pom.xml
index 9806443..c33ffca 100644
--- a/ipojo/tests/bundleAsiPOJO/helpers/pom.xml
+++ b/ipojo/tests/bundleAsiPOJO/helpers/pom.xml
@@ -7,18 +7,18 @@
   <version>1.5.0-SNAPSHOT</version>
   <name>iPOJO Test Helpers</name>
 
-  
+
 
   <dependencies>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>1.4.0</version>
+      <version>1.6.0</version>
     </dependency>
     <dependency>
       <groupId>org.osgi</groupId>
       <artifactId>org.osgi.core</artifactId>
-      <version>4.0.0</version>
+      <version>4.2.0</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/ipojo/tests/bundleAsiPOJO/tests/pom.xml b/ipojo/tests/bundleAsiPOJO/tests/pom.xml
index 1780d9f..4382341 100644
--- a/ipojo/tests/bundleAsiPOJO/tests/pom.xml
+++ b/ipojo/tests/bundleAsiPOJO/tests/pom.xml
@@ -109,12 +109,12 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.annotations</artifactId>
-      <version>${pom.version}</version>
+      <version>1.6.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.6.0</version>
     </dependency>
 
   </dependencies>
diff --git a/ipojo/tests/composite/composite-runtime/pom.xml b/ipojo/tests/composite/composite-runtime/pom.xml
index adb77ca..9f9ca74 100644
--- a/ipojo/tests/composite/composite-runtime/pom.xml
+++ b/ipojo/tests/composite/composite-runtime/pom.xml
@@ -27,17 +27,17 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.composite</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.metadata</artifactId>

-      <version>${pom.version}</version>

+      <version>1.4.0</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

@@ -82,7 +82,7 @@
       <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-ipojo-plugin</artifactId>

-        <version>${pom.version}</version>

+        <version>1.6.0</version>

         <executions>

           <execution>

             <goals>

diff --git a/ipojo/tests/composite/import-export/pom.xml b/ipojo/tests/composite/import-export/pom.xml
index 973522c..2ee3f3d 100644
--- a/ipojo/tests/composite/import-export/pom.xml
+++ b/ipojo/tests/composite/import-export/pom.xml
@@ -27,17 +27,17 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.composite</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.metadata</artifactId>

-      <version>${pom.version}</version>

+      <version>1.4.0</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

diff --git a/ipojo/tests/composite/service-instance/pom.xml b/ipojo/tests/composite/service-instance/pom.xml
index ce77ca8..de19e9d 100644
--- a/ipojo/tests/composite/service-instance/pom.xml
+++ b/ipojo/tests/composite/service-instance/pom.xml
@@ -27,17 +27,17 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.composite</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -85,7 +85,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/composite/service-providing/pom.xml b/ipojo/tests/composite/service-providing/pom.xml
index 7851282..35d970a 100644
--- a/ipojo/tests/composite/service-providing/pom.xml
+++ b/ipojo/tests/composite/service-providing/pom.xml
@@ -27,17 +27,17 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.composite</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -84,7 +84,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/annotations/pom.xml b/ipojo/tests/core/annotations/pom.xml
index 1942108..5d091da 100644
--- a/ipojo/tests/core/annotations/pom.xml
+++ b/ipojo/tests/core/annotations/pom.xml
@@ -27,13 +27,13 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.metadata

       </artifactId>

-      <version>${pom.version}</version>

+      <version>1.4.0</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

@@ -53,21 +53,21 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.annotations</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.handler.eventadmin</artifactId>

-      <version>${pom.version}</version>

+      <version>1.5.0-SNAPSHOT</version>

     </dependency>

-    

+

      <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.eventadmin</artifactId>

       <version>1.0.0</version>

       <scope>test</scope>

     </dependency>

-    

+

   </dependencies>

 

   <build>

@@ -105,7 +105,7 @@
       <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-ipojo-plugin</artifactId>

-        <version>${pom.version}</version>

+        <version>1.6.0</version>

         <executions>

           <execution>

             <goals>

@@ -114,8 +114,8 @@
           </execution>

         </executions>

       </plugin>

-      

-      

+

+

        <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-junit4osgi-plugin</artifactId>

diff --git a/ipojo/tests/core/bad-configurations/pom.xml b/ipojo/tests/core/bad-configurations/pom.xml
index 19e46af..23f4a62 100644
--- a/ipojo/tests/core/bad-configurations/pom.xml
+++ b/ipojo/tests/core/bad-configurations/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/configadmin/pom.xml b/ipojo/tests/core/configadmin/pom.xml
index 70ea65f..1bd6f8e 100644
--- a/ipojo/tests/core/configadmin/pom.xml
+++ b/ipojo/tests/core/configadmin/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -69,14 +69,15 @@
 							org.apache.felix.ipojo.test*

 						</Private-Package>

 						<Test-Suite>

-							org.apache.felix.ipojo.test.scenarios.configadmin.ConfigurationTestSuite						</Test-Suite>

+							org.apache.felix.ipojo.test.scenarios.configadmin.ConfigurationTestSuite

+						</Test-Suite>

 					</instructions>

 				</configuration>

 			</plugin>

 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/configuration/pom.xml b/ipojo/tests/core/configuration/pom.xml
index a082b59..21a7466 100644
--- a/ipojo/tests/core/configuration/pom.xml
+++ b/ipojo/tests/core/configuration/pom.xml
@@ -27,12 +27,12 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.metadata</artifactId>

-      <version>${pom.version}</version>

+      <version>1.4.0</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
       <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-ipojo-plugin</artifactId>

-        <version>${pom.version}</version>

+        <version>1.6.0</version>

         <executions>

           <execution>

             <goals>

diff --git a/ipojo/tests/core/external-handlers/pom.xml b/ipojo/tests/core/external-handlers/pom.xml
index 34d1476..e091b8a 100644
--- a/ipojo/tests/core/external-handlers/pom.xml
+++ b/ipojo/tests/core/external-handlers/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/factories/pom.xml b/ipojo/tests/core/factories/pom.xml
index b12d27d..3f7dbb5 100644
--- a/ipojo/tests/core/factories/pom.xml
+++ b/ipojo/tests/core/factories/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/factory-version/pom.xml b/ipojo/tests/core/factory-version/pom.xml
index 23378ab..037ee3f 100644
--- a/ipojo/tests/core/factory-version/pom.xml
+++ b/ipojo/tests/core/factory-version/pom.xml
@@ -45,7 +45,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
 
   <!--
@@ -101,7 +101,7 @@
       <artifactId>org.apache.felix.ipojo.test.helpers</artifactId>
       <version>${pom.version}</version>
     </dependency>
-    
+
    <dependency>
     <groupId>org.ops4j.base</groupId>
     <artifactId>ops4j-base-io</artifactId>
diff --git a/ipojo/tests/core/handler/pom.xml b/ipojo/tests/core/handler/pom.xml
index 08d962d..881826a 100644
--- a/ipojo/tests/core/handler/pom.xml
+++ b/ipojo/tests/core/handler/pom.xml
@@ -35,7 +35,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
 
   <!-- Pax Exam API: -->
@@ -103,7 +103,7 @@
       <version>1.7</version>
       <scope>test</scope>
     </dependency>
-  
+
   <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.tinybundles.bundleAsiPOJO
diff --git a/ipojo/tests/core/lifecycle-callback/pom.xml b/ipojo/tests/core/lifecycle-callback/pom.xml
index 85613ac..821f954 100644
--- a/ipojo/tests/core/lifecycle-callback/pom.xml
+++ b/ipojo/tests/core/lifecycle-callback/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/lifecycle-controller/pom.xml b/ipojo/tests/core/lifecycle-controller/pom.xml
index 06fe019..269bfba 100644
--- a/ipojo/tests/core/lifecycle-controller/pom.xml
+++ b/ipojo/tests/core/lifecycle-controller/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/logger/pom.xml b/ipojo/tests/core/logger/pom.xml
index 03e6cbb..c62b7cd 100644
--- a/ipojo/tests/core/logger/pom.xml
+++ b/ipojo/tests/core/logger/pom.xml
@@ -58,7 +58,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
diff --git a/ipojo/tests/core/service-dependency-bindingpolicy/pom.xml b/ipojo/tests/core/service-dependency-bindingpolicy/pom.xml
index d0cab32..eb4aac8 100644
--- a/ipojo/tests/core/service-dependency-bindingpolicy/pom.xml
+++ b/ipojo/tests/core/service-dependency-bindingpolicy/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -79,7 +79,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/service-dependency-comparator/pom.xml b/ipojo/tests/core/service-dependency-comparator/pom.xml
index a48dce8..c4b48b7 100644
--- a/ipojo/tests/core/service-dependency-comparator/pom.xml
+++ b/ipojo/tests/core/service-dependency-comparator/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -80,7 +80,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/service-dependency-filter/pom.xml b/ipojo/tests/core/service-dependency-filter/pom.xml
index 2b9e8e9..7ad0199 100644
--- a/ipojo/tests/core/service-dependency-filter/pom.xml
+++ b/ipojo/tests/core/service-dependency-filter/pom.xml
@@ -27,12 +27,12 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.metadata</artifactId>

-      <version>${pom.version}</version>

+      <version>1.4.0</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

@@ -79,7 +79,7 @@
       <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-ipojo-plugin</artifactId>

-        <version>${pom.version}</version>

+        <version>1.6.0</version>

         <executions>

           <execution>

             <goals>

@@ -99,7 +99,7 @@
           <target>1.4</target>

         </configuration>

       </plugin>

-      

+

        <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-junit4osgi-plugin</artifactId>

diff --git a/ipojo/tests/core/service-dependency-optional/pom.xml b/ipojo/tests/core/service-dependency-optional/pom.xml
index 2bced55..d927ecd 100644
--- a/ipojo/tests/core/service-dependency-optional/pom.xml
+++ b/ipojo/tests/core/service-dependency-optional/pom.xml
@@ -36,12 +36,12 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.annotations</artifactId>
-      <version>${pom.version}</version>
+      <version>1.6.0</version>
     </dependency>
     <!--
       <dependency> <groupId>org.apache.felix</groupId>
diff --git a/ipojo/tests/core/service-dependency/pom.xml b/ipojo/tests/core/service-dependency/pom.xml
index ce5a943..33d2a17 100644
--- a/ipojo/tests/core/service-dependency/pom.xml
+++ b/ipojo/tests/core/service-dependency/pom.xml
@@ -27,12 +27,12 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.metadata</artifactId>

-      <version>${pom.version}</version>

+      <version>1.4.0</version>

     </dependency>

     <dependency>

         <groupId>org.osgi</groupId>

@@ -77,7 +77,7 @@
       <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-ipojo-plugin</artifactId>

-        <version>${pom.version}</version>

+        <version>1.6.0</version>

         <executions>

           <execution>

             <goals>

@@ -97,7 +97,7 @@
           <target>1.4</target>

         </configuration>

       </plugin>

-      

+

       <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-junit4osgi-plugin</artifactId>

diff --git a/ipojo/tests/core/service-providing-inheritance/pom.xml b/ipojo/tests/core/service-providing-inheritance/pom.xml
index 5b71205..6adf492 100644
--- a/ipojo/tests/core/service-providing-inheritance/pom.xml
+++ b/ipojo/tests/core/service-providing-inheritance/pom.xml
@@ -53,7 +53,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.osgi</groupId>
@@ -140,11 +140,11 @@
       <version>1.5.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
-    
+
   <dependency>
     <groupId>org.apache.felix</groupId>
     <artifactId>org.apache.felix.ipojo.annotations</artifactId>
-    <version>1.5.0-SNAPSHOT</version>
+    <version>1.7.0-SNAPSHOT</version>
     <scope>compile</scope>
   </dependency>
   </dependencies>
diff --git a/ipojo/tests/core/service-providing-strategies/pom.xml b/ipojo/tests/core/service-providing-strategies/pom.xml
index 926ce62..c963dbc 100755
--- a/ipojo/tests/core/service-providing-strategies/pom.xml
+++ b/ipojo/tests/core/service-providing-strategies/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -79,7 +79,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/core/service-providing/pom.xml b/ipojo/tests/core/service-providing/pom.xml
index bdbf7e0..7a0b062 100644
--- a/ipojo/tests/core/service-providing/pom.xml
+++ b/ipojo/tests/core/service-providing/pom.xml
@@ -27,12 +27,12 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo.metadata</artifactId>

-      <version>${pom.version}</version>

+      <version>1.4.0</version>

     </dependency>

     <dependency>

       <groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
       <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-ipojo-plugin</artifactId>

-        <version>${pom.version}</version>

+        <version>1.6.0</version>

         <executions>

           <execution>

             <goals>

@@ -97,7 +97,7 @@
           <target>1.4</target>

         </configuration>

       </plugin>

-      

+

        <plugin>

         <groupId>org.apache.felix</groupId>

         <artifactId>maven-junit4osgi-plugin</artifactId>

diff --git a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderWithAnonymousClass.java b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderWithAnonymousClass.java
new file mode 100644
index 0000000..a41b2f1
--- /dev/null
+++ b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderWithAnonymousClass.java
@@ -0,0 +1,77 @@
+/*

+ * 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.test.scenarios.component;

+

+import java.util.Properties;

+

+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;

+

+public class FooProviderWithAnonymousClass implements FooService {

+

+	private int intProp;

+	private String strProp;

+	private String[] strAProp;

+	private int[] intAProp;

+	private boolean boolProp;

+

+	public boolean foo() {

+		Runnable runnable = new Runnable() {

+			public void run() {

+				intProp = 3;

+				boolProp = true;

+				if(strProp.equals("foo")) { strProp = "bar"; }

+				else { strProp = "foo"; }

+				strAProp = new String[] {"foo", "bar", "baz"};

+				intAProp = new int[] {3, 2, 1};

+			}

+		};

+		new Thread(runnable).start();

+

+		try {

+			Thread.sleep(500);

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+

+		return true;

+	}

+

+	public Properties fooProps() {

+		Properties p = new Properties();

+		p.put("intProp", new Integer(intProp));

+		p.put("boolProp", new Boolean(boolProp));

+		p.put("strProp", strProp);

+		p.put("strAProp", strAProp);

+		p.put("intAProp", intAProp);

+		return p;

+	}

+

+	public boolean getBoolean() { return true; }

+

+	public double getDouble() { return 1.0; }

+

+	public int getInt() { return 1; }

+

+	public long getLong() { return 1; }

+

+	public Boolean getObject() { return new Boolean(true); }

+

+

+

+}

diff --git a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/PropertiesInAnonymousClassTest.java b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/PropertiesInAnonymousClassTest.java
new file mode 100644
index 0000000..8c3111c
--- /dev/null
+++ b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/PropertiesInAnonymousClassTest.java
@@ -0,0 +1,77 @@
+package org.apache.felix.ipojo.test.scenarios.ps;
+
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.junit4osgi.helpers.IPOJOHelper;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
+import org.osgi.framework.ServiceReference;
+
+public class PropertiesInAnonymousClassTest extends OSGiTestCase {
+
+	IPOJOHelper helper;
+
+	public void setUp() {
+	    helper = new IPOJOHelper(this);
+		String type = "PS-FooProviderTypeAnonymous-Dyn";
+		helper.createComponentInstance(type, "FooProviderAno-1");
+
+	}
+
+	public void tearDown() {
+		helper.dispose();
+	}
+
+	public void testProperties1() {
+		ServiceReference sr = helper.getServiceReferenceByName(FooService.class.getName(), "FooProviderAno-1");
+		assertNotNull("Check the availability of the FS service", sr);
+
+		// Check service properties
+		Integer intProp = (Integer) sr.getProperty("int");
+		Boolean boolProp = (Boolean) sr.getProperty("boolean");
+		String strProp = (String) sr.getProperty("string");
+		String[] strAProp = (String[]) sr.getProperty("strAProp");
+		int[] intAProp = (int[]) sr.getProperty("intAProp");
+
+		assertEquals("Check intProp equality (1)", intProp, new Integer(2));
+		assertEquals("Check longProp equality (1)", boolProp, new Boolean(false));
+		assertEquals("Check strProp equality (1)", strProp, new String("foo"));
+		assertNotNull("Check strAProp not nullity (1)", strAProp);
+		String[] v = new String[] {"foo", "bar"};
+		for (int i = 0; i < strAProp.length; i++) {
+			if(!strAProp[i].equals(v[i])) { fail("Check the strAProp Equality (1)"); }
+		}
+		assertNotNull("Check intAProp not nullity", intAProp);
+		int[] v2 = new int[] {1, 2, 3};
+		for (int i = 0; i < intAProp.length; i++) {
+			if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality (1)"); }
+		}
+
+		// Invoke
+		FooService fs = (FooService) getServiceObject(sr);
+		assertTrue("invoke fs", fs.foo());
+
+		sr = helper.getServiceReferenceByName(FooService.class.getName(), "FooProviderAno-1");
+		// Re-check the property (change)
+		intProp = (Integer) sr.getProperty("int");
+		boolProp = (Boolean) sr.getProperty("boolean");
+		strProp = (String) sr.getProperty("string");
+		strAProp = (String[]) sr.getProperty("strAProp");
+		intAProp = (int[]) sr.getProperty("intAProp");
+
+		assertEquals("Check intProp equality (2)", intProp, new Integer(3));
+		assertEquals("Check longProp equality (2)", boolProp, new Boolean(true));
+		assertEquals("Check strProp equality (2)", strProp, new String("bar"));
+		assertNotNull("Check strAProp not nullity (2)", strAProp);
+		v = new String[] {"foo", "bar", "baz"};
+		for (int i = 0; i < strAProp.length; i++) {
+			if(!strAProp[i].equals(v[i])) { fail("Check the strAProp Equality (2)"); }
+		}
+		assertNotNull("Check intAProp not nullity (2)", intAProp);
+		v2 = new int[] {3, 2, 1};
+		for (int i = 0; i < intAProp.length; i++) {
+			if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality (2)"); }
+		}
+
+		fs = null;
+	}
+
+}
diff --git a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
index 5e9adc6..b054e0b 100644
--- a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
+++ b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
@@ -1,4 +1,4 @@
-/* 

+/*

  * 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

@@ -40,6 +40,7 @@
         ots.addTestSuite(OSGiPropertiesTest.class);

         ots.addTestSuite(NullCheck.class);

         ots.addTestSuite(ServiceControllerTest.class);

+        ots.addTestSuite(PropertiesInAnonymousClassTest.class);

         return ots;

     }

 

diff --git a/ipojo/tests/core/service-providing/src/main/resources/metadata.xml b/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
index 6abd991..0fbbbed 100644
--- a/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
@@ -9,14 +9,14 @@
     name="PS-FooProviderType-1" architecture="true">

     <provides />

   </component>

-  

+

   <component

     classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"

     name="PS-FooProviderType-itf" architecture="true">

     <provides

       specifications="org.apache.felix.ipojo.test.scenarios.ps.service.FooService" />

   </component>

-  

+

   <component

     classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"

     name="PS-FooProviderType-3" architecture="true">

@@ -30,7 +30,7 @@
       <property name="bar" field="m_bar" />

     </properties>

   </component>

-  

+

   <!-- Providers providing 2 services -->

   <component

     classname="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"

@@ -55,7 +55,7 @@
       <property name="baz" type="java.lang.String" value="bar" />

     </provides>

   </component>

-  

+

 

   <!-- Provider with dynamic property -->

   <component

@@ -70,7 +70,7 @@
       <property name="intAProp" field="intAProp" value="{1,2,3}" />

     </provides>

   </component>

-  

+

   <component

     classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"

     name="PS-FooProviderType-2" architecture="true">

@@ -83,7 +83,7 @@
       <property name="intAProp" type="int[]" value="{1,2,3}" />

     </provides>

   </component>

-  

+

   <component

     classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn2"

     name="PS-FooProviderType-Dyn2" architecture="true">

@@ -96,7 +96,7 @@
         value="{1, 2,3 }" />

     </provides>

   </component>

-  

+

   <!--  Inherited Provides -->

   <component

     classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"

@@ -136,7 +136,7 @@
     name="PS-PI3" architecture="true">

     <provides />

   </component>

-  

+

   <!-- Concrete and abstract class -->

   <component

     classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"

@@ -156,10 +156,10 @@
   <component

     classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation3"

     name="PS-PI7" architecture="true">

-    <provides specifications="[org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation, 

+    <provides specifications="[org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation,

           org.apache.felix.ipojo.test.scenarios.ps.service.FooService]"/>

   </component>

-  

+

   <!--  Null Check -->

   <component classname="org.apache.felix.ipojo.test.scenarios.component.NullCheckServiceProvider" immediate="true"

     name="PS-Null">

@@ -168,7 +168,7 @@
       <property field="prop2"/>

     </provides>

   </component>

-  

+

   <!--  Service Controller -->

   <component classname="org.apache.felix.ipojo.test.scenarios.component.controller.ControllerCheckService"

     name="PS-Controller-1-default">

@@ -210,4 +210,18 @@
         <controller field="controllerCS" value="true"/>

     </provides>

   </component>

+

+  <!-- Anonymous classes -->

+  <component

+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderWithAnonymousClass"

+    name="PS-FooProviderTypeAnonymous-Dyn" architecture="true">

+    <provides>

+      <property name="int" field="intProp" value="2" />

+      <property name="boolean" field="boolProp" value="false" />

+      <property name="string" field="strProp" value="foo" />

+      <property name="strAProp" field="strAProp"

+        value="{foo, bar}" />

+      <property name="intAProp" field="intAProp" value="{1,2,3}" />

+    </provides>

+  </component>

 </ipojo>

diff --git a/ipojo/tests/handler/eventadmin/pom.xml b/ipojo/tests/handler/eventadmin/pom.xml
index b2f4409..0fc48a6 100644
--- a/ipojo/tests/handler/eventadmin/pom.xml
+++ b/ipojo/tests/handler/eventadmin/pom.xml
@@ -12,7 +12,7 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -22,7 +22,7 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.handler.eventadmin</artifactId>

-			<version>${pom.version}</version>

+			<version>1.5.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>junit</groupId>

@@ -55,7 +55,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/handler/temporal/pom.xml b/ipojo/tests/handler/temporal/pom.xml
index aa38b8e..adc8fc7 100644
--- a/ipojo/tests/handler/temporal/pom.xml
+++ b/ipojo/tests/handler/temporal/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -79,7 +79,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/handler/transaction/pom.xml b/ipojo/tests/handler/transaction/pom.xml
index e3320cc..59ad05c 100644
--- a/ipojo/tests/handler/transaction/pom.xml
+++ b/ipojo/tests/handler/transaction/pom.xml
@@ -10,17 +10,17 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.metadata</artifactId>
-      <version>${pom.version}</version>
+      <version>1.4.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.annotations</artifactId>
-      <version>${pom.version}</version>
+      <version>1.6.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
@@ -32,7 +32,7 @@
       <artifactId>org.apache.felix.ipojo.handler.transaction</artifactId>
       <version>${pom.version}</version>
     </dependency>
-    
+
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.test.helpers</artifactId>
diff --git a/ipojo/tests/handler/whiteboard/pom.xml b/ipojo/tests/handler/whiteboard/pom.xml
index ad5bfde..0a29b53 100644
--- a/ipojo/tests/handler/whiteboard/pom.xml
+++ b/ipojo/tests/handler/whiteboard/pom.xml
@@ -9,7 +9,7 @@
     <dependency>

       <groupId>org.apache.felix</groupId>

       <artifactId>org.apache.felix.ipojo</artifactId>

-      <version>${pom.version}</version>

+      <version>1.7.0-SNAPSHOT</version>

     </dependency>

 	<dependency>

 		<groupId>org.apache.felix</groupId>

@@ -44,7 +44,7 @@
 	<plugin>

 		<groupId>org.apache.felix</groupId>

 		<artifactId>maven-ipojo-plugin</artifactId>

-		<version>${pom.version}</version>

+		<version>1.6.0</version>

 		<executions>

 			<execution>

 				<goals>

diff --git a/ipojo/tests/integration-tests/pom.xml b/ipojo/tests/integration-tests/pom.xml
index 1530e62..37ac239 100644
--- a/ipojo/tests/integration-tests/pom.xml
+++ b/ipojo/tests/integration-tests/pom.xml
@@ -5,16 +5,16 @@
   <artifactId>org.apache.felix.ipojo.integration-tests</artifactId>
   <name>iPOJO Integration Tests</name>
   <version>1.5.0-SNAPSHOT</version>
-  
+
   <properties>
      <ipojo.version>1.5.0-SNAPSHOT</ipojo.version>
     </properties>
-  
+
   <build>
     <plugins>
       <plugin>
         <groupId>org.apache.felix</groupId>
-        <artifactId>maven-junit4osgi-plugin 
+        <artifactId>maven-junit4osgi-plugin
         </artifactId>
         <version>1.1.0-SNAPSHOT</version>
         <executions>
@@ -38,7 +38,7 @@
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-report-plugin 
+        <artifactId>maven-surefire-report-plugin
         </artifactId>
         <version>2.4.3</version>
         <configuration>
@@ -54,12 +54,12 @@
       </plugin>
     </plugins>
   </reporting>
-  
+
   <dependencies>
    <!-- Manipulation -->
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.manipulation.metadata 
+      <artifactId>tests.manipulation.metadata
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
@@ -72,26 +72,26 @@
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.manipulation.primitives 
+      <artifactId>tests.manipulation.primitives
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.manipulation.creation 
+      <artifactId>tests.manipulation.creation
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.manipulation.java5 
+      <artifactId>tests.manipulation.java5
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
-    
+
     <!--  Core -->
     <dependency>
       <groupId>ipojo.tests</groupId>
@@ -101,21 +101,21 @@
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.bad.configurations 
+      <artifactId>tests.core.bad.configurations
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.configuration 
+      <artifactId>tests.core.configuration
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.external.handlers 
+      <artifactId>tests.core.external.handlers
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
@@ -128,14 +128,14 @@
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.lifecycle.callback 
+      <artifactId>tests.core.lifecycle.callback
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.lifecycle.controller 
+      <artifactId>tests.core.lifecycle.controller
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
@@ -148,47 +148,47 @@
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.lifecycle.controller 
+      <artifactId>tests.core.lifecycle.controller
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.service.dependency 
+      <artifactId>tests.core.service.dependency
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.service.dependency.bindingpolicy 
+      <artifactId>tests.core.service.dependency.bindingpolicy
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.service.dependency.comparator 
+      <artifactId>tests.core.service.dependency.comparator
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.core.service.dependency.filter 
+      <artifactId>tests.core.service.dependency.filter
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
-    </dependency> 
+    </dependency>
     <dependency>
       <artifactId>tests.core.ps.strategy</artifactId>
       <groupId>ipojo.tests</groupId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
-    
-    
+
+
        <!-- Composite -->
     <dependency>
       <groupId>ipojo.tests</groupId>
@@ -198,31 +198,31 @@
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.composite.service.import-export 
+      <artifactId>tests.composite.service.import-export
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.composite.service.instance 
+      <artifactId>tests.composite.service.instance
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.composite.service.providing 
+      <artifactId>tests.composite.service.providing
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
     </dependency>
 
   <!--  External handlers -->
-  
+
     <dependency>
       <groupId>ipojo.tests</groupId>
-      <artifactId>tests.eventadmin.handler 
+      <artifactId>tests.eventadmin.handler
       </artifactId>
       <version>${ipojo.version}</version>
       <scope>test</scope>
@@ -240,7 +240,7 @@
       <scope>test</scope>
     </dependency>
   <!--  Utility bundles -->
-   
+
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.handler.whiteboard</artifactId>
@@ -268,11 +268,11 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.composite</artifactId>
-      <version>${ipojo.version}</version>
+      <version>1.6.0</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
-  
+
   <profiles>
     <profile>
     <id>configadmin</id>
diff --git a/ipojo/tests/manipulator/creation/pom.xml b/ipojo/tests/manipulator/creation/pom.xml
index f67eec5..6cd1af1 100644
--- a/ipojo/tests/manipulator/creation/pom.xml
+++ b/ipojo/tests/manipulator/creation/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/manipulator/manipulation/pom.xml b/ipojo/tests/manipulator/manipulation/pom.xml
index 1fd6648..717c388 100644
--- a/ipojo/tests/manipulator/manipulation/pom.xml
+++ b/ipojo/tests/manipulator/manipulation/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/manipulator/manipulator-java5/pom.xml b/ipojo/tests/manipulator/manipulator-java5/pom.xml
index dfb5ada..d60fc48 100644
--- a/ipojo/tests/manipulator/manipulator-java5/pom.xml
+++ b/ipojo/tests/manipulator/manipulator-java5/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/manipulator/metadata/pom.xml b/ipojo/tests/manipulator/metadata/pom.xml
index f0c3289..4aa6c8d 100644
--- a/ipojo/tests/manipulator/metadata/pom.xml
+++ b/ipojo/tests/manipulator/metadata/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/manipulator/primitives/pom.xml b/ipojo/tests/manipulator/primitives/pom.xml
index ba9df90..593f14f 100644
--- a/ipojo/tests/manipulator/primitives/pom.xml
+++ b/ipojo/tests/manipulator/primitives/pom.xml
@@ -27,12 +27,12 @@
 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo</artifactId>

-			<version>${pom.version}</version>

+			<version>1.7.0-SNAPSHOT</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>

-			<version>${pom.version}</version>

+			<version>1.4.0</version>

 		</dependency>

 		<dependency>

 			<groupId>org.apache.felix</groupId>

@@ -77,7 +77,7 @@
 			<plugin>

 				<groupId>org.apache.felix</groupId>

 				<artifactId>maven-ipojo-plugin</artifactId>

-				<version>${pom.version}</version>

+				<version>1.6.0</version>

 				<executions>

 					<execution>

 						<goals>

diff --git a/ipojo/tests/online-manipulator/pom.xml b/ipojo/tests/online-manipulator/pom.xml
index 9ebf028..085bb02 100644
--- a/ipojo/tests/online-manipulator/pom.xml
+++ b/ipojo/tests/online-manipulator/pom.xml
@@ -104,7 +104,7 @@
   <dependency>
     <groupId>org.apache.felix</groupId>
     <artifactId>org.apache.felix.ipojo.tinybundles.bundleAsiPOJO</artifactId>
-    <version>${pom.version}</version>
+    <version>1.5.0-SNAPSHOT</version>
   </dependency>
     <dependency>
       <groupId>xerces</groupId>
@@ -114,17 +114,17 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.annotations</artifactId>
-      <version>${pom.version}</version>
+      <version>1.6.0</version>
     </dependency>
      <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
      <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo.online.manipulator</artifactId>
-      <version>${pom.version}</version>
+      <version>1.7.0-SNAPSHOT</version>
     </dependency>
 
   </dependencies>