You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2016/01/28 21:36:16 UTC

svn commit: r1727432 - in /felix/sandbox/pderop/dependencymanager-lambda: org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/ org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencyman...

Author: pderop
Date: Thu Jan 28 20:36:16 2016
New Revision: 1727432

URL: http://svn.apache.org/viewvc?rev=1727432&view=rev
Log:
Made adapters and aspects builder interfaces more fluent: they now extend the ServiceCallbacksBuilder interface, as in the initial version.

Modified:
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterNoAutoConfigIfInstanceCallbackIsUsed.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithCallbackInstanceTest.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithModifiedInstanceBoundDependencyTest.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithPropagationTest.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithoutPropagationTest.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithCallbacksServiceDependencyTest.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithPropagationTest.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dependencymanager/lambda/samples/device/Activator.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAdapterBuilder.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAdapterBuilderImpl.java
    felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAspectBuilderImpl.java

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterNoAutoConfigIfInstanceCallbackIsUsed.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterNoAutoConfigIfInstanceCallbackIsUsed.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterNoAutoConfigIfInstanceCallbackIsUsed.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterNoAutoConfigIfInstanceCallbackIsUsed.java Thu Jan 28 20:36:16 2016
@@ -40,7 +40,7 @@ public class AdapterNoAutoConfigIfInstan
         
         // Declare S1 adapter
         S1AdapterCallback s1AdapterCB = new S1AdapterCallback();
-        adapter(m, S1.class, a -> a.impl(S1Adapter.class).adapterCb(builder->builder.cbi(s1AdapterCB, "set")));
+        adapter(m, S1.class, a -> a.impl(S1Adapter.class).cbi(s1AdapterCB, "set"));
         
         // At this point, the s1AdapterCB.set(S1 s1) method should be called, and s1Adapter.start() method should then be called.
         // but s1 should not be injected on s1Adapter class fields.
@@ -58,7 +58,7 @@ public class AdapterNoAutoConfigIfInstan
         
         // Declare S1 adapter
         S1AdapterCallback s1AdapterCB = new S1AdapterCallback();
-        adapter(m, S1.class, a -> a.impl(S1Adapter.class).adapterCb(builder->builder.cbi(s1AdapterCB::set)));
+        adapter(m, S1.class, a -> a.impl(S1Adapter.class).cbi(s1AdapterCB::set));
         
         // At this point, the s1AdapterCB.set(S1 s1) method should be called, and s1Adapter.start() method should then be called.
         // but s1 should not be injected on s1Adapter class fields.

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithCallbackInstanceTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithCallbackInstanceTest.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithCallbackInstanceTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithCallbackInstanceTest.java Thu Jan 28 20:36:16 2016
@@ -47,7 +47,7 @@ public class AdapterWithCallbackInstance
         Component adapter = adapter(m, OriginalService.class)
             .provides(AdaptedService.class).impl(new ServiceAdapter(e)).propagate(true)
             .autoConfig("m_originalService")
-            .adapterCb(builder->builder.cbi(callbackInstance, "set", "changed", "unset"))
+            .cbi(callbackInstance, "set", "changed", "unset")
             .build();
        
         // add the provider and the adapter
@@ -89,7 +89,7 @@ public class AdapterWithCallbackInstance
             .provides(AdaptedService.class).impl(new ServiceAdapter(e))
             .autoAdd(false).propagate(true)
             .autoConfig("m_originalService")
-            .adapterCb(builder->builder.cbi(callbackInstance::set, callbackInstance::changed, callbackInstance::unset)));
+            .cbi(callbackInstance::set, callbackInstance::changed, callbackInstance::unset));
        
         // add the provider and the adapter
         m.add(provider);

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithModifiedInstanceBoundDependencyTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithModifiedInstanceBoundDependencyTest.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithModifiedInstanceBoundDependencyTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithModifiedInstanceBoundDependencyTest.java Thu Jan 28 20:36:16 2016
@@ -116,7 +116,7 @@ public class AdapterWithModifiedInstance
         Ensure e = new Ensure();
 
         Component a = component(m).impl(new AImpl(e)).provides(A.class).properties(foo -> "bar").build();
