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);