Fixed some javadocs.

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1731238 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/BundleDependencyBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/BundleDependencyBuilder.java
index 7d87a12..cbee9fe 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/BundleDependencyBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/BundleDependencyBuilder.java
@@ -94,7 +94,7 @@
 
     /**
      * Sets property propagation. If set to <code>true</code> any bundle manifest properties will be added
-     * to the service properties of the component that has this dependency (if it registers as a service).
+     * to the service properties of the component that declares this dependency (if it provides a service).
      * 
      * @param propagate <code>true</code> to propagate the bundle manifest properties
      * @return the bundle dependency builder
@@ -173,7 +173,7 @@
     
     /**
      * Specifies a callback instance used to invoke the reflection based callbacks on it.
-     * @param callbackInstance the instance to invoke the callbacks on
+     * @param callbackInstance the instance to invoke the reflection based callbacks on
      * @return this builder
      * @see #add(String)
      * @see #change(String)
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ComponentBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ComponentBuilder.java
index 206c9e9..1de2b56 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ComponentBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ComponentBuilder.java
@@ -46,7 +46,7 @@
     B impl(Object impl);   
     
     /**
-     * Sets the factory to use to create the implementation. You can specify both the factory class and method to invoke. The method should return the implementation, 
+     * Sets the factory to use when creating the implementation. You can specify both the factory class and method to invoke. The method should return the implementation, 
      * and can use any method to create it. Actually, this can be used together with setComposition to create a composition of instances that work together to implement 
      * a component. The factory itself can also be instantiated lazily by not specifying an instance, but a Class. 
      * 
@@ -88,7 +88,7 @@
     /**
      * Configures a factory used to create this component implementation using a Factory object and a "getComposition" factory method.
      * the Factory method may then return multiple objects that will be part of this component implementation, and 
-     * all of them will be searched for injecting any of the dependencies.
+     * all of them will be searched when injecting any of the dependencies.
      * 
      * Example:
      * 
@@ -424,7 +424,7 @@
      * This method is useful because when it is invoked, all required dependencies defines in the Activator
      * are already injected, and you can then add more extra dependencies from the init() method.
      * And once all extra dependencies will be available and injected, then the "start" callback will be invoked.
-     * The dependency manager will look for a method of this name with the following signatures,
+     * <p>The dependency manager will look for a method of this name with the following signatures,
      * in this order:
      * <ol>
      * <li>method(Component component)</li>
@@ -438,7 +438,7 @@
     
     /**
      * Sets the name of the method used as the "start" callback. This method, when found, is
-     * invoked as part of the life cycle management of the component implementation. The
+     * invoked as part of the life cycle management of the component implementation. <p>The
      * dependency manager will look for a method of this name with the following signatures,
      * in this order:
      * <ol>
@@ -453,7 +453,7 @@
     
     /**
      * Sets the name of the method used as the "stop" callback. This method, when found, is
-     * invoked as part of the life cycle management of the component implementation. The
+     * invoked as part of the life cycle management of the component implementation. <p>The
      * dependency manager will look for a method of this name with the following signatures,
      * in this order:
      * <ol>
@@ -468,7 +468,7 @@
     
     /**
      * Sets the name of the method used as the "destroy" callback. This method, when found, is
-     * invoked as part of the life cycle management of the component implementation. The
+     * invoked as part of the life cycle management of the component implementation. <p>The
      * dependency manager will look for a method of this name with the following signatures,
      * in this order:
      * <ol>
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ConfigurationDependencyBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ConfigurationDependencyBuilder.java
index 60a3537..94b5250 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ConfigurationDependencyBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ConfigurationDependencyBuilder.java
@@ -156,7 +156,9 @@
         
     /**
      * Sets a callback method to call on the component implementation class(es) when the configuration is updated. When the configuration is lost, the callback is invoked
-     * with a null dictionary. The following callback signatures are supported and searched in the following order:
+     * with a null dictionary. 
+     * 
+     * <p>The following callback signatures are supported and searched in the following order:
      * <ol>
      * <li>method(Dictionary)</li>
      * <li>method(Component, Dictionary)</li>
@@ -171,6 +173,14 @@
      * Sets a callback method to call on the component implementation class(es) when the configuration is updated. The callback is invoked with a configuration type
      * argument (null if the configuration is lost).
      * 
+     * <p>The following callback signatures are supported and searched in the following order:
+     * <ol>
+     * <li>method(Dictionary)</li>
+     * <li>method(Component, Dictionary)</li>
+     * <li>method(Configuration) // same type as the one specified in the "configType" argument</li>
+     * <li>method(Component, Configuration) // Configuration has the same type as the one specified in the "configType" argument</li>
+     * </ol>
+     * 
      * @param configType the type of a configuration that is passed as argument to the callback
      * @param updateMethod the callback to call on the component instance(s) when the configuration is updated.
      * @return this builder
@@ -202,6 +212,14 @@
      * component implementation instance(s).
      * The callback is invoked with a configuration type argument (null of the configuration is lost).
      * 
+     * <p>The following callback signatures are supported and searched in the following order:
+     * <ol>
+     * <li>method(Dictionary)</li>
+     * <li>method(Component, Dictionary)</li>
+     * <li>method(Configuration) // same type as the one specified in the "configType" argument</li>
+     * <li>method(Component, Configuration) // Configuration has the same type as the one specified in the "configType" argument</li>
+     * </ol>
+     * 
      * @param configType the type of a configuration that is passed as argument to the callback
      * @param callbackInstance the object instance on which the updatedMethod is invoked
      * @param updateMethod the callback to call on the callbackInstance when the configuration is updated.
@@ -244,7 +262,7 @@
     <T, U> ConfigurationDependencyBuilder update(Class<U> configType, CbConfiguration<T, U> callback);
     
     /**
-     * Sets a reference to a "callback(configType, Component)" method from one of the component implementation classes. 
+     * Sets a reference to a "callback(Configuration, Component)" method from one of the component implementation classes. 
      * The method is invoked with two args: configuration type, Component. The configuration type argument is null if the configuration is lost.
      *
      * @param <T> The type of the target component implementation class on which the method is invoked
@@ -275,7 +293,7 @@
     ConfigurationDependencyBuilder update(InstanceCbDictionaryComponent callback);
 
     /**
-     * Sets a reference to a "callback(ConfigType)" method from an Object instance. The configuration type argument is null if the configuration is lost.
+     * Sets a reference to a "callback(Configuration)" method from an Object instance. The configuration type argument is null if the configuration is lost.
      *
      * @param <T> the type of the configuration interface accepted by the callback method.
      * @param configType the class of the configuration that is passed as argument to the callback
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/FactoryPidAdapterBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/FactoryPidAdapterBuilder.java
index b5771b5..79a48ce 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/FactoryPidAdapterBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/FactoryPidAdapterBuilder.java
@@ -17,8 +17,10 @@
  * 
  * This builded supports type safe configuration types. For a given factory configuration, you can specify an interface of your choice,
  * and DM will implement it using a dynamic proxy that converts interface methods to lookups in the actual factory configuration dictionary. 
+ * For more information about configuration types, please refer to {@link ConfigurationDependencyBuilder}.
  * 
- * <p> Example that defines a factory configuration adapter service for the "foo.bar" factory pid:
+ * <p> Example that defines a factory configuration adapter service for the "foo.bar" factory pid. For each factory pid instance, 
+ * an instance of the DictionaryImpl component will be created.
  * 
  * <pre> {@code
  * public class Activator extends DependencyManagerActivator {
@@ -64,16 +66,16 @@
     FactoryPidAdapterBuilder factoryPid(String pid);
         
     /**
-     * Specifies if the public properties (not starting with a dot) should be propagated in the adapter service properties (false by default).
+     * Specifies if the public properties (not starting with a dot) should be propagated to the adapter service properties (false by default).
      * 
      * @return this builder.
      */
     FactoryPidAdapterBuilder propagate();
     
     /**
-     * Specifies if the public properties (not starting with a dot) should be propagated in the adapter service properties (false by default).
+     * Specifies if the public properties (not starting with a dot) should be propagated to the adapter service properties (false by default).
      * 
-     * @param propagate true if the public properties should be propagated in the adapter service properties (false by default).
+     * @param propagate true if the public properties should be propagated to the adapter service properties (false by default).
      * @return this builder.
      */
     FactoryPidAdapterBuilder propagate(boolean propagate);