-        Component b = adapter(m, A.class).provides(B.class).impl(new BImpl(e)).adapterCb(builder->builder.cb("addA", "changeA", "removeA")).build();
+        Component b = adapter(m, A.class).provides(B.class).impl(new BImpl(e)).cb("addA", "changeA", "removeA").build();
         Component c = component(m).impl(new CImpl()).provides(C.class).withSrv(A.class, "(foo=bar)").build();
                       
         m.add(a);
@@ -144,8 +144,7 @@ public class AdapterWithModifiedInstance
         Ensure e = new Ensure();
 
         Component a = component(m).impl(new AImpl(e)).provides(A.class).properties(foo -> "bar").build();        
-        Component b = adapter(m, A.class).impl(new BImpl(e)).provides(B.class)
-            .adapterCb(builder->builder.cb(BImpl::addA, BImpl::changeA, BImpl::removeA)).build();        
+        Component b = adapter(m, A.class).impl(new BImpl(e)).provides(B.class).cb(BImpl::addA, BImpl::changeA, BImpl::removeA).build();        
         Component c = component(m).impl(new CImpl()).provides(C.class).withSrv(A.class, s -> s.filter("(foo=bar)")).build();
                       
         m.add(a);

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithPropagationTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithPropagationTest.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithPropagationTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithPropagationTest.java Thu Jan 28 20:36:16 2016
@@ -102,7 +102,7 @@ public class AdapterWithPropagationTest
         Ensure e = new Ensure(); 
         
         Component s1 = component(m).impl(new S1Impl(e)).provides(S1.class).properties(p1 -> "v1", p2 -> "v2overriden").build();
-        Component s1Adapter = adapter(m, S1.class).adapterCb(builder->builder.cb("add", "change", null)).impl(new S1Adapter(e)).provides(S2.class).properties(p2 -> "v2").build();   
+        Component s1Adapter = adapter(m, S1.class).cb("add", "change", null).impl(new S1Adapter(e)).provides(S2.class).properties(p2 -> "v2").build();   
         Component s3 = component(m).impl(new S3(e)).withSrv(S2.class, s -> s.cb("add", "change", null)).build();
                                           
         m.add(s1);

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithoutPropagationTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithoutPropagationTest.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithoutPropagationTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AdapterWithoutPropagationTest.java Thu Jan 28 20:36:16 2016
@@ -45,7 +45,7 @@ public class AdapterWithoutPropagationTe
 
         // The Adapter will see the "foo=bar" property from the adaptee
         Component adapter = adapter(m, OriginalService.class)
-            .propagate(false).adapterCb(builder->builder.cb("set", "change", null)).provides(AdaptedService.class).impl(new ServiceAdapter(e)).build();
+            .propagate(false).cb("set", "change", null).provides(AdaptedService.class).impl(new ServiceAdapter(e)).build();
 
         // The consumer depends on the AdaptedService, but won't see foo=bar property from the adaptee 
         Component consumer = component(m) 
@@ -80,7 +80,7 @@ public class AdapterWithoutPropagationTe
 
         // The Adapter will see the "foo=bar" property from the adaptee
         ServiceAdapter saimpl = new ServiceAdapter(e);
-        Component adapter = adapter(m, OriginalService.class).propagate(false).impl(saimpl).provides(AdaptedService.class).adapterCb(builder->builder.cbi(saimpl::set, saimpl::change, null)).build();           
+        Component adapter = adapter(m, OriginalService.class).propagate(false).impl(saimpl).provides(AdaptedService.class).cbi(saimpl::set, saimpl::change, null).build();           
 
         // The consumer depends on the AdaptedService, but won't see foo=bar property from the adaptee 
         ServiceConsumer scimpl = new ServiceConsumer(e);

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithCallbacksServiceDependencyTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithCallbacksServiceDependencyTest.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithCallbacksServiceDependencyTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithCallbacksServiceDependencyTest.java Thu Jan 28 20:36:16 2016
@@ -36,10 +36,8 @@ public class AspectWithCallbacksServiceD
         // create a service provider and consumer
         Component sp = component(m).impl(new ServiceProvider(e)).provides(ServiceInterface.class.getName()).build();
         Component sc = component(m).impl(new ServiceConsumer(e)).withSrv(ServiceInterface.class, s->s.cb("add", "remove")).build();
