Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/device/Activator.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/device/Activator.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/device/Activator.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/device/Activator.java
 Wed Jan 13 22:20:11 2016
@@ -19,7 +19,7 @@
 package org.apache.felix.dependencymanager.lambda.samples.device;
 
 import static java.lang.System.out;
-import static org.apache.felix.dm.builder.lambda.CB.ADD;
+import static org.apache.felix.dm.builder.lambda.Cb.ADD;
 
 import org.apache.felix.dm.builder.lambda.DependencyActivatorBase;
 import org.osgi.service.log.LogService;
@@ -47,10 +47,10 @@ public class Activator extends Dependenc
     private void createDeviceAndParameter(int id) {
         component(buicomplder -> buicomplder
             .factory(() -> new DeviceImpl(id))
-            .provides(Device.class).properties("device.id", id));
+            .provides(Device.class, "device.id", id));
                        
         component(comp -> comp
             .factory(() -> new DeviceParameterImpl(id))
-            .provides(DeviceParameter.class).properties("device.id", id));
+            .provides(DeviceParameter.class, "device.id", id));
     }
 }

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/factory/Activator.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/factory/Activator.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/factory/Activator.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/factory/Activator.java
 Wed Jan 13 22:20:11 2016
@@ -19,7 +19,7 @@
 package org.apache.felix.dependencymanager.lambda.samples.factory;
 
 import static java.lang.System.out;
-import static org.apache.felix.dm.builder.lambda.CB.ADD;
+import static org.apache.felix.dm.builder.lambda.Cb.ADD;
 
 import org.apache.felix.dm.builder.lambda.DependencyActivatorBase;
 import org.osgi.service.log.LogService;

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/future/Activator.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/future/Activator.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/future/Activator.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/future/Activator.java
 Wed Jan 13 22:20:11 2016
@@ -19,7 +19,7 @@
 package org.apache.felix.dependencymanager.lambda.samples.future;
 
 import static java.lang.System.out;
-import static org.apache.felix.dm.builder.lambda.CB.ADD;
+import static org.apache.felix.dm.builder.lambda.Cb.ADD;
 
 import java.util.List;
 import java.util.concurrent.CompletableFuture;

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/hello/Activator.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/hello/Activator.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/hello/Activator.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/hello/Activator.java
 Wed Jan 13 22:20:11 2016
@@ -19,7 +19,7 @@
 package org.apache.felix.dependencymanager.lambda.samples.hello;
 
 import static java.lang.System.out;
-import static org.apache.felix.dm.builder.lambda.CB.ADD;
+import static org.apache.felix.dm.builder.lambda.Cb.ADD;
 
 import org.apache.felix.dm.builder.lambda.DependencyActivatorBase;
 import org.osgi.service.cm.ConfigurationAdmin;
@@ -35,17 +35,14 @@ public class Activator extends Dependenc
        
         component(comp -> comp
             .impl(ServiceProviderImpl.class)
-            .provides(ServiceProvider.class)
-            .properties(foo -> "bar", gabu -> "zo") // property names are 
deduced from lambda parameter names
+            .provides(ServiceProvider.class, property1 -> "value1", property2 
-> 123) // property names are deduced from lambda parameter names
             .start(ServiceProviderImpl::activate)
             .withService(LogService.class, srv -> srv.cb(ADD, 
ServiceProviderImpl::bind)));
-            // service can also be injected using reflection:
-            // .withService(LogService.class, srv -> srv.cb("bind")));
 
         component(comp -> comp
             .impl(ServiceConsumer.class)
             .withService(LogService.class)
-            .withService(ServiceProvider.class, srv -> 
srv.filter("(foo=bar)")) 
+            .withService(ServiceProvider.class, srv -> 
srv.filter("(property1=value1)")) 
             .withConfiguration(conf -> 
conf.pid(ServiceConsumer.class).cb(ServiceConsumer::updated)));  
         
         component(comp -> 
comp.impl(Configurator.class).withService(ConfigurationAdmin.class));

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/rx/completable/Activator.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/rx/completable/Activator.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/rx/completable/Activator.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/rx/completable/Activator.java
 Wed Jan 13 22:20:11 2016
@@ -19,7 +19,7 @@
 package org.apache.felix.dependencymanager.lambda.samples.rx.completable;
 
 import static java.lang.System.out;
-import static org.apache.felix.dm.builder.lambda.CB.ADD;
+import static org.apache.felix.dm.builder.lambda.Cb.ADD;
 
 import org.apache.felix.dm.builder.lambda.DependencyActivatorBase;
 import org.osgi.service.log.LogService;