@@ -82,12 +84,12 @@
      * Specifies a callback method that will be called on the component instances when the configuration is injected.
      * 
      * @param updateMethod the method to call on the component instances when the configuration is available ("updated" by default).
-     * The following method signatures are supported:
      * 
-     * <pre> {@code
-     *    method(Dictionary properties)
-     *    method(Component component, Dictionary properties)
-     * }</pre>
+     * <p>The following method signatures are supported:
+     * <ol>
+     * <li> method(Dictionary properties)
+     * <li> method(Component component, Dictionary properties)
+     * </ol>
      * 
      * @return this builder
      */
@@ -97,6 +99,14 @@
      * Sets a callback method to call on the component implementation class(es) when the configuration is updated. 
      * The callback is invoked with a configuration type argument.
      * 
+     * <p>The following callback signatures are supported and searched in the following order:
+     * <ol>
+     * <li>method(Dictionary)</li>
+     * <li>method(Component, Dictionary)</li>
+     * <li>method(Configuration) // same type as the one specified in the "configType" argument</li>
+     * <li>method(Component, Configuration) // Configuration has the same type as the one specified in the "configType" argument</li>
+     * </ol>
+     * 
      * @param configType the type of a configuration that is passed as argument to the callback
      * @param updateMethod the callback to call on the component instance(s) when the configuration is updated.
      * @return this builder