-        Component asp = aspect(m, ServiceInterface.class)
-            .rank(100)
-            .aspectCb(builder -> builder.cb("add", null, "remove", "swap")).impl(ServiceProviderAspect.class).build();
-        		
+        Component asp = aspect(m, ServiceInterface.class).rank(100).cb("add", null, "remove", "swap").impl(ServiceProviderAspect.class).build();
+            
         m.add(sp);
         m.add(sc);
         m.add(asp);
@@ -60,7 +58,7 @@ public class AspectWithCallbacksServiceD
         Component sc = component(m).impl(new ServiceConsumer(e)).withSrv(ServiceInterface.class, s->s.cb(ServiceConsumer::add, ServiceConsumer::remove)).build();            
         Component asp = aspect(m, ServiceInterface.class)
             .impl(ServiceProviderAspect.class).rank(100)
-            .aspectCb(builder->builder.cb(ServiceProviderAspect::add, ServiceProviderAspect::remove).sw(ServiceProviderAspect::swap))
+            .cb(ServiceProviderAspect::add, ServiceProviderAspect::remove).sw(ServiceProviderAspect::swap)
             .build();
                 
         m.add(sp);
@@ -84,10 +82,7 @@ public class AspectWithCallbacksServiceD
                 
         ServiceProviderAspect providerAspect = new ServiceProviderAspect();
         ServiceProviderAspectCallbackInstance aspectCb = new ServiceProviderAspectCallbackInstance(providerAspect);
