FELIX-5182: Cleanup DM samples.
FELIX-5077: implemented type-safe proxy configuration for the @ConfigurationDependency annotation, which can now be applied 
on an updated method which accepts a type-safe config proxy as argument. By default, the pid is assumed to be the fqdn of the
config proxy object.


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1729464 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/bnd.bnd b/dependencymanager/org.apache.felix.dependencymanager.annotation/bnd.bnd
index 0743a46..cf8d441 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/bnd.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/bnd.bnd
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-Bundle-Version: 4.0.4
+Bundle-Version: 4.1.0
 -buildpath:  \
 	osgi.core;version=4.2,\
 	de.twentyeleven.skysail.org.json-osgi;version=20080701.0,\
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ConfigurationDependency.java b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ConfigurationDependency.java
index 4a09be2..6ef1f60 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ConfigurationDependency.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ConfigurationDependency.java
@@ -89,7 +89,7 @@
     
     /**
      * Returns the pid from a class name. The full class name will be used as the configuration PID.
-     * You can use this method when you use an interface annoted with standard bndtols metatype annotations.
+     * You can use this method when you use an interface annotated with standard bndtols metatype annotations.
      * (see http://www.aqute.biz/Bnd/MetaType).
      * @return the pid class
      */
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/RepeatableProperty.java b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/RepeatableProperty.java
index 53e2d93..940c34c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/RepeatableProperty.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/RepeatableProperty.java
@@ -25,7 +25,7 @@
 
 /**
  * Annotation used to describe repeated Property annotation. You actually don't have to use directly this annotation,
- * which is used used to allow to repeat several times the {@link Property} annotation on a given component class.
+ * which is used to allow repeating several times the {@link Property} annotation on a given component class.
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/packageinfo b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/packageinfo
index a4f1546..b1793a2 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/packageinfo
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/packageinfo
@@ -1 +1 @@
-version 1.0
\ No newline at end of file
+version 1.1.0
\ No newline at end of file
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
index 2cbc288..9a80f15 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
@@ -21,6 +21,7 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Dictionary;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -622,9 +623,58 @@
         EntryWriter writer = new EntryWriter(EntryType.ConfigurationDependency);
         m_writers.add(writer);
 
-        // pid attribute (can be specified using the pid attribute, or using the classPid attribute)
+        // The pid is either:
+        //
+        // - the fqdn of the configuration proxy type, if the callback accepts an interface (not a Dictionary).
+        // - or the fqdn of the class specified by the pidFromClass attribute 
+        // - or the value of the pid attribute
+        // - or by default the fdqn of the class where the annotation is found
+
         String pidFromClass = parseClassAttrValue(annotation.get(EntryParam.pidClass.toString()));
-        String pid = pidFromClass != null ? pidFromClass : get(annotation, EntryParam.pid.toString(), m_className);
+        String pid = pidFromClass != null ? pidFromClass : get(annotation, EntryParam.pid.toString(), null);
+
+        // Check if annotation is applied on "updated(ConfigProxyType)"
+        String confProxyType =   Patterns.parseClass(m_descriptor, Patterns.BIND_CLASS5, 1, false);
+        if (confProxyType != null)
+        {
+            if (! Dictionary.class.getName().equals(confProxyType)) 
+            {
+                // It's a conf proxy type.
+                writer.put(EntryParam.confProxyType, confProxyType);
+            }
+            else
+            {
+                confProxyType = null;
+            }
+            
+        } 
+        else
+        {
+            // Check if annotation is applied on "updated(Component, ConfigProxyType)"
+            confProxyType = Patterns.parseClass(m_descriptor, Patterns.BIND_CLASS2, 2, false); 
+            m_logger.warn("XX:%s/%s", m_descriptor, confProxyType);
+            if (! Dictionary.class.getName().equals(confProxyType)) 
+            {
+                // It's a conf proxy type.
+                writer.put(EntryParam.confProxyType, confProxyType);
+            }
+            else
+            {
+                confProxyType = null;
+            }
+        }
+        
+        if (pid == null) 
+        {
+            if (confProxyType != null)
+            {
+                pid = confProxyType;
+            }
+            else 
+            {
+                pid = m_className;
+            }
+        }
 
         writer.put(EntryParam.pid, pid);
         
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/EntryParam.java b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/EntryParam.java
index 41a0b5d..bff3b7a 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/EntryParam.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/EntryParam.java
@@ -44,6 +44,7 @@
     autoConfig, 
     pid,
     pidClass,
+    confProxyType, // inject a proxy configuration type 
     factoryPid,
     factoryPidClass,
     propagate, 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java
index e25d441..7171103 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java
@@ -71,7 +71,7 @@
                 break;
 
             case ConfigurationDependency:
-                dp = createConfigurationDependency(dm);
+                dp = createConfigurationDependency(b, dm);
                 break;
 
             case BundleDependency:
@@ -137,17 +137,17 @@
         return sd;
     }
 
-    private Dependency createConfigurationDependency(DependencyManager dm)
+    private Dependency createConfigurationDependency(Bundle b, DependencyManager dm) throws Exception
     {
+        String confProxyType = m_metaData.getString(Params.confProxyType, null);
         String pid = m_metaData.getString(Params.pid);
         boolean propagate = "true".equals(m_metaData.getString(Params.propagate, "false"));
         String callback = m_metaData.getString(Params.updated, "updated");
-        Dependency dp = createConfigurationDependency(dm, pid, callback, propagate);
-        return dp;
+        return createConfigurationDependency(dm, b, pid, callback, confProxyType, propagate);
     }
 
-    private Dependency createConfigurationDependency(DependencyManager dm, String pid, String callback,
-    	boolean propagate)
+    private Dependency createConfigurationDependency(DependencyManager dm, Bundle b, String pid, String callback, String confProxyType, boolean propagate) 
+        throws ClassNotFoundException
     {
         if (pid == null)
         {
@@ -156,7 +156,15 @@
         }
         ConfigurationDependency cd = dm.createConfigurationDependency();
         cd.setPid(pid);
-        cd.setCallback(callback);
+        if (confProxyType != null) 
+        {
+            Class<?> confProxyTypeClass = b.loadClass(confProxyType); 
+            cd.setCallback(callback, confProxyTypeClass);            
+        }
+        else
+        {
+            cd.setCallback(callback);            
+        }
         cd.setPropagate(propagate);
         return cd;
     }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java b/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java
index 37f251f..ee2dd86 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java
@@ -64,5 +64,6 @@
     dependencyManagerField, 
     componentField,
     registered, 
-    unregistered
+    unregistered,
+    confProxyType
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd
index 8066df9..9bedc6f 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd
@@ -14,53 +14,22 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-Bundle-Version: 1.0.0
+Bundle-Version: 1.0.0.${tstamp}
 -buildpath:  \
-	org.apache.felix.dependencymanager;version=latest,\
 	osgi.core;version=4.2,\
 	osgi.cmpn;version=4.2,\
+	biz.aQute.bnd.annotation,\
+	org.apache.felix.dependencymanager;version=latest,\
 	org.apache.felix.gogo.runtime;version=latest,\
 	org.apache.felix.dependencymanager.runtime;version=latest,\
-	org.apache.felix.dependencymanager.annotation;version=latest,\
-	biz.aQute.bnd.annotation
--runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
--runee: JavaSE-1.7
--runbundles:  \
-	org.apache.felix.dependencymanager;version=latest,\
-	org.apache.felix.metatype;version=1.0.4,\
-	org.apache.felix.log;version=1.0.1,\
-	org.apache.felix.gogo.command;version=0.14.0,\
-	org.apache.felix.gogo.runtime;version=0.12.0,\
-	org.apache.felix.gogo.shell;version=0.10.0,\
-	org.apache.felix.dependencymanager.shell;version=latest,\
-	org.apache.felix.dependencymanager.runtime;version=latest,\
-	org.apache.felix.configadmin;version=1.8.6,\
-	org.apache.felix.eventadmin;version=1.4.3,\
-	biz.aQute.bndlib;version=2.3.0,\
-	org.apache.felix.webconsole;version=4.2.2,\
-	org.apache.felix.http.api;version=2.3.0,\
-	org.apache.felix.http.servlet-api;version=1.0.0,\
-	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
-	org.apache.felix.dependencymanager.samples.hello.api;version=latest,\
-	org.apache.felix.dependencymanager.samples.tpool;version=latest,\
-	org.apache.felix.dependencymanager.samples.conf;version=latest,\
-	org.apache.felix.dependencymanager.samples.device.api;version=latest
--runproperties:  \
-	org.apache.felix.dependencymanager.parallel='!org.apache.felix.dependencymanager.samples.tpool, *',\
-	org.apache.felix.dependencymanager.runtime.log=warn,\
-	org.apache.felix.dependencymanager.loglevel=2,\
-	org.apache.felix.log.maxSize=100000,\
-	org.apache.felix.log.storeDebug=true
--plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
-		 path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
-
+	org.apache.felix.dependencymanager.annotation;version=latest
 -sub:  \
 	*.bnd
 -metatype: *
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Bundle-DocURL: http://felix.apache.org/documentation/subprojects/apache-felix-dependency-manager.html
+Bundle-Vendor: The Apache Software Foundation
 Include-Resource: META-INF/=resources/LICENSE,\
 	META-INF/=resources/NOTICE,\
 	META-INF/=resources/DEPENDENCIES,\
 	META-INF/=${workspace}/release/resources/changelog.txt
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-DocURL: http://felix.apache.org/documentation/subprojects/apache-felix-dependency-manager.html
-Bundle-Vendor: The Apache Software Foundation
\ No newline at end of file
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/composite.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/composite.bndrun
new file mode 100644
index 0000000..532fba5
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/composite.bndrun
@@ -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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.conf;version=latest,\
+    org.apache.felix.dependencymanager.samples.composite;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/compositefactory.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/compositefactory.bndrun
new file mode 100644
index 0000000..7b6cb99
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/compositefactory.bndrun
@@ -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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.conf;version=latest,\
+    org.apache.felix.dependencymanager.samples.compositefactory;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/customdep.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/customdep.bndrun
new file mode 100644
index 0000000..fa43297
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/customdep.bndrun
@@ -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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.customdep;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bnd
index 44a5201..deb4ed8 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bnd
@@ -17,4 +17,6 @@
 Private-Package:  \
 	org.apache.felix.dependencymanager.samples.device.annot
 Bundle-Description: Dependency Manager device example with annotations
-Bundle-Name: Dependency Manager Device Example With Annotations
\ No newline at end of file
+Bundle-Name: Dependency Manager Device Example With Annotations
+-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
+  path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bndrun
new file mode 100644
index 0000000..fdcf6ad
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bndrun
@@ -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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.device.annot;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=false,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/device.api.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/device.api.bndrun
new file mode 100644
index 0000000..dc4bf8e
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/device.api.bndrun
@@ -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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.device.api;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bnd
index 815c859..83406ae 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bnd
@@ -17,4 +17,6 @@
 Private-Package:  \
 	org.apache.felix.dependencymanager.samples.dictionary.annot
 Bundle-Description: Dependency Manager dictionary example with annotations
-Bundle-Name: Dependency Manager Dictionary Example With Annotations
\ No newline at end of file
+Bundle-Name: Dependency Manager Dictionary Example With Annotations
+-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
+  path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bndrun
new file mode 100644
index 0000000..31aca31
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bndrun
@@ -0,0 +1,47 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.http.api;version=2.3.0,\
+	org.apache.felix.http.servlet-api;version=1.0.0,\
+	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
+	org.apache.felix.webconsole;version=4.2.2,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.dictionary.annot;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=false,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.api.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.api.bndrun
new file mode 100644
index 0000000..0a65fd3
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.api.bndrun
@@ -0,0 +1,47 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.http.api;version=2.3.0,\
+	org.apache.felix.http.servlet-api;version=1.0.0,\
+	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
+	org.apache.felix.webconsole;version=4.2.2,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.dictionary.api;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bnd
index 73f8c74..7492d65 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bnd
@@ -17,4 +17,6 @@
 Private-Package:  \
 	org.apache.felix.dependencymanager.samples.dynamicdep.annot
 Bundle-Description: Dependency Manager dynamic dependency example with annotations
-Bundle-Name: Dependency Manager Dynamic Dependency Example With Annotations
\ No newline at end of file
+Bundle-Name: Dependency Manager Dynamic Dependency Example With Annotations
+-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
+  path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bndrun
new file mode 100644
index 0000000..38c84a7
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bndrun
@@ -0,0 +1,47 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.http.api;version=2.3.0,\
+	org.apache.felix.http.servlet-api;version=1.0.0,\
+	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
+	org.apache.felix.webconsole;version=4.2.2,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+        org.apache.felix.dependencymanager.samples.dynamicdep.annot;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=false,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.api.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.api.bndrun
new file mode 100644
index 0000000..d5579bb
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.api.bndrun
@@ -0,0 +1,48 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.http.api;version=2.3.0,\
+	org.apache.felix.http.servlet-api;version=1.0.0,\
+	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
+	org.apache.felix.webconsole;version=4.2.2,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.dynamicdep.api;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=warn,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bnd
index 9cf8284..6220fd6 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bnd
@@ -17,4 +17,6 @@
 Private-Package:  \
 	org.apache.felix.dependencymanager.samples.hello.annot
 Bundle-Description: Dependency Manager hello example with annotations
-Bundle-Name: Dependency Manager Hello Example With Annotations
\ No newline at end of file
+Bundle-Name: Dependency Manager Hello Example With Annotations
+-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
+  path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bndrun
new file mode 100644
index 0000000..e6502cf
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bndrun
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.conf;version=latest,\
+    org.apache.felix.dependencymanager.samples.hello.annot;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=false,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/hello.api.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.api.bndrun
new file mode 100644
index 0000000..6c1ba78
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.api.bndrun
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.conf;version=latest,\
+    org.apache.felix.dependencymanager.samples.hello.api;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderImpl.java
index a693e00..6840981 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderImpl.java
@@ -45,7 +45,7 @@
     }
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderImpl.start(): participants=" + m_participant1 + "," + m_participant2
+        m_log.log(LogService.LOG_WARNING, "ProviderImpl.start(): participants=" + m_participant1 + "," + m_participant2
             + ", conf=" + m_conf);
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant1.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant1.java
index c6d76f3..11b2db4 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant1.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant1.java
@@ -27,6 +27,11 @@
     private volatile LogService m_log; // Injected
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderParticipant1.start()");
+        m_log.log(LogService.LOG_WARNING, "ProviderParticipant1.start()");
+    }
+    
+    @Override
+    public String toString() {
+        return "ProviderParticipant1";
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant2.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant2.java
index efa5b4e..ddc4728 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant2.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant2.java
@@ -27,6 +27,11 @@
     private volatile LogService m_log; // Injected
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderParticipant2.start()");
+        m_log.log(LogService.LOG_WARNING, "ProviderParticipant2.start()");
+    }
+    
+    @Override
+    public String toString() {
+        return "ProviderParticipant2";
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/README
index 18eb3b4..9fa68f7 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/README
@@ -17,11 +17,17 @@
 
 This sample is an example usage of DM composite components. A composite component is implemented
 using a composition of multiple object instances, which are used to implement a given complex
-service. Here, we define a "Provider" service, which is implemented by three object instances:
-ProviderImpl, ProviderParticipant1, ProviderParticipant2.
+service. In this example, we define a "Provider" service, which is implemented by three object instances:
+ProviderImpl (which is the main implementation class that provides the service), ProviderParticipant1, 
+and ProviderParticipant2.
 
 Dependencies are injected in all objects being part of the composition.
 
-To see logs, type this command under the gogo shell:
+To test, run click on the bndtools "composite.bndrun" descriptor, and run it, then type "log warn" in gogo shell: 
 
-g! log info|grep composite
+g! log warn
+
+2016.02.08 23:00:34 WARNING - Bundle: org.apache.felix.dependencymanager.samples.composite - ProviderParticipant2.start()
+2016.02.08 23:00:34 WARNING - Bundle: org.apache.felix.dependencymanager.samples.composite - ProviderParticipant1.start()
+2016.02.08 23:00:34 WARNING - Bundle: org.apache.felix.dependencymanager.samples.composite - ProviderImpl.start(): participants=ProviderParticipant1,ProviderParticipant2, conf={key=value, service.pid=org.apache.felix.dependencymanager.samples.composite.ProviderImpl}
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderImpl.java
index e88f653..a3673e6 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderImpl.java
@@ -41,6 +41,6 @@
     }
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderImpl.start(): participants=" + m_participant1 + "," + m_participant2);
+        m_log.log(LogService.LOG_WARNING, "ProviderImpl.start(): participants=" + m_participant1 + "," + m_participant2);
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant1.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant1.java
index 8397b13..4dfd3e4 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant1.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant1.java
@@ -27,6 +27,11 @@
     private volatile LogService m_log; // Injected
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderParticipant1.start()");
+        m_log.log(LogService.LOG_WARNING, "ProviderParticipant1.start()");
+    }
+    
+    @Override
+    public String toString() {
+        return "ProviderParticipant1";
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant2.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant2.java
index 61a9d45..533e5fb 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant2.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant2.java
@@ -27,6 +27,11 @@
     private volatile LogService m_log; // Injected
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderParticipant2.start()");
+        m_log.log(LogService.LOG_WARNING, "ProviderParticipant2.start()");
+    }
+    
+    @Override
+    public String toString() {
+        return "ProviderParticipant2";
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/README
index d1d6c27..f23a1b0 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/README
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-This Activator is an example usage of DM composite components. A composite component is implemented
+This Activator is an example usage of DM composite. A composite component is implemented
 using a composition of multiple object instances, which are used to implement a given service. 
 
 The sample also uses a Factory approach in order to instantiate the composition of objects: A
@@ -24,9 +24,10 @@
 
 Dependencies are injected in all objects in the composition.
 
-To see logs, type this command under the gogo shell:
+To test, run click on "compositefactory.bndrun" descriptor, and run it, then type "log warn" in gogo shell: 
 
-g! log info|grep compositefactory
+g! log warn
 
-
-
+2016.02.08 22:26:05 WARNING - Bundle: org.apache.felix.dependencymanager.samples.compositefactory - ProviderParticipant2.start()
+2016.02.08 22:26:05 WARNING - Bundle: org.apache.felix.dependencymanager.samples.compositefactory - ProviderParticipant1.start()
+2016.02.08 22:26:05 WARNING - Bundle: org.apache.felix.dependencymanager.samples.compositefactory - ProviderImpl.start(): participants=ProviderParticipant1,ProviderParticipant2
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java
index 151fba4..afc1809 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java
@@ -38,8 +38,8 @@
     
     public void start() {
         try {
-            System.out.println("Configuring sample components ... please consult log service messages for each sample you want to play with.");
-            System.out.println("For example: \"log info|grep org.apache.felix.dependencymanager.samples.device.api\"");
+            System.out.println("Configuring sample components ... please consult log messages to see example output, like this:");
+            System.out.println("\"log warn\"");
             // Provide configuration to the hello.ServiceConsumer component
             m_serviceConsumerConf = m_ca.getConfiguration("org.apache.felix.dependencymanager.samples.hello.api.ServiceConsumer", null);
             Hashtable<String, String> props = new Hashtable<>();
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java
index bd6c7b7..443bc7c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java
@@ -24,18 +24,18 @@
     volatile LogService logService;
     
     void start() {
-        logService.log(LogService.LOG_INFO, "PathTracker.start");
+        logService.log(LogService.LOG_WARNING, "PathTracker.start");
     }
     
     void stop() {
-        logService.log(LogService.LOG_INFO, "PathTracker.stop");
+        logService.log(LogService.LOG_WARNING, "PathTracker.stop");
     }
 
     void add(String path) {
-        logService.log(LogService.LOG_INFO, "PathTracker.add: " + path);
+        logService.log(LogService.LOG_WARNING, "PathTracker.add: " + path);
     }
     
     void remove(String path) {
-        logService.log(LogService.LOG_INFO, "PathTracker.remove: " + path);
+        logService.log(LogService.LOG_WARNING, "PathTracker.remove: " + path);
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/README
index 7be7d6e..a67ad3c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/README
@@ -20,15 +20,15 @@
 
 The PathDependendency is a low level DM example, but shows how to create any custom dependencies.
 
-To test this sample, start the samples under bndtools, then type:
+To test this sample, start the "customdep.bndrun" descriptor, then create a file in /tmp:
 
-   g! log info|grep customdep
+   $ echo "test" > /tmp/foo
 
-Then create a "test" file under /tmp:
+Then display logs (your Tracker component has normally been injected with the added file and has been started):
 
-   $ echo "test" > /tmp/test
-
-Then redisplay logs (your Tracker component has normally been injected with the added file and has been started):
-
-   g! log info|grep customdep
+   g! log warn
+   
+2016.02.08 22:17:46 WARNING - Bundle: org.apache.felix.dependencymanager.samples.customdep - PathTracker.start
+2016.02.08 22:17:46 WARNING - Bundle: org.apache.felix.dependencymanager.samples.customdep - PathTracker.add: foo
+   
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessConsumer.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessConsumer.java
index 2c3d50f..76264f2 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessConsumer.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessConsumer.java
@@ -35,7 +35,7 @@
     // Injected after all required dependencies have been injected (including our logger)
     @ServiceDependency(required=false)
     void add(Map<String, Object> props, DeviceAccess deviceAccess) {
-        log.log(LogService.LOG_INFO, "Handling device access: id=" + props.get("device.id") 
+        log.log(LogService.LOG_WARNING, "Handling device access: id=" + props.get("device.id") 
             + "\n\t device=" + deviceAccess.getDevice() 
             + "\n\t device parameter=" + deviceAccess.getDeviceParameter()
             + "\n\t device access properties=" + props);
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessImpl.java
index 669f306..a33252b 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessImpl.java
@@ -43,7 +43,7 @@
 
     @Init
     Map<String, String> init() {
-        log.log(LogService.LOG_INFO, "DeviceAccessImpl.init: device id=" + device.getDeviceId());
+        log.log(LogService.LOG_WARNING, "DeviceAccessImpl.init: device id=" + device.getDeviceId());
         // Dynamically configure our "deviceparam" dependency, using the already injected device service.
         Map<String, String> filters = new HashMap<>();
         filters.put("deviceparam.filter", "(device.id=" + device.getDeviceId() + ")");
@@ -53,7 +53,7 @@
 
     @Start
     Map<?, ?> start() {
-        log.log(LogService.LOG_INFO, "DeviceAccessImpl.start");
+        log.log(LogService.LOG_WARNING, "DeviceAccessImpl.start");
         // Dynamically add a service property, using the device.id
         Map<String, Object> props = new Hashtable<>();
         props.put("device.access.id", device.getDeviceId());
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceImpl.java
index 834043f..f523e56 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceImpl.java
@@ -37,4 +37,10 @@
     public int getDeviceId() {
         return id;
     }
+    
+    
+    @Override
+    public String toString() {
+        return "Device #" + id;
+    }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceParameterImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceParameterImpl.java
index 07f4b4b..c932f80 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceParameterImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceParameterImpl.java
@@ -37,4 +37,9 @@
     public int getDeviceId() {
         return id;
     }
+    
+    @Override
+    public String toString() {
+        return "DeviceParameter #" + id;
+    }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/README
index 63b8436..ec3612d 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/README
@@ -25,6 +25,20 @@
 same device.id . The adapter also dynamically propagate the service properties of the adapted Device
 service.
 
-So see logs, just type this command under gogo shell:
+Start the test by clicking on the "device.annot.bndrun" descriptor, then run it, and type under gogo shell:
 
-g! log info|grep device.annot
+g! log warn
+
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - Handling device access: id=1
+	 device=Device #1
+	 device parameter=DeviceParameter #1
+	 device access properties={service.bundleid=12, service.id=31, service.scope=singleton, objectClass=[Ljava.lang.String;@6e38921c, device.id=1, device.access.id=1}
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - DeviceAccessImpl.start
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - DeviceAccessImpl.init: device id=1
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - Handling device access: id=0
+	 device=Device #0
+	 device parameter=DeviceParameter #0
+	 device access properties={service.bundleid=12, service.id=28, service.scope=singleton, device.id=0, objectClass=[Ljava.lang.String;@6e38921c, device.access.id=0}
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - DeviceAccessImpl.start
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - DeviceAccessImpl.init: device id=0
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceAccessConsumer.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceAccessConsumer.java
index ce3d400..4c74bf5 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceAccessConsumer.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceAccessConsumer.java
@@ -29,7 +29,7 @@
     volatile LogService log;
 
     void add(Map<String, Object> props, DeviceAccess deviceAccess) {
-        log.log(LogService.LOG_INFO, "DeviceAccessConsumer: Handling device access: id=" + props.get("device.id") 
+        log.log(LogService.LOG_WARNING, "DeviceAccessConsumer: Handling device access: id=" + props.get("device.id") 
             + "\n\t device=" + deviceAccess.getDevice() 
             + "\n\t device parameter=" + deviceAccess.getDeviceParameter()
             + "\n\t device access properties=" + props);
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceImpl.java
index 969fba3..9f1cecb 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceImpl.java
@@ -32,4 +32,9 @@
     public int getDeviceId() {
         return id;
     }
+    
+    @Override
+    public String toString() {
+        return "Device #" + id;
+    }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceParameterImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceParameterImpl.java
index f6da3af..b7dbbc8 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceParameterImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceParameterImpl.java
@@ -32,4 +32,9 @@
     public int getDeviceId() {
         return id;
     }
+    
+    @Override
+    public String toString() {
+        return "DeviceParameter #" + id;
+    }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/README
index d013c28..afd53ad 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/README
@@ -24,7 +24,17 @@
 same device.id . The adapter also dynamically propagate the service properties of the adapted Device
 service.
 
-So see logs, just type this command under gogo shell:
+Start the test by clicking on the "device.api.bndrun" descriptor, then run it, and type under gogo shell:
 
-g! log info|grep device.api
+g! log warn
 
+You will then see:
+
+2016.02.08 23:04:46 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.api - DeviceAccessConsumer: Handling device access: id=2
+	 device=Device #2
+	 device parameter=DeviceParameter #2
+	 device access properties={service.bundleid=12, service.id=28, service.scope=singleton, objectClass=[Ljava.lang.String;@679b62af, device.access.id=2, device.id=2}
+2016.02.08 23:04:46 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.api - DeviceAccessConsumer: Handling device access: id=1
+	 device=Device #1
+	 device parameter=DeviceParameter #1
+	 device access properties={service.bundleid=12, service.id=29, service.scope=singleton, objectClass=[Ljava.lang.String;@679b62af, device.id=1, device.access.id=1}
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspect.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspect.java
index 77c3f49..79f574a 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspect.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspect.java
@@ -52,12 +52,9 @@
      * Defines a configuration dependency for retrieving our english custom words (by default,
      * our PID is our full class name).
      */