Added: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/Cb.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/Cb.java?rev=1724517&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/Cb.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/Cb.java
 Wed Jan 13 22:20:11 2016
@@ -0,0 +1,21 @@
+package org.apache.felix.dm.builder.lambda;
+
+/**
+ * Defines various types of dependency callbacks.
+ */
+public enum Cb {
+    /**
+     * Service is added.
+     */
+    ADD,
+    
+    /**
+     * Service properties updated
+     */
+    CHG, 
+    
+    /**
+     * Service removed.
+     */
+    REM
+}

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ComponentBuilder.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ComponentBuilder.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ComponentBuilder.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ComponentBuilder.java
 Wed Jan 13 22:20:11 2016
@@ -24,7 +24,7 @@ import java.util.function.Supplier;
  *         component(comp -> comp
  *             .factory(ServiceImplFactory::new, ServiceImplFactory::create)   
         
  *             .provides(Service.class)
- *             .withService(LogService.class, srv -> 
srv.required().onAdd(ServiceImpl::set))
+ *             .withService(LogService.class, srv -> srv.required().cb(ADD, 
ServiceImpl::set))
  *             .start(ServiceImpl::activate));                      
  *     }
  * }

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ComponentBuilderBase.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ComponentBuilderBase.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ComponentBuilderBase.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ComponentBuilderBase.java
 Wed Jan 13 22:20:11 2016
@@ -16,19 +16,25 @@ import org.apache.felix.dm.builder.lambd
  * @param <B> the builder that extends this class.
  */
 public interface ComponentBuilderBase<T, B extends ComponentBuilderBase<T, B>> 
{
-       /**
-        * Configures the services registered by this component in the OSGgi 
registry
-        * @param ifaces the OSGi service(s) components.
-        * @return this builder
-        */
-       B provides(Class<?> ... ifaces); 
-       
-       /**
-        * Configures the services registered by this component in the OSGgi 
registry
-        * @param ifaces the OSGi service(s) components.
-        * @return this builder
-        */
-       B provides(String ... ifaces); 
+       B provides(Class<?>  iface);
+       B provides(Class<?>  iface, String name, Object value, Object ... rest);
+    B provides(Class<?>  iface, FluentProperties ... properties);
+    B provides(Class<?>  iface, Dictionary<?,?> properties);
+    
+    B provides(Class<?>[] ifaces);
+    B provides(Class<?>[] ifaces, String name, Object value, Object ... rest);
+    B provides(Class<?>[] ifaces, FluentProperties ... properties);
+    B provides(Class<?>[] ifaces, Dictionary<?,?> properties);
+
+    B provides(String iface);
+    B provides(String iface, String name, Object value, Object ... rest);
+    B provides(String iface, FluentProperties ... properties);
+    B provides(String iface, Dictionary<?,?> properties);
+    
+    B provides(String[] ifaces);
+    B provides(String[] ifaces, String name, Object value, Object ... rest);
+    B provides(String[] ifaces, FluentProperties ... properties);
+    B provides(String[] ifaces, Dictionary<?,?> properties);
 