-        Component asp = aspect(m, ServiceInterface.class)
-            .rank(100).impl(providerAspect)
-            .aspectCb(builder->builder.cbi(aspectCb::add, aspectCb::remove).swi(aspectCb::swap))
-            .build();
+        Component asp = aspect(m, ServiceInterface.class).rank(100).impl(providerAspect).cbi(aspectCb::add, aspectCb::remove).swi(aspectCb::swap).build();
             
         m.add(sp);
         m.add(sc);

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithPropagationTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithPropagationTest.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithPropagationTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/builder/lambda/itest/AspectWithPropagationTest.java Thu Jan 28 20:36:16 2016
@@ -156,10 +156,7 @@ public class AspectWithPropagationTest e
         // Create some "S" aspects
         Component[] aspects = new Component[ASPECTS];
         for (int rank = 1; rank <= ASPECTS; rank ++) {
-            aspects[rank-1] = aspect(m, S.class).rank(rank)
-                .impl(new A("A" + rank, rank))
-                .aspectCb(builder->builder.cb("add", "change", "remove", "swap"))
-                .build();
+            aspects[rank-1] = aspect(m, S.class).rank(rank).impl(new A("A" + rank, rank)).cb("add", "change", "remove", "swap").build();
             props = new Hashtable();
             props.put("a" + rank, "v" + rank);
             aspects[rank-1].setServiceProperties(props);
@@ -357,18 +354,14 @@ public class AspectWithPropagationTest e
         // Create some "S" aspects
         Component[] aspects = new Component[ASPECTS];
         for (int rank = 1; rank <= ASPECTS; rank ++) {
-            aspects[rank-1] = aspect(m, S.class)
-                .rank(rank).impl(new A("A" + rank, rank))
-                .aspectCb(builder->builder.cb("add", "change", "remove", "swap")).build();
+            aspects[rank-1] = aspect(m, S.class).rank(rank).impl(new A("A" + rank, rank)).cb("add", "change", "remove", "swap").build();
             props = new Hashtable();
             props.put("a" + rank, "v" + rank);
             aspects[rank-1].setServiceProperties(props);
         } 
         
         // Create S2 adapter (which adapts S1 to S2 interface)
-        Component adapter = adapter(m, S.class)
-            .adapterCb(build->build.cb("add", "change", "remove", "swap"))
-            .provides(S2.class).impl(new S2Impl()).build();
+        Component adapter = adapter(m, S.class).cb("add", "change", "remove", "swap").provides(S2.class).impl(new S2Impl()).build();
         
         // Create Client2, which depends on "S2" service.
         Client2 client2Impl;

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=1727432&r1=1727431&r2=1727432&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 Thu Jan 28 20:36:16 2016
@@ -34,7 +34,7 @@ public class Activator extends Dependenc
         createDeviceAndParameter(1);
         createDeviceAndParameter(2);
 
-        adapter(Device.class, comp -> comp.provides(DeviceAccess.class).impl(DeviceAccessImpl.class));
+        adapter(Device.class, adpt -> adpt.provides(DeviceAccess.class).impl(DeviceAccessImpl.class));
             
         component(comp -> comp
             .impl(DeviceAccessConsumer.class)

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAdapterBuilder.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAdapterBuilder.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAdapterBuilder.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAdapterBuilder.java Thu Jan 28 20:36:16 2016
@@ -19,7 +19,7 @@ import java.util.function.Consumer;
  * 
  * @param <T> the adaptee service
  */
-public interface ServiceAdapterBuilder<T> extends ComponentBuilder<ServiceAdapterBuilder<T>> {
+public interface ServiceAdapterBuilder<T> extends ComponentBuilder<ServiceAdapterBuilder<T>>, ServiceCallbacksBuilder<T, ServiceAdapterBuilder<T>> {
     /**
      * Specifies the filter used to match a given adapted service.
      * @param adapteeFilter the filter used to match a given adapted service
@@ -53,33 +53,4 @@ public interface ServiceAdapterBuilder<T
      * @return this builder
      */
     ServiceAdapterBuilder<T> autoConfig(String field);        
-    
-    /**
-     * Allows to configure the aspect callback method.
-     * @param consumer a block of code that can configure the specific aspect callback to call when injecting the aspect service.
-     * @return this builder
-     */
-    ServiceAdapterBuilder<T> adapterCb(Consumer<ServiceCallbacksBuilder<T, ?>> consumer);
-    
-    /**
-     * Convenient method used to build reflection based callbacks.
-     * TODO add comments
-     * 
-     * @param callbacks
-     * @return
-     */
-    default ServiceAdapterBuilder<T> adapterCb(String ... callbacks) {
-        return adapterCb(builder -> builder.cb(callbacks));
-    }
-    
-    /**
-     * Convenient method used to build reflection based callbacks.
-     * TODO add comments
-     * 
-     * @param callbacks
-     * @return
-     */
-    default ServiceAdapterBuilder<T> adapterCb(Object callbackInstance, String ... callbacks) {
-        return adapterCb(builder -> builder.cbi(callbackInstance, callbacks));
-    }
 }

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/ServiceAspectBuilder.java Thu Jan 28 20:36:16 2016
@@ -24,7 +24,7 @@ import java.util.function.Consumer;
  *
  * @param <T> the aspect service
  */
-public interface ServiceAspectBuilder<T> extends ComponentBuilder<ServiceAspectBuilder<T>>  {
+public interface ServiceAspectBuilder<T> extends ComponentBuilder<ServiceAspectBuilder<T>>, ServiceCallbacksBuilder<T, ServiceAspectBuilder<T>> {
     /**
      * Specifies the aspect service filter. 
      * @param filter
@@ -57,34 +57,5 @@ public interface ServiceAspectBuilder<T>
      * @param field the field name where the aspect service must be injected
      * @return this builder
      */
-    ServiceAspectBuilder<T> autoConfig(String field); 
-    
-    /**
-     * Allows to configure the adapter callback method.
-     * @param consumer a block of code that can configure the specific adapter callback to call when injecting the adapted service.
-     * @return this builder
-     */
-    ServiceAspectBuilder<T> aspectCb(Consumer<ServiceCallbacksBuilder<T, ?>> consumer);
-    
-    /**
-     * Convenient method used to build reflection based callbacks.
-     * TODO add comments
-     * 
-     * @param callbacks
-     * @return
-     */
-    default ServiceAspectBuilder<T> aspectCb(String ... callbacks) {
-        return aspectCb(builder -> builder.cb(callbacks));
-    }
-    
-    /**
-     * Convenient method used to build reflection based callbacks.
-     * TODO add comments
-     * 
-     * @param callbacks
-     * @return
-     */
-    default ServiceAspectBuilder<T> aspectCbi(Object callbackInstance, String ... callbacks) {
-        return aspectCb(builder -> builder.cbi(callbackInstance, callbacks));
-    }
+    ServiceAspectBuilder<T> autoConfig(String field);     
 }

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAdapterBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAdapterBuilderImpl.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAdapterBuilderImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAdapterBuilderImpl.java Thu Jan 28 20:36:16 2016
@@ -7,21 +7,21 @@ import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
 import org.apache.felix.dm.lambda.ComponentBuilder;
 import org.apache.felix.dm.lambda.ServiceAdapterBuilder;
-import org.apache.felix.dm.lambda.ServiceCallbacksBuilder;
 
-public class ServiceAdapterBuilderImpl<T> implements AdapterBase<ServiceAdapterBuilder<T>>, ServiceAdapterBuilder<T> {	
+public class ServiceAdapterBuilderImpl<T> extends ServiceCallbacksBuilderImpl<T, ServiceAdapterBuilder<T>> implements 
+    AdapterBase<ServiceAdapterBuilder<T>>, ServiceAdapterBuilder<T> 
+{	
     private final Class<T> m_adapteeType;
     private String m_adapteeFilter;
     private boolean m_propagate = true;
     private final DependencyManager m_dm;
     private boolean m_autoAdd = true;
     private Consumer<ComponentBuilder<?>> m_compBuilder = (componentBuilder -> {});
-    private final ServiceCallbacksBuilderImpl<T, ?> m_cbBuilder;
 
-    public ServiceAdapterBuilderImpl(DependencyManager dm, Class<T> type) {
+    public ServiceAdapterBuilderImpl(DependencyManager dm, Class<T> adapterType) {
+        super(adapterType);
         m_dm = dm;
-        m_adapteeType = type;
-        m_cbBuilder = new ServiceCallbacksBuilderImpl<>(m_adapteeType);
+        m_adapteeType = adapterType;
     }    
 
     @Override
@@ -57,47 +57,23 @@ public class ServiceAdapterBuilderImpl<T
     }
 
     @Override
-    public ServiceAdapterBuilder<T> autoConfig() {
-        m_cbBuilder.autoConfig();
-        return this;
-    }
-    
-    @Override
-    public ServiceAdapterBuilder<T> autoConfig(boolean autoConfig) {
-        m_cbBuilder.autoConfig(autoConfig);
-        return this;
-    }
-    
-    @Override
-    public ServiceAdapterBuilder<T> autoConfig(String field) {
-        m_cbBuilder.autoConfig(field);
-        return this;
-    }
-
-    @Override
-    public ServiceAdapterBuilder<T> adapterCb(Consumer<ServiceCallbacksBuilder<T, ?>> consumer) {
-        consumer.accept(m_cbBuilder);
-        return this;
-    }
-
-    @Override
     public Component build() {
         Objects.nonNull(m_adapteeFilter);
         
-        String add = m_cbBuilder.getAdded(), change = m_cbBuilder.getChanged(), remove = m_cbBuilder.getRemoved(), swap = m_cbBuilder.getSwapped();
-        Object cbInstance = m_cbBuilder.getCallbackInstance();
+        String add = getAdded(), change = getChanged(), remove = getRemoved(), swap = getSwapped();
+        Object cbInstance = getCallbackInstance();
         
-        if (m_cbBuilder.hasRefs()) {
+        if (hasRefs()) {
             // if some method references have been set, use our own callback proxy to redispatch events to method refs.        
-        	cbInstance = m_cbBuilder.createCallbackInstance();
+        	cbInstance = createCallbackInstance();
             add = "add";
             change = "change";
             remove = "remove";
-            swap = m_cbBuilder.m_swapRefs.size() > 0 ? "swap" : null;
+            swap = m_swapRefs.size() > 0 ? "swap" : null;
         } 
 
         Component c = m_dm.createAdapterService
-        		(m_adapteeType, m_adapteeFilter, m_cbBuilder.getAutoConfigField(), cbInstance, add, change, remove, swap, m_propagate);
+        		(m_adapteeType, m_adapteeFilter, getAutoConfigField(), cbInstance, add, change, remove, swap, m_propagate);
         
         ComponentBuilderImpl cb = new ComponentBuilderImpl(c, false);
         // m_compBuilder is a composed consumer that calls in sequence all necessary component builder methods. 

Modified: felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAspectBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAspectBuilderImpl.java?rev=1727432&r1=1727431&r2=1727432&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAspectBuilderImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-lambda/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceAspectBuilderImpl.java Thu Jan 28 20:36:16 2016
@@ -7,21 +7,21 @@ import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
 import org.apache.felix.dm.lambda.ComponentBuilder;
 import org.apache.felix.dm.lambda.ServiceAspectBuilder;
-import org.apache.felix.dm.lambda.ServiceCallbacksBuilder;
 
-public class ServiceAspectBuilderImpl<T> implements AdapterBase<ServiceAspectBuilder<T>>, ServiceAspectBuilder<T> {    
+public class ServiceAspectBuilderImpl<T> extends ServiceCallbacksBuilderImpl<T, ServiceAspectBuilder<T>> implements 
+    AdapterBase<ServiceAspectBuilder<T>>, ServiceAspectBuilder<T> 
+{    
     private final DependencyManager m_dm;
     private final Class<T> m_aspectType;
     private String m_aspectFilter;
     private int m_aspectRanking;
     private boolean m_autoAdd = true;
     private Consumer<ComponentBuilder<?>> m_compBuilder = (componentBuilder -> {});
-    private final ServiceCallbacksBuilderImpl<T, ?> m_cbBuilder;
 
-    public ServiceAspectBuilderImpl(DependencyManager dm, Class<T> type) {
+    public ServiceAspectBuilderImpl(DependencyManager dm, Class<T> aspectType) {
+        super(aspectType);
         m_dm = dm;
-        m_aspectType = type;
-        m_cbBuilder = new ServiceCallbacksBuilderImpl<>(m_aspectType);
+        m_aspectType = aspectType;
     }
 
     @Override
@@ -58,52 +58,28 @@ public class ServiceAspectBuilderImpl<T>
     }
     
     @Override
-    public ServiceAspectBuilder<T> autoConfig() {
-        m_cbBuilder.autoConfig();
-        return this;
-    }
-    
-    @Override
-    public ServiceAspectBuilder<T> autoConfig(boolean autoConfig) {
-        m_cbBuilder.autoConfig(autoConfig);
-        return this;
-    }
-    
-    @Override
-    public ServiceAspectBuilder<T> autoConfig(String field) {
-        m_cbBuilder.autoConfig(field);
-        return this;
-    }
-
-    @Override
-    public ServiceAspectBuilder<T> aspectCb(Consumer<ServiceCallbacksBuilder<T, ?>> consumer) {
-        consumer.accept(m_cbBuilder);
-        return this;
-    }
-
-    @Override
     public Component build() {
         Objects.nonNull(m_aspectType);
         
-        if (m_cbBuilder.getAutoConfigField() != null && (m_cbBuilder.hasRefs()|| m_cbBuilder.hasCallbacks())) {
+        if (getAutoConfigField() != null && (hasRefs()|| hasCallbacks())) {
             throw new IllegalStateException("Can't mix autoConfig fields and aspect callbacks.");
         }
         
         Component c = null;
-        if (m_cbBuilder.getAutoConfigField() != null) {
-            c = m_dm.createAspectService(m_aspectType, m_aspectFilter, m_aspectRanking, m_cbBuilder.getAutoConfigField());
-        } else if (m_cbBuilder.hasRefs()) {        
-            Object cbInstance = m_cbBuilder.createCallbackInstance();
+        if (getAutoConfigField() != null) {
+            c = m_dm.createAspectService(m_aspectType, m_aspectFilter, m_aspectRanking, getAutoConfigField());
+        } else if (hasRefs()) {        
+            Object cbInstance = createCallbackInstance();
             String add = "add";
             String change = "change";
             String remove = "remove";
-            String swap = m_cbBuilder.m_swapRefs.size() > 0 ? "swap" : null;        
+            String swap = m_swapRefs.size() > 0 ? "swap" : null;        
             c = m_dm.createAspectService(m_aspectType, m_aspectFilter, m_aspectRanking, cbInstance, add, change, remove, swap);
-        } else if (m_cbBuilder.hasCallbacks()) {
-            String add = m_cbBuilder.getAdded();
-            String change = m_cbBuilder.getChanged();
-            String remove = m_cbBuilder.getRemoved();
-            String swap = m_cbBuilder.getSwapped();
+        } else if (hasCallbacks()) {
+            String add = getAdded();
+            String change = getChanged();
+            String remove = getRemoved();
+            String swap = getSwapped();
             c = m_dm.createAspectService(m_aspectType, m_aspectFilter, m_aspectRanking, add, change, remove, swap);
         } else {
             c = m_dm.createAspectService(m_aspectType, m_aspectFilter, m_aspectRanking);