@@ -123,6 +133,14 @@
      * Specifies a callback instance method that will be called on a given object instance when the configuration is injected.
      * The callback is invoked with a configuration type argument.
      * 
+     * <p>The following callback signatures are supported and searched in the following order:
+     * <ol>
+     * <li>method(Dictionary)</li>
+     * <li>method(Component, Dictionary)</li>
+     * <li>method(Configuration) // same type as the one specified in the "configType" argument</li>
+     * <li>method(Component, Configuration) // Configuration has the same type as the one specified in the "configType" argument</li>
+     * </ol>
+     * 
      * @param configType the type of a configuration that is passed as argument to the callback
      * @param callbackInstance the Object instance on which the updated callback will be invoked.
      * @param updateMethod the method to call on the given object instance when the configuration is available. The callback is invoked
@@ -157,7 +175,7 @@
      * Specifies a method reference that will be called on one of the component classes when the configuration is injected
      * 
      * @param <T> the type of the component implementation class on which the callback is invoked on.
-     * @param callback the reference to a method on one of the component classes. The method may takes as parameter a Dictionary and a Component.
+     * @param callback the reference to a method on one of the component classes. The method may takes as arguments a Dictionary and a Component.
      * @return this builder
      */
     <T> FactoryPidAdapterBuilder update(CbDictionaryComponent<T> callback);
@@ -169,7 +187,7 @@
      * @param <T> the type of the component implementation class on which the callback is invoked on.
      * @param <U> the configuration type accepted by the callback method.
      * @param configType the type of a configuration that is passed as argument to the callback
-     * @param callback the reference to a method on one of the component classes. The method may takes as parameter a configuration type and a Component.
+     * @param callback the reference to a method on one of the component classes. The method may takes as arguments a configuration type and a Component.
      * @return this builder
      */
     <T, U> FactoryPidAdapterBuilder update(Class<U> configType, CbConfigurationComponent<T, U> callback);
@@ -209,7 +227,7 @@
      * 
      * @param <T> the configuration type accepted by the callback method.
      * @param configType the type of a configuration that is passed as argument to the callback