-    @ConfigurationDependency(pidClass = DictionaryAspectConfiguration.class, propagate = false)
-    protected void updated(Dictionary<String, ?> config) {
-        if (config != null) {
-            // We use the bnd "Configurable" helper in order to get an implementation for our DictionaryConfiguration interface.
-            DictionaryConfiguration cnf = Configurable.createConfigurable(
-                DictionaryConfiguration.class, config);
+    @ConfigurationDependency(propagate = false)
+    protected void updated(DictionaryAspectConfiguration cnf) {
+        if (cnf != null) {
             m_words.clear();
             for (String word : cnf.words()) {
                 m_words.add(word);
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java
index 5bfc6c0..31551e9 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java
@@ -29,7 +29,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name="Spell Checker Aspect Dictionary (annotation)",
+@OCD(name="Spell Checker Aspect Dictionary",
      description = "Declare here the list of english words to be added into the default english dictionary")
 public interface DictionaryAspectConfiguration {
     @AD(description = "Dictionary aspect words")
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java
index b853826..4f282d1 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java
@@ -29,7 +29,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name="Spell Checker Dictionary (annotation)", 
+@OCD(name="Spell Checker Dictionary", 
      factory = true, 
      description = "Declare here some Dictionary instances, allowing to instantiates some DictionaryService services for a given dictionary language")
 public interface DictionaryConfiguration {
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/README
index 4f55f97..05fc3f0 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/README
@@ -23,21 +23,21 @@
 
 A DictionaryService is defined using a FactoryConfigurationAdapterService , allowing to instantiate
 many "DictionaryService" instances when some configurations are added to the
-"Spell Checker Dictionary (annotation)" factory pid from web console. 
+"Spell Checker Dictionary" factory pid from web console. 
 The factory pid configuration metatypes are defined using the bnd "metatype" annotations
 (see DictionaryConfiguration.java).
 
 The DictionaryService is decorated with a DictionaryAspect, which you can instantiate by adding a
-configuration to the "Spell Checker Aspect Dictionary (annotation)" factory pid from web console. The
-aspect configuration metatype is also declared using the bnd metatype annotations (see
-DictionaryAspectConfiguration.java). 
+configuration to the "Spell Checker Aspect Dictionary" factory pid from web console. The
+aspect configuration metatype is also declared using the bnd metatype annotations (see DictionaryAspectConfiguration.java). 
 
-Before running this sample, go to webconsole (http://localhost:8080/system/console/configMgr), and add some words in the 
-"Spell Checker Dictionary (annotation)" section, and in the "Spell Checker Aspect Dictionary (annotation)" configurations.
+Start the test: click on "dictionary.annot.bndrun" descriptor, and run it.
+Then go to webconsole (http://localhost:8080/system/console/configMgr), and add some words in the 
+"Spell Checker Dictionary" section, and in the "Spell Checker Aspect Dictionary" configurations.
 
 Then go to gogo shell, and type dm help. You will normally see the dictionary.annotation:spellcheck command.
-Type 
+Then type:
  
-   dictionary.annotation:spellcheck <some words that you have configured in webconsole>
+   spellcheck <some words that you have configured in webconsole>
 
 and the command will check for proper word existence.
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java
index c7a2a9b..d23744b 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java
@@ -29,7 +29,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name="Spell Checker Aspect Dictionary (api)",
+@OCD(name="Spell Checker Aspect Dictionary",
      description = "Declare here the list of english words to be added into the default english dictionary")
 public interface DictionaryAspectConfiguration {
     @AD(description = "Dictionary aspect words")
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java
index a022c80..c164997 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java
@@ -29,7 +29,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name="Spell Checker Dictionary (api)",
+@OCD(name="Spell Checker Dictionary",
      factory = true, 
      description = "Declare here some Dictionary instances, allowing to instantiates some DictionaryService services for a given dictionary language")
 public interface DictionaryConfiguration {
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/README
index c792587..800599f 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/README
@@ -23,22 +23,23 @@
 
 A DictionaryService is defined using a FactoryConfigurationAdapterService , allowing to instantiate
 many "DictionaryService" instances when some configurations are added to the
-"Spell Checker Configuration (api)" factory pid from web
+"Spell Checker Configuration" factory pid from web
 console. The factory pid configuration metatypes are defined using the bnd "metatype" annotations
 (see DictionaryConfiguration.java).
 
 The DictionaryService is decorated with a DictionaryAspect, which you can instantiate by adding a
-configuration to the "Spell Checker Aspect Dictionary (api)" pid from web console. The
+configuration to the "Spell Checker Aspect Dictionary" pid from web console. The
 aspect configuration metatype is also declared using the bnd metatype annotations (see
 DictionaryAspectConfiguration.java). 
 
-Before running this sample, go to webconsole (http://localhost:8080/system/console/configMgr), and add some 
-words in the "Spell Checker Dictionary (api)" and in the "Spell Checker Aspect Dictionary (api)" configurations.
+Start the test: click on "dictionary.api.bndrun" descriptor, and run it.
+Then go to webconsole (http://localhost:8080/system/console/configMgr), and add some words in the 
+"Spell Checker Dictionary" section, and in the "Spell Checker Aspect Dictionary" configurations.
 
-Then go to gogo shell, and type dm help. You will normally see the dictionary:spellcheck command.
+Then go to gogo shell, and type dm help. You will normally see the dictionary.annotation:spellcheck command.
 Then type:
+ 
+   spellcheck <some words that you have configured in webconsole>
 
-  dictionary:spellcheck <some words that you have configured in webconsole> 
-
-and the command will check for proper word existence in the configuration.
+and the command will check for proper word existence.
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependency.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependency.java
index d9a201b..9cd9dfb 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependency.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependency.java
@@ -60,11 +60,9 @@
 	/**
 	 * This is the first callback: we are injected with our configuration.
 	 */
-	@ConfigurationDependency(pidClass=DynamicDependencyConfiguration.class)
-	public void updated(Dictionary<String, Object> properties) throws ConfigurationException {
-        // We use the bnd "Configurable" helper in order to get an implementation for our DictionaryConfiguration interface.
-	    if (properties != null) {
-	        DynamicDependencyConfiguration cnf = Configurable.createConfigurable(DynamicDependencyConfiguration.class, properties);
+	@ConfigurationDependency
+	public void updated(DynamicDependencyConfiguration cnf) throws ConfigurationException {
+	    if (cnf != null) {
 	        storageType = cnf.storageType();
 	        storageRequired = cnf.storageRequired();
 	    }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java
index 7c07742..8b23fa7 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java
@@ -27,7 +27,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name = "Dynamic Dependency Configuration (annotation)",
+@OCD(name = "Dynamic Dependency Configuration",
      description = "Declare here the configuration for the DynamicDependency component.")
 public interface DynamicDependencyConfiguration {
     
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/README
index ec48466..b9b66a8 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/README
@@ -16,21 +16,37 @@
  */
 
 This sample shows how to define a dynamic dependency using annotations.
+Using annotation, you can still dynamically configure from your @Init method
+some dependencies which has a "name" attribute. Such dependencies will then 
+be injected after your @Init method, but before your @Start method (if the dependencies
+are required), or after your @Start method (if the dependencies are optional).
 
 When you declare a Component:
 
 - the configuration (if any) is first injected (updated callback).
 - then all required dependencies are injected, except "named" dependencies whose required flag and filter can be configured
 dynamically from the init method.
-- then the init method (annotated with @Init) is invoked; And from there you are then able return a Map that will be used
+- then the init method (annotated with @Init) is invoked; And from there you are then able to return a Map that will be used
 to configure the required flag and the filter of all named dependencies.
 - then the start callback (annotated with @Start) is invoked when all required dependencies are injected, including named 
 dependencies that have been configured from the init method.
 
 In this sample, the "DynamicDependency" Components configures in its "init" method the dependency having a "storage" name. 
 the dependency "required" flag and filter string are loaded from a Configuration PID 
-(see the "Dynamic Dependency Configuration (annotation)" PID, from webconsole), which is defined using 
+(see the "Dynamic Dependency Configuration" PID, from webconsole), which is defined using 
 Bnd MetaType Annotations.
-So, you have configure the "Dynamic Dependency Configuration (annotation)" PID from web console before playing with this sample; then
-just type "log info|grep dynamicdep.annot" under the gogo shell.
+
+
+So, first, click on the "dynamicdep.annot.bndrun" descriptor, and run it.
+Then go to webconsole (http://localhost:8080/system/console/configMgr), and configure the "Dynamic Dependency Configuration" PID. 
+then just type "log warn" under the gogo shell:
+
+log warn
+
+Then you normally see something like:
+
+2016.02.08 21:49:26 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.annot - MapDBStorage.store(gabu,zo)
+2016.02.08 21:49:26 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.annot - start
+2016.02.08 21:49:26 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.annot - init: storage type=mapdb, storageRequired=true
+
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java
index 03fa3d9..43568d5 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java
@@ -27,7 +27,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name = "Dynamic Dependency Configuration (api)", 
+@OCD(name = "Dynamic Dependency Configuration", 
      description = "Declare here the configuration for the DynamicDependency component.")
 public interface DynamicDependencyConfiguration {
     @AD(description = "Enter the storage type to use", 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/README
index 4de67ed..55b4e26 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/README
@@ -17,16 +17,27 @@
 
 This sample shows how to define a dynamic dependency from a Component's init method.
 
-When you declare a Component:
+Let's recap the lifecycle of a DM component:
 
 - the configuration (if any) is first injected (updated callback).
+- then optional dependencies on class fields are injected.
 - then all required dependencies are injected.
 - then the init(Component c) method is invoked; And from there you are then able to add dynamic dependencies using any previously
 injected services (either configuration injected in update method, or other injected services declared from the Activator).
 - then the start callback is invoked when all required dependencies declared from the init method are injected.
 
-In this sample, the "DynamicDependency" Components defines in its "init" method a dynamic dependency on a Storage service. 
+In this sample, the "DynamicDependency" Component defines in its "init" method a dynamic dependency on a Storage service. 
 But it first loads the "storage type" and "storage required" dependency informations from a Configuration PID 
-(see the "Dynamic Dependency Configuration (api)" PID from webconsole), which is defined using Bnd MetaType Annotations.
-So, you have configure the "Dynamic Dependency Configuration (api)" PID from web console before playing with this sample; then
-just type "log info|grep dynamicdep.api" under the gogo shell.
+(see the "Dynamic Dependency Configuration" PID from webconsole), which is defined using Bnd MetaType Annotations.
+
+So, first, click on the "dynamicdep.api.bndrun" descriptor, and run it.
+Then go to webconsole (http://localhost:8080/system/console/configMgr), and configure the "Dynamic Dependency Configuration" PID. 
+then just type "log warn" under the gogo shell:
+
+log warn
+
+Then you normally see something like:
+
+2016.02.08 21:54:16 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.api - MapDBStorage.store(gabu,zo)
+2016.02.08 21:54:16 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.api - start
+2016.02.08 21:54:16 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.api - init: storage type=mapdb, storageRequired=true
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/README
index c575e65..7f5569c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/README
@@ -18,7 +18,13 @@
 This sample provides an example with one service consumer and a service provider, both declared
 using DM Annotations. The ServiceConsumer is also depending on a configuration pid  (see
 org.apache.felix.dependencymanager.samples.conf.Configurator).
-To see logs, just type this under gogo shell:
 
-g! log info|grep hello.annot
+Click on "hello.annot.bndrun" descriptor and run it. Then just type:
+
+g! log warn
+
+and you should see:
+
+2016.02.08 21:57:47 WARNING - Bundle: org.apache.felix.dependencymanager.samples.hello.annot - ServiceProviderImpl.hello
+2016.02.08 21:57:47 WARNING - Bundle: org.apache.felix.dependencymanager.samples.hello.annot - ServiceConsumer.start: calling service.hello() ...
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceConsumer.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceConsumer.java
index cee1d93..4093371 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceConsumer.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceConsumer.java
@@ -48,7 +48,7 @@
 
     @Start
     public void start() {
-        log.log(LogService.LOG_INFO, "ServiceConsumer.start: calling service.hello() ...");
+        log.log(LogService.LOG_WARNING, "ServiceConsumer.start: calling service.hello() ...");
         this.service.hello();
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceProviderImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceProviderImpl.java
index c131db3..eee8947 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceProviderImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceProviderImpl.java
@@ -34,6 +34,6 @@
 
     @Override
     public void hello() {
-        log.log(LogService.LOG_INFO, "ServiceProviderImpl.hello");
+        log.log(LogService.LOG_WARNING, "ServiceProviderImpl.hello");
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/README
index ff16694..05545f3 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/README
@@ -17,7 +17,13 @@
 
 This sample provides a DM Activator declaring one service consumer and a service provider. The
 ServiceConsumer is also depending on a configuration pid  (see org.apache.felix.dependencymanager.samples.conf.Configurator).
-To see logs, just type this under gogo shell:
 
-g! log info|grep hello.annot
+Click on "hello.api.bndrun" descriptor and run it. Then just type:
+
+g! log warn
+
+and you should see:
+
+2016.02.08 21:59:31 WARNING - Bundle: org.apache.felix.dependencymanager.samples.hello.api - ServiceProviderImpl.hello
+2016.02.08 21:59:31 WARNING - Bundle: org.apache.felix.dependencymanager.samples.hello.api - ServiceConsumer.start: calling service.hello()
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceConsumer.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceConsumer.java
index e287667..058a5db 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceConsumer.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceConsumer.java
@@ -37,7 +37,7 @@
     }
 
     public void start() {
-        log.log(LogService.LOG_INFO, "ServiceConsumer.start: calling service.hello()");
+        log.log(LogService.LOG_WARNING, "ServiceConsumer.start: calling service.hello()");
         this.service.hello();
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceProviderImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceProviderImpl.java
index 4da110c..400f67b 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceProviderImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceProviderImpl.java
@@ -30,6 +30,6 @@
 
     @Override
     public void hello() {
-        log.log(LogService.LOG_INFO, "ServiceProviderImpl.hello");
+        log.log(LogService.LOG_WARNING, "ServiceProviderImpl.hello");
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java
index d71fa00..7134c9c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java
@@ -18,6 +18,9 @@
  */
 package org.apache.felix.dependencymanager.samples.tpool;
 
+import java.util.Properties;
+
+import org.apache.felix.dependencymanager.samples.tpool.executor.ComponentExecutorFactoryImpl;
 import org.apache.felix.dm.ComponentExecutorFactory;
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
@@ -32,7 +35,18 @@
     @Override
     public void init(BundleContext context, DependencyManager mgr) throws Exception {
         mgr.add(createComponent()
-            .setInterface(ComponentExecutorFactory.class.getName(), null)
-            .setImplementation(ComponentExecutorFactoryImpl.class));
+           .setInterface(ComponentExecutorFactory.class.getName(), null)
+           .setImplementation(ComponentExecutorFactoryImpl.class));
+        
+        // Create two synchronous components
+        mgr.add(createComponent().setImplementation(new MyComponent("Component 1")));
+        mgr.add(createComponent().setImplementation(new MyComponent("Component 2")));
+
+        // And two components which will be managed and started concurrently.
+        Properties properties = new Properties();
+        properties.put("parallel", "true");
+
+        mgr.add(createComponent().setImplementation(new MyComponent("Parallel Component 3")).setServiceProperties(properties));
+        mgr.add(createComponent().setImplementation(new MyComponent("Parallel Component 4")).setServiceProperties(properties));
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/MyComponent.java
similarity index 65%
rename from dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java
rename to dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/MyComponent.java
index 63fb402..d637db1 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/MyComponent.java
@@ -18,21 +18,18 @@
  */
 package org.apache.felix.dependencymanager.samples.tpool;
 
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-import org.apache.felix.dm.Component;
-import org.apache.felix.dm.ComponentExecutorFactory;
-
 /**
+ * A first component that is not handled in parallel.
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-public class ComponentExecutorFactoryImpl implements ComponentExecutorFactory {
-    final static int SIZE = Runtime.getRuntime().availableProcessors();
-    final static Executor m_threadPool = Executors.newFixedThreadPool(SIZE);
+public class MyComponent {
+    private final String m_name;
+    
+    MyComponent(String name) {
+        m_name = name;
+    }
 
-    @Override
-    public Executor getExecutorFor(Component component) {
-        return m_threadPool;
+    public void start() throws InterruptedException {
+        System.out.println("Starting Component " + m_name + " current thread=" + Thread.currentThread());
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/README
index b75404e..4e549fe 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/README
@@ -14,17 +14,50 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+The Activator you will find in this example registers a ComponentExecutorFactory in the OSGi service
+registry to enable parallel activation of (some or all) components 
 
-The Activator you will find in this bundle registers a ComponentExecutorFactory in the OSGi service
-registry to enable parallelism. DependencyManager core will use the Executor returned by the
-ComponentExecutorFactory in order to handle components dependencies/lifecycle callbacks
-concurrently.
+DM uses a whiteboard pattern approach in order to handle components concurrently: your application has to register a ComponentExecutorFactory in 
+the registry and DM will use it when deciding if components must be started concurrently (or not). By implementing yourself a ComponentExecutorFactory, 
+you are allowed to first decide if a given component should be started concurrently, and also choose the threadpool you like, 
+possibly a standard jdk threadpool, or some other advanced queuing libraries, like "hawtdispatch" ...
 
-Important note: since we are using the DM API to declare our threadpool, we have to disable
-parallelism for our "org.apache.felix.dependencymanager.samples.tpool.ThreadPool" component. 
-To do so, we define the following OSGi service property (see the bnd.bnd configuration file):
+The ComponentExecutorFactory has a single method:
 
-->
+    /**
+     * Returns an Executor used to handle and start the given component, or null if the component must be started synchronously.
+     */
+    public Executor getExecutorFor(Component component) {
+    }
+    
+To indicate that DM should "wait for" a ComponentExecutorFactory before starting to handle any components, then you have to declare 
+in the bundle context properties the following parameter:
 
-org.apache.felix.dependencymanager.parallelism=!org.apache.felix.dependencymanager.samples.tpool,*
+    org.apache.felix.dependencymanager.parallelism=*
 
+Using the above property will ensure that DM cache any added DM components until ComponentExecutorFactory is available from the OSGi registry.
+Hence, using the above property avoids you to use start level service in order to make sure all components are started concurrently, even if the
+bundle containing your ComponentExecutorFactory service is started lastly.
+
+Finally, if you want to start all components in parallel, except some; then you can specify the list of packages to be excluded like this:
+
+    org.apache.felix.dependencymanager.parallelism=!package.to.exclude,*
+
+Here, components having a package that is starting with "package.to.exclude" won't be started concurrently.
+
+Now, let's describe the example: it registers a ComponentExecutorFactory that only makes concurrent components 
+which provide a "parallel=true" service property (you can specify a service property even if the component does not register any services).
+Since we define ComponentExecutorFactory using DM API, we also have to disable parallelism for it, by declaring its package in the following parameter from 
+the bundle context properties:
+
+   org.apache.felix.dependencymanager.parallelism=!org.apache.felix.dependencymanager.samples.tpool.executor,*
+   
+To start the example, click on "tpool.bndrun" descriptor and run it.
+You will then see:
+
+Starting Component Component 1 current thread=Thread[main,5,main]
+Starting Component Component 2 current thread=Thread[main,5,main]
+Starting Component Parallel Component 3 current thread=Thread[pool-3-thread-1,5,main]
+Starting Component Parallel Component 4 current thread=Thread[pool-3-thread-2,5,main]
+
+Here, the Component 3 and 4 are started in the threadpool, while the Component 2 is started synchronously from the main thread.
\ No newline at end of file
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/executor/ComponentExecutorFactoryImpl.java
similarity index 65%
copy from dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java
copy to dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/executor/ComponentExecutorFactoryImpl.java
index 63fb402..8518f17 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/executor/ComponentExecutorFactoryImpl.java
@@ -16,23 +16,35 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.dependencymanager.samples.tpool;
+package org.apache.felix.dependencymanager.samples.tpool.executor;
 
+import java.util.Dictionary;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 
 import org.apache.felix.dm.Component;
+import org.apache.felix.dm.ComponentDeclaration;
 import org.apache.felix.dm.ComponentExecutorFactory;
 
 /**
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 public class ComponentExecutorFactoryImpl implements ComponentExecutorFactory {
-    final static int SIZE = Runtime.getRuntime().availableProcessors();
-    final static Executor m_threadPool = Executors.newFixedThreadPool(SIZE);
+    final static Executor m_threadPool = Executors.newFixedThreadPool(4);
 
+    /**
+     * Make concurrent a component only if it has a "parallel=true" property.
+     */
     @Override
     public Executor getExecutorFor(Component component) {
-        return m_threadPool;
+        ComponentDeclaration decl = component.getComponentDeclaration();
+        Dictionary<String, Object> properties = decl.getServiceProperties();
+        if (properties != null && "true".equals(properties.get("parallel"))) {
+            // the component will be handled in the threadpool.
+            return m_threadPool;
+        } else {
+            // the component won't be handled in parallel.
+            return null; 
+        }
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bnd
index 428c751..809a515 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bnd
@@ -14,8 +14,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-Private-Package:  \
-	org.apache.felix.dependencymanager.samples.tpool
+Private-Package: \
+	org.apache.felix.dependencymanager.samples.tpool,\
+	org.apache.felix.dependencymanager.samples.tpool.executor
 Bundle-Activator: org.apache.felix.dependencymanager.samples.tpool.Activator
 Bundle-Description: Dependency Manager threadpool used by examples 
 Bundle-Name: Dependency Manager Examples ThreadPool
\ No newline at end of file
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bndrun
new file mode 100644
index 0000000..add932b
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bndrun
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.tpool;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.parallel='!org.apache.felix.dependencymanager.samples.tpool.executor, *',\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
+