     /**
      * Sets the component's service properties

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/DependencyActivatorBase.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/DependencyActivatorBase.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/DependencyActivatorBase.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/DependencyActivatorBase.java
 Wed Jan 13 22:20:11 2016
@@ -74,6 +74,32 @@ public abstract class DependencyActivato
     }
     
     /**
+     * Creates a Component builder that can be used to create a Component. 
+     * @return a Component builder that can be used to create a Component.
+     */
+    protected ComponentBuilder<?> component() {
+        return new ComponentBuilderImpl<Object>(m_manager);
+    }
+    
+    /**
+     * Creates a service Aspect builder that can be used to create an Aspect 
Component. 
+     * @return a service Aspect builder that can be used to create an Aspect 
Component.
+     */
+    protected <T> ServiceAspectBuilder<T, ?> aspect(Class<T> aspectType) {
+        ServiceAspectBuilderImpl<T, ?> aspectBuilder = new 
ServiceAspectBuilderImpl<>(m_manager, aspectType);
+        return aspectBuilder;
+    }
+    
+    /**
+     * Creates a service Adapter builder that can be used to create an Adapter 
Component. 
+     * @return a service Adapter builder that can be used to create an Adapter 
Component.
+     */
+    protected <T> ServiceAdapterBuilder<T,?> adapter(Class<T> adapteeType) {
+        ServiceAdapterBuilderImpl<T, ?> adapterBuilder = new 
ServiceAdapterBuilderImpl<>(m_manager, adapteeType);
+        return adapterBuilder;
+    }
+    
+    /**
      * Builds a DM Component using a Java8 style ComponentBuilder.
      * @param consumer the lambda that will use the ComponentBuilder for 
building the DM component. 
      * The component is auto-added to the DependencyManager, unless the lambda 
calls the ComponentBuilder.autoAdd(false) method.
@@ -116,6 +142,36 @@ public abstract class DependencyActivato
     // These static methods can be used when building DM components outside of 
an activator.
        
     /**
+     * Creates a Component builder that can be used to create a Component. 
+     * @return a Component builder that can be used to create a Component.
+     */
+    public static ComponentBuilder<?> component(DependencyManager dm) {
+        return new ComponentBuilderImpl<Object>(dm);
+    }
+    
+    /**
+     * Creates a service Aspect builder that can be used to create an Aspect 
Component. 
+     * @param dm the DependencyManager object used to register the built 
component
+     * @param aspect the type of the aspect service
+     * @return a service Aspect builder that can be used to create an Aspect 
Component.
+     */
+    public static <T> ServiceAspectBuilder<T, ?> aspect(DependencyManager dm, 
Class<T> aspect) {
+        ServiceAspectBuilderImpl<T, ?> aspectBuilder = new 
ServiceAspectBuilderImpl<>(dm, aspect);
+        return aspectBuilder;
+    }
+    
+    /**
+     * Creates a service Adapter builder that can be used to create an Adapter 
Component. 
+     * @param dm the DependencyManager object used to register the built 
component
+     * @param adaptee the type of the adaptee service
+     * @return a service Adapter builder that can be used to create an Adapter 
Component.
+     */
+    public static <T> ServiceAdapterBuilder<T,?> adapter(DependencyManager dm, 
Class<T> adaptee) {
+        ServiceAdapterBuilderImpl<T, ?> adapterBuilder = new 
ServiceAdapterBuilderImpl<>(dm, adaptee);
+        return adapterBuilder;
+    }
+
+    /**
      * Builds a component using a lambda and a component builder
      * @param dm the DependencyManager where the component is auto-added 
(unless the component.autoAdd(false) is called)
      * @param consumer a lambda that is called to build the component. When 
the lambda is called, it will be provided with a 
@@ -165,7 +221,7 @@ public abstract class DependencyActivato
     /**
      * Builds an adapter DM Component.
      * @param dm the DependencyManager object used to register the built 
component
-     * @param aspect the type of the adaptee service
+     * @param adaptee the type of the adapted service
      * @param consumer a lambda used to build the DM adapter component
      * @return a new DM adapter component. The adapter component is auto-added 
into the dm object, unless the lambda calls
      * the AspectBuilder.autoAdd(false) method is called.

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ServiceCallbacksBuilder.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ServiceCallbacksBuilder.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ServiceCallbacksBuilder.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/ServiceCallbacksBuilder.java
 Wed Jan 13 22:20:11 2016
@@ -68,29 +68,29 @@ public interface ServiceCallbacksBuilder
     B cb(String add, String change, String remove);
     B cb(String add, String change, String remove, String swap);
 
-    <T> B cb(CB cbType, CbTypeService<T, S> callback);
-    <T> B cb(CB cbType, CbTypeServiceMap<T, S> callback);
-    <T> B cb(CB cbType, CbTypeServiceDict<T, S> callback);
-    <T> B cb(CB cbType, CbTypeRef<T, S> callback);
-    <T> B cb(CB cbType, CbTypeRefService<T, S> callback);
-    <T> B cb(CB cbType, CbTypeComponent<T> callback);
-    <T> B cb(CB cbType, CbTypeComponentService<T, S> callback);
-    <T> B cb(CB cbType, CbTypeComponentServiceMap<T, S> callback);
-    <T> B cb(CB cbType, CbTypeComponentServiceDict<T, S> callback);
-    <T> B cb(CB cbType, CbTypeComponentRef<T, S> callback);
-    <T> B cb(CB cbType, CbTypeComponentRefService<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeService<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeServiceMap<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeServiceDict<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeRef<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeRefService<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeComponent<T> callback);
+    <T> B cb(Cb callbackType, CbTypeComponentService<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeComponentServiceMap<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeComponentServiceDict<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeComponentRef<T, S> callback);
+    <T> B cb(Cb callbackType, CbTypeComponentRefService<T, S> callback);
   
-    B cbi(CB cbType, CbService<S> callback);
-    B cbi(CB cbType, CbServiceMap<S> callback);
-    B cbi(CB cbType, CbServiceDict<S> callback);
-    B cbi(CB cbType, CbRef<S> callback);
-    B cbi(CB cbType, CbRefService<S> callback);
-    B cbi(CB cbType, CbComponent callback);
-    B cbi(CB cbType, CbComponentService<S> callback);  
-    B cbi(CB cbType, CbComponentServiceMap<S> callback);
-    B cbi(CB cbType, CbComponentServiceDict<S> callback);
-    B cbi(CB cbType, CbComponentRef<S> callback);
-    B cbi(CB cbType, CbComponentRefService<S> callback);
+    B cbi(Cb callbackType, CbService<S> callback);
+    B cbi(Cb callbackType, CbServiceMap<S> callback);
+    B cbi(Cb callbackType, CbServiceDict<S> callback);
+    B cbi(Cb callbackType, CbRef<S> callback);
+    B cbi(Cb callbackType, CbRefService<S> callback);
+    B cbi(Cb callbackType, CbComponent callback);
+    B cbi(Cb callbackType, CbComponentService<S> callback);  
+    B cbi(Cb callbackType, CbComponentServiceMap<S> callback);
+    B cbi(Cb callbackType, CbComponentServiceDict<S> callback);
+    B cbi(Cb callbackType, CbComponentRef<S> callback);
+    B cbi(Cb callbackType, CbComponentRefService<S> callback);
 
     <T> B sw(CbTypeServiceService<T, S> swap);
     <T> B sw(CbTypeRefServiceRefService<T, S> swap);

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/AdapterBase.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/AdapterBase.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/AdapterBase.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/AdapterBase.java
 Wed Jan 13 22:20:11 2016
@@ -25,15 +25,87 @@ public interface AdapterBase<T, B extend
        
     void andThenBuild(Consumer<ComponentBuilder<T>> builder);
     
-    default B provides(Class<?> ... ifaces) {
+    default B provides(Class<?>  iface) {
+        andThenBuild(compBuilder -> compBuilder.provides(iface));
+        return (B) this;
+    }
+    
+    default B provides(Class<?>  iface, String name, Object value, Object ... 
rest) {
+        andThenBuild(compBuilder -> compBuilder.provides(iface, name, value, 
rest));
+        return (B) this;
+    }
+    
+    default B provides(Class<?>  iface, FluentProperties ... properties) {
+        andThenBuild(compBuilder -> compBuilder.provides(iface, properties));
+        return (B) this;
+    }
+    
+    default B provides(Class<?>  iface, Dictionary<?,?> properties) {
+        andThenBuild(compBuilder -> compBuilder.provides(iface, properties));
+        return (B) this;
+    }
+    
+    default B provides(Class<?>[] ifaces) {
         andThenBuild(compBuilder -> compBuilder.provides(ifaces));
         return (B) this;
     }
+    
+    default B provides(Class<?>[] ifaces, String name, Object value, Object 
... rest) {
+        andThenBuild(compBuilder -> compBuilder.provides(ifaces, name, value, 
rest));
+        return (B) this;  
+    }
+    
+    default B provides(Class<?>[] ifaces, FluentProperties ... properties) {
+        andThenBuild(compBuilder -> compBuilder.provides(ifaces, properties));
+        return (B) this;
+    }
+    
+    default B provides(Class<?>[] ifaces, Dictionary<?,?> properties) {
+        andThenBuild(compBuilder -> compBuilder.provides(ifaces, properties));
+        return (B) this;
+    }
+
 
-    default B provides(String ... ifaces) {
+    
+    default B provides(String  iface) {
+        andThenBuild(compBuilder -> compBuilder.provides(iface));
+        return (B) this;
+    }
+    
+    default B provides(String  iface, String name, Object value, Object ... 
rest) {
+        andThenBuild(compBuilder -> compBuilder.provides(iface, name, value, 
rest));
+        return (B) this;
+    }
+    
+    default B provides(String  iface, FluentProperties ... properties) {
+        andThenBuild(compBuilder -> compBuilder.provides(iface, properties));
+        return (B) this;
+    }
+    
+    default B provides(String  iface, Dictionary<?,?> properties) {
+        andThenBuild(compBuilder -> compBuilder.provides(iface, properties));
+        return (B) this;
+    }
+    
+    default B provides(String[] ifaces) {
         andThenBuild(compBuilder -> compBuilder.provides(ifaces));
         return (B) this;
     }
+    
+    default B provides(String[] ifaces, String name, Object value, Object ... 
rest) {
+        andThenBuild(compBuilder -> compBuilder.provides(ifaces, name, value, 
rest));
+        return (B) this;  
+    }
+    
+    default B provides(String[] ifaces, FluentProperties ... properties) {
+        andThenBuild(compBuilder -> compBuilder.provides(ifaces, properties));
+        return (B) this;
+    }
+    
+    default B provides(String[] ifaces, Dictionary<?,?> properties) {
+        andThenBuild(compBuilder -> compBuilder.provides(ifaces, properties));
+        return (B) this;
+    }
 
     default B properties(Dictionary<?, ?> properties) {
         andThenBuild(compBuilder -> compBuilder.properties(properties));

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/ComponentBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/ComponentBuilderImpl.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/ComponentBuilderImpl.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/ComponentBuilderImpl.java
 Wed Jan 13 22:20:11 2016
@@ -62,17 +62,113 @@ public class ComponentBuilderImpl<T> imp
     }
 
     @Override
-    public ComponentBuilderImpl<T> provides(Class<?>... ifaces) {
+    public ComponentBuilderImpl<T> provides(Class<?> iface) {
+        m_serviceNames = new String[] {iface.getName()};
+        return this;
+    }
+
+    @Override
+    public ComponentBuilderImpl<T> provides(Class<?>  iface, String name, 
Object value, Object ... rest) {
+        provides(iface);
+        properties(name, value, rest);
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(Class<?>  iface, FluentProperties 
... properties) {
+        provides(iface);
+        properties(properties);
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(Class<?>  iface, Dictionary<?,?> 
properties) {
+        provides(iface);
+        properties(properties);
+        return this;
+    }
+
+    @Override
+    public ComponentBuilderImpl<T>  provides(Class<?>[] ifaces) {
         m_serviceNames = Stream.of(ifaces).map(c -> 
c.getName()).toArray(String[]::new);
         return this;
     }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(Class<?>[] ifaces, String name, 
Object value, Object ... rest) {
+        provides(ifaces);
+        properties(name, value, rest);
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(Class<?>[] ifaces, 
FluentProperties ... properties) {
+        provides(ifaces);
+        properties(properties);
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(Class<?>[] ifaces, Dictionary<?,?> 
properties) {
+        provides(ifaces);
+        properties(properties);
+        return this;
+    }
 
     @Override
-    public ComponentBuilderImpl<T> provides(String... ifaces) {
-        m_serviceNames = ifaces;
+    public ComponentBuilderImpl<T> provides(String iface) {
+        m_serviceNames = new String[] {iface};
+        return this;
+    }
+
+    @Override
+    public ComponentBuilderImpl<T> provides(String iface, String name, Object 
value, Object ... rest) {
+        provides(iface);
+        properties(name, value, rest);
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(String iface, FluentProperties ... 
properties) {
+        provides(iface);
+        properties(properties);
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(String  iface, Dictionary<?,?> 
properties) {
+        provides(iface);
+        properties(properties);
         return this;
     }
 
+    @Override
+    public ComponentBuilderImpl<T>  provides(String[] ifaces) {
+        m_serviceNames = ifaces;
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(String[] ifaces, String name, 
Object value, Object ... rest) {
+        provides(ifaces);
+        properties(name, value, rest);
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(String[] ifaces, FluentProperties 
... properties) {
+        provides(ifaces);
+        properties(properties);
+        return this;
+    }
+    
+    @Override
+    public ComponentBuilderImpl<T> provides(String[] ifaces, Dictionary<?,?> 
properties) {
+        provides(ifaces);
+        properties(properties);
+        return this;
+    }    
+    
     @SuppressWarnings("unchecked")
     @Override
     public ComponentBuilderImpl<T> properties(Dictionary<?, ?> properties) {

Modified: 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/ServiceCallbacksBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/ServiceCallbacksBuilderImpl.java?rev=1724517&r1=1724516&r2=1724517&view=diff
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/ServiceCallbacksBuilderImpl.java
 (original)
+++ 
felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/builder/lambda/impl/ServiceCallbacksBuilderImpl.java
 Wed Jan 13 22:20:11 2016
@@ -7,7 +7,7 @@ import java.util.Map;
 import java.util.stream.Stream;
 
 import org.apache.felix.dm.Component;
-import org.apache.felix.dm.builder.lambda.CB;
+import org.apache.felix.dm.builder.lambda.Cb;
 import org.apache.felix.dm.builder.lambda.Functions.CbComponent;
 import org.apache.felix.dm.builder.lambda.Functions.CbComponentRef;
 import org.apache.felix.dm.builder.lambda.Functions.CbComponentRefService;
@@ -144,112 +144,112 @@ public abstract class ServiceCallbacksBu
                return (B) this;
        }
 
-    public <T> B cb(CB cbType, CbTypeService<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeService<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, service));
     }
     
-    public <T> B cb(CB cbType, CbTypeServiceMap<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeServiceMap<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, service, new SRefAsMap(ref)));
     }
 
-    public <T> B cb(CB cbType, CbTypeServiceDict<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeServiceDict<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, service, new SRefAsDictionary(ref))); 
     }
     
-    public <T> B cb(CB cbType, CbTypeRef<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeRef<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, ref)); 
     }
 
-    public <T> B cb(CB cbType, CbTypeRefService<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeRefService<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, ref, service)); 
     }
 
-    public <T> B cb(CB cbType, CbTypeComponent<T> callback) {
+    public <T> B cb(Cb cbType, CbTypeComponent<T> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, component)); 
     }
 
-    public <T> B cb(CB cbType, CbTypeComponentService<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeComponentService<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, component, service)); 
     }
 
-    public <T> B cb(CB cbType, CbTypeComponentServiceMap<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeComponentServiceMap<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, component, service, new SRefAsMap(ref))); 
     }
 
-    public <T> B cb(CB cbType, CbTypeComponentServiceDict<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeComponentServiceDict<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, component, service, new SRefAsDictionary(ref)));  
     }
 
-    public <T> B cb(CB cbType, CbTypeComponentRef<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeComponentRef<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, component, ref));  
     }
 
-    public <T> B cb(CB cbType, CbTypeComponentRefService<T, S> callback) {
+    public <T> B cb(Cb cbType, CbTypeComponentRefService<T, S> callback) {
         return setComponentCallbackRef(getCallback(cbType), 
Helpers.getLambdaGenericType(callback, 0), 
             (instance, component, ref, service) -> callback.accept((T) 
instance, component, ref, service));   
     }
 
-    public B cbi(CB cbType, CbService<S> callback) {
+    public B cbi(Cb cbType, CbService<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(service));  
 
     }
     
-    public B cbi(CB cbType, CbServiceMap<S> callback) {
+    public B cbi(Cb cbType, CbServiceMap<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(service, 
new SRefAsMap(ref)));   
     }
 
-    public B cbi(CB cbType, CbServiceDict<S> callback) {
+    public B cbi(Cb cbType, CbServiceDict<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(service, 
new SRefAsDictionary(ref)));   
     }
 
-    public B cbi(CB cbType, CbRef<S> callback) {
+    public B cbi(Cb cbType, CbRef<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(ref));   
     }
 
-    public B cbi(CB cbType, CbRefService<S> callback) {
+    public B cbi(Cb cbType, CbRefService<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(ref, 
service));   
     }
 
-    public B cbi(CB cbType, CbComponent callback) {
+    public B cbi(Cb cbType, CbComponent callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> 
callback.accept(component));   
     }
 
-    public B cbi(CB cbType, CbComponentService<S> callback) {
+    public B cbi(Cb cbType, CbComponentService<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(component, 
service));   
     }
 
-    public B cbi(CB cbType, CbComponentServiceMap<S> callback) {
+    public B cbi(Cb cbType, CbComponentServiceMap<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(component, 
service, new SRefAsMap(ref)));           
     }
 
-    public B cbi(CB cbType, CbComponentServiceDict<S> callback) {
+    public B cbi(Cb cbType, CbComponentServiceDict<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(component, 
service, new SRefAsDictionary(ref)));           
     }
 
-    public B cbi(CB cbType, CbComponentRef<S> callback) {
+    public B cbi(Cb cbType, CbComponentRef<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(component, 
ref));           
     }
 
-    public B cbi(CB cbType, CbComponentRefService<S> callback) {
+    public B cbi(Cb cbType, CbComponentRefService<S> callback) {
         return setInstanceCallbackRef(getCallback(cbType), 
             (instance, component, ref, service) -> callback.accept(component, 
ref, service));           
     }
@@ -397,7 +397,7 @@ public abstract class ServiceCallbacksBu
           }
     }   
     
-    private String getCallback(CB cbType) {
+    private String getCallback(Cb cbType) {
         switch (cbType) {
         case ADD: return "add";
         case CHG: return "change";



Reply via email to