-     * @param callback the method to call on a given object instance when the configuration is available. The callback takes as argument a
+     * @param callback the method to call on a given object instance when the configuration is available. The callback takes as arguments a
      * configuration type, and a Component parameter. 
      * @return this builder
      */
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/FluentProperty.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/FluentProperty.java
index d030bf3..096f9c6 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/FluentProperty.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/FluentProperty.java
@@ -5,7 +5,7 @@
 /**
  * Lambda allowing to define fluent service properties. Property names are deduces from the lambda parameter name.
  * 
- * <p> Example of a component which provides fluent properties ("foo=bar"; "foo2=Integer(123)):
+ * <p> Example of a component which provides fluent properties {"foo"="bar"; "foo2"=Integer(123)}:
  * 
  * <pre>{@code
  * public class Activator extends DependencyManagerActivator {
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java
index d611a31..2bb0961 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java
@@ -7,7 +7,7 @@
  * The aspect will be registered with the same interface and properties as the original service, plus any extra properties you supply here.
  * Multiple Aspects of the same service are chained and ordered using aspect ranks.
  * 
- * <p> Code example that provides a "LogService" aspect that performs spell-checking of each log message. 
+ * <p> Code example which provides a "LogService" aspect that performs spell-checking of each log message. 
  * The aspect decorates a LogService. The aspect also depends on an Dictionary service that is internally used to perform log spell checking.
  * The LogService and Dictionary services are injected in the aspect implementation using reflection on class fields:
  * 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceCallbacksBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceCallbacksBuilder.java
index 53723c2..603bd08 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceCallbacksBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceCallbacksBuilder.java
@@ -24,8 +24,6 @@
 /**
  * Builds a service dependency callback (required by default).
  * 
- * TODO: fix javadoc for method reference (do the same as in ConfigurationDependencyBuilder: use double quotes ...
- * 
  * A Service may be injected in a bind-method of a component or an object instance using this builder.
  * The builder supports reflection based callbacks (same as with the original DM API), as well as java8 method reference based callbacks.
  * 
@@ -62,23 +60,23 @@
  * swapMethod(ServiceReference<S> oldRef, S old, ServiceReference<S> newRef, S newService, Component component)
  * }</pre>
  * 
- * <p> Here is an example of a Component that defines a dependency of a LogService which is injected in the "bindLogService" method using a ServiceCallbacksBuilder:
- * The withSvc(...)" declaration defines a method reference on the "ComponentImpl::bindLogService" method (using a lambda):
+ * <p> Here is an example of a Component that defines a dependency of a LogService which is injected in the "setLog" method using a ServiceCallbacksBuilder:
+ * The withSvc(...)" declaration defines a method reference on the "Pojo::setLog" method (using a lambda):
  * 
  * <pre> {@code
  * public class Activator extends DependencyManagerActivator {
  *    public void init(BundleContext ctx, DependencyManager dm) throws Exception { 
- *       component(comp -> comp.impl(ComponentImpl.class).withSvc(LogService.class, log -> log.add(ComponentImpl::bindLogService)));
+ *       component(comp -> comp.impl(Pojo.class).withSvc(LogService.class, log -> log.add(Pojo::setLog)));
  *    }
  * }}</pre>
  *
- * <p> Same example, but we inject the dependency in an object instance that we already have in hand:
+ * <p> Same example, but we inject the dependency to an object instance that we already have in hand:
  * 
  * <pre> {@code
  * public class Activator extends DependencyManagerActivator {
  *    public void init(BundleContext ctx, DependencyManager dm) throws Exception {
- *       ComponentImpl impl = new ComponentImpl();
- *       component(comp -> comp.impl(impl).withSvc(LogService.class, log -> log.add(impl::bindLogService)));
+ *       Pojo impl = new Pojo();
+ *       component(comp -> comp.impl(impl).withSvc(LogService.class, log -> log.add(impl::setLog)));
  *    }
  * }}</pre>
  * 
@@ -87,17 +85,7 @@
  * <pre> {@code
  * public class Activator extends DependencyManagerActivator {
  *    public void init(BundleContext ctx, DependencyManager dm) throws Exception {
- *       component(comp -> comp.impl(ComponentImpl::class).withSvc(LogService.class, log -> log.add("bindLogService")));
- *    }
- * }}</pre>
- *
- * <p> Same example, but we inject the dependency in an object instance that we already have in hand:
- * 
- * <pre> {@code
- * public class Activator extends DependencyManagerActivator {
- *    public void init(BundleContext ctx, DependencyManager dm) throws Exception {
- *       ComponentImpl impl = new ComponentImpl();
- *       component(comp -> comp.impl(impl).withSvc(LogService.class, log -> log.callbackInstance(impl).add("bindLogService")));
+ *       component(comp -> comp.impl(Pojo::class).withSvc(LogService.class, log -> log.add("setLog")));
  *    }
  * }}</pre>
  *
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceDependencyBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceDependencyBuilder.java
index 8ad3707..95a9803 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceDependencyBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceDependencyBuilder.java
@@ -13,8 +13,6 @@
  * control the default mode (required or optional) using the "org.apache.felix.dependencymanager.lambda.dependencymode"
  * system property which can be set to either "required" or "optional" ("required" by default).
  * 
- * Unlike with original DM, dependencies are required by default.
- *
  * @param <S> the type of the service dependency
  */
 public interface ServiceDependencyBuilder<S> extends DependencyBuilder<ServiceDependency>, ServiceCallbacksBuilder<S, ServiceDependencyBuilder<S>> {
@@ -107,7 +105,7 @@
     ServiceDependencyBuilder<S> defImpl(Object defaultImpl);
     
     /**
-     * Sets a timeout for this dependency. A timed dependency blocks the invoker thread is the required dependency is currently unavailable, until it comes up again.
+     * Sets a timeout for this dependency. A timed dependency blocks the invoker thread if the required dependency is currently unavailable, until it comes up again.
      * @param timeout the timeout to wait in milliseconds when the service disappears. If the timeout expires, an IllegalStateException is thrown
      * when the missing service is invoked.
      * 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbConfiguration.java
index 9f8a2e8..1275bac 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbConfiguration.java
@@ -1,66 +1,20 @@
 package org.apache.felix.dm.lambda.callbacks;
 
-import java.util.Collection;
 import java.util.Dictionary;
-import java.util.Map;
 import java.util.Objects;
 
+import org.apache.felix.dm.lambda.ConfigurationDependencyBuilder;
+
 /**
  * Represents a callback(Configuration) that is invoked on a Component implementation class. 
- * The callback which accepts a type-safe configuration class for wrapping properties behind a dynamic proxy interface.
+ * The callback accepts a type-safe configuration class for wrapping properties behind a dynamic proxy interface.
  * 
  * <p> The T generic parameter represents the type of the class on which the callback is invoked on. 
  * <p> The U generic parameter represents the type of the configuration class passed to the callback argument. 
  * 
- * <p> Using such callback provides a way for creating type-safe configurations from a actual {@link Map} or {@link Dictionary} that is
+ * <p> Using such callback provides a way for creating type-safe configurations from the actual {@link Dictionary} that is
  * normally injected by Dependency Manager.
- * The callback accepts in argument an interface that you have to provide, and DM will inject a proxy that converts
- * method calls from your configuration-type to lookups in the actual map or dictionary. The results of these lookups are then
- * converted to the expected return type of the invoked configuration method.<br>
- * As proxies are injected, no implementations of the desired configuration-type are necessary!
- * </p>
- * <p>
- * The lookups performed are based on the name of the method called on the configuration type. The method names are
- * "mangled" to the following form: <tt>[lower case letter] [any valid character]*</tt>. Method names starting with
- * <tt>get</tt> or <tt>is</tt> (JavaBean convention) are stripped from these prefixes. For example: given a dictionary
- * with the key <tt>"foo"</tt> can be accessed from a configuration-type using the following method names:
- * <tt>foo()</tt>, <tt>getFoo()</tt> and <tt>isFoo()</tt>.
- * </p>
- * <p>
- * The return values supported are: primitive types (or their object wrappers), strings, enums, arrays of
- * primitives/strings, {@link Collection} types, {@link Map} types, {@link Class}es and interfaces. When an interface is
- * returned, it is treated equally to a configuration type, that is, it is returned as a proxy.
- * </p>
- * <p>
- * Arrays can be represented either as comma-separated values, optionally enclosed in square brackets. For example:
- * <tt>[ a, b, c ]</tt> and <tt>a, b,c</tt> are both considered an array of length 3 with the values "a", "b" and "c".
- * Alternatively, you can append the array index to the key in the dictionary to obtain the same: a dictionary with
- * "arr.0" =&gt; "a", "arr.1" =&gt; "b", "arr.2" =&gt; "c" would result in the same array as the earlier examples.
- * </p>
- * <p>
- * Maps can be represented as single string values similarly as arrays, each value consisting of both the key and value
- * separated by a dot. Optionally, the value can be enclosed in curly brackets. Similar to array, you can use the same
- * dot notation using the keys. For example, a dictionary with 
- * 
- * <pre>{@code "map" => "{key1.value1, key2.value2}"}</pre> 
- * 
- * and a dictionary with <p>
- * 
- * <pre>{@code "map.key1" => "value1", "map2.key2" => "value2"}</pre> 
- * 
- * result in the same map being returned.
- * Instead of a map, you could also define an interface with the methods <tt>getKey1()</tt> and <tt>getKey2</tt> and use
- * that interface as return type instead of a {@link Map}.
- * 
- * <p>
- * In case a lookup does not yield a value from the underlying map or dictionary, the following rules are applied:
- * <ol>
- * <li>primitive types yield their default value, as defined by the Java Specification;
- * <li>string, {@link Class}es and enum values yield <code>null</code>;
- * <li>for arrays, collections and maps, an empty array/collection/map is returned;
- * <li>for other interface types that are treated as configuration type a null-object is returned.
- * </ol>
- * </p>
+ * For more information about configuration types, please refer to {@link ConfigurationDependencyBuilder}.
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbConfigurationComponent.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbConfigurationComponent.java
index 1e34dc0..98df3ff 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbConfigurationComponent.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbConfigurationComponent.java
@@ -1,16 +1,22 @@
 package org.apache.felix.dm.lambda.callbacks;
 
+import java.util.Dictionary;
 import java.util.Objects;
 
 import org.apache.felix.dm.Component;
+import org.apache.felix.dm.lambda.ConfigurationDependencyBuilder;
 
 /**
  * Represents a callback(Configuration, Component) which accepts a configuration type for wrapping properties
- * behind a dynamic proxy interface. For more informations about configuration type, please refer to {@link CbConfiguration}.
+ * behind a dynamic proxy interface.
  * 
  * <p> The T generic parameter represents the type of the class on which the callback is invoked on. 
  * <p> The U generic parameter represents the type of the configuration class passed to the callback argument. 
  * 
+ * <p> Using such callback provides a way for creating type-safe configurations from the actual {@link Dictionary} that is
+ * normally injected by Dependency Manager.
+ * For more information about configuration types, please refer to {@link ConfigurationDependencyBuilder}.
+ * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 @FunctionalInterface
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbComponent.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbComponent.java
index 20888fd..ea54a10 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbComponent.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbComponent.java
@@ -5,7 +5,7 @@
 import org.apache.felix.dm.Component;
 
 /**
- * Represents a callback(Component)  on an Object instance.
+ * Represents a callback(Component) invoked on an Object instance.
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfiguration.java
index 6f60523..d6118c9 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfiguration.java
@@ -1,13 +1,19 @@
 package org.apache.felix.dm.lambda.callbacks;
 
+import java.util.Dictionary;
 import java.util.Objects;
 
+import org.apache.felix.dm.lambda.ConfigurationDependencyBuilder;
+
 /**
  * Represents a reference to a callback on an Object instance that takes Configuration type as argument.
- * For more informations about configuration type, please refer to {@link CbConfiguration}.
  * 
  * <p> The T generic parameter represents the type of the configuration class passed to the callback argument. 
  * 
+ * <p> Using such callback provides a way for creating type-safe configurations from the actual {@link Dictionary} that is
+ * normally injected by Dependency Manager.
+ * For more information about configuration types, please refer to {@link ConfigurationDependencyBuilder}.
+ * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 @FunctionalInterface
diff --git a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfigurationComponent.java b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfigurationComponent.java
index 1feaea3..634f892 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfigurationComponent.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfigurationComponent.java
@@ -1,16 +1,20 @@
 package org.apache.felix.dm.lambda.callbacks;
 
+import java.util.Dictionary;
 import java.util.Objects;
 
 import org.apache.felix.dm.Component;
+import org.apache.felix.dm.lambda.ConfigurationDependencyBuilder;
 
 /**
- * Represents a callback(Configuration, Component) that is invoked on a Component implementation class. 
- * The type of the class on which the callback is invoked on is represented by the T generic parameter.
- * For more informations about configuration type, please refer to {@link CbConfiguration}.
+ * Represents a callback(Configuration, Component) invoked on an Object instance.
  * 
  * <p> The T generic parameter represents the type of the configuration class passed to the callback argument. 
  * 
+ * <p> Using such callback provides a way for creating type-safe configurations from the actual {@link Dictionary} that is
+ * normally injected by Dependency Manager.
+ * For more information about configuration types, please refer to {@link ConfigurationDependencyBuilder}.
+ * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 @FunctionalInterface
@@ -20,7 +24,7 @@
      * @param instance the Component implementation instance on which the callback is invoked on. 
      * @param component the callback Component 
      */
-    void accept(T instance, Component component);
+    void accept(T configType, Component component);
 
     default InstanceCbConfigurationComponent<T> andThen(InstanceCbConfigurationComponent<T> after) {
         Objects.requireNonNull(after);