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/02/18 22:07:18 UTC
svn commit: r1731147 [6/7] - in /felix/trunk/dependencymanager:
org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/lambda/itest/
org.apache.felix.dependencymanager.lambda.samples/src/org/apache/felix/dm/lambda/samples/compositefact...
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbRefServiceRefServiceComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbRefServiceRefServiceComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbRefServiceRefServiceComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbRefServiceRefServiceComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,34 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Represents a callback(ServiceReference, Service, ServiceReference, Service, Component) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface CbRefServiceRefServiceComponent<T, S> extends SerializableLambda {
+ /**
+ * Handles the given arguments.
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param oldRef first callback arg
+ * @param old second callback arg
+ * @param replaceRef third callback arg
+ * @param replace fourth callback arg
+ * @param c fifth callback arg
+ */
+ void accept(T instance, ServiceReference<S> oldRef, S old, ServiceReference<S> replaceRef, S replace, Component c);
+
+ default CbRefServiceRefServiceComponent<T, S> andThen(CbRefServiceRefServiceComponent<? super T, S> after) {
+ Objects.requireNonNull(after);
+ return (T instance, ServiceReference<S> oldRef, S old, ServiceReference<S> replaceRef, S replace, Component c) -> {
+ accept(instance, oldRef, old, replaceRef, replace, c);
+ after.accept(instance, oldRef, old, replaceRef, replace, c);
+ };
+ }
+}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbService.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbService.java?rev=1731147&r1=1731146&r2=1731147&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbService.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbService.java Thu Feb 18 21:07:16 2016
@@ -3,23 +3,25 @@ package org.apache.felix.dm.lambda.callb
import java.util.Objects;
/**
- * Represents a callback(Service) on an Object instance.
+ * Represents a callback(Service) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
@FunctionalInterface
-public interface CbService<S> {
+public interface CbService<T, S> extends SerializableLambda {
/**
- * Handles the given argument.
- * @param service a Service
+ * Handles the given arguments.
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param service the callback argument.
*/
- void accept(S service);
+ void accept(T instance, S service);
- default CbService<S> andThen(CbService<S> after) {
+ default CbFuture<T, S> andThen(CbFuture<? super T, S> after) {
Objects.requireNonNull(after);
- return (S service) -> {
- accept(service);
- after.accept(service);
+ return (T instance, S service) -> {
+ accept(instance, service);
+ after.accept(instance, service);
};
}
}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,30 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+
+/**
+ * Represents a callback(Service, Component) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface CbServiceComponent<T, S> extends SerializableLambda {
+ /**
+ * Handles the given arguments.
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param service the first callback argument
+ * @param c the second callback argument
+ */
+ void accept(T instance, S service, Component c);
+
+ default CbServiceComponent<T, S> andThen(CbServiceComponent<T, S> after) {
+ Objects.requireNonNull(after);
+ return (T instance, S s, Component c) -> {
+ accept(instance, s, c);
+ after.accept(instance, s, c);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceComponentRef.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceComponentRef.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceComponentRef.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceComponentRef.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,32 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Represents a callback(Service, Component, ServiceReference) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface CbServiceComponentRef<T, S> extends SerializableLambda {
+ /**
+ * Handles the given arguments.
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param service the first callback parameter
+ * @param c the second callback parameter
+ * @param ref the third callback parameter
+ */
+ void accept(T instance, S service, Component c, ServiceReference<S> ref);
+
+ default CbServiceComponentRef<T, S> andThen(CbServiceComponentRef<T, S> after) {
+ Objects.requireNonNull(after);
+ return (T instance, S service, Component c, ServiceReference<S> ref) -> {
+ accept(instance, service, c, ref);
+ after.accept(instance, service, c, ref);
+ };
+ }
+}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceDict.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceDict.java?rev=1731147&r1=1731146&r2=1731147&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceDict.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceDict.java Thu Feb 18 21:07:16 2016
@@ -4,24 +4,26 @@ import java.util.Dictionary;
import java.util.Objects;
/**
- * Represents a callback(Service, Dictionary) on an Object instance.
+ * Represents a callback(Service, Dictionary) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
@FunctionalInterface
-public interface CbServiceDict<S> {
+public interface CbServiceDict<T, S> extends SerializableLambda {
/**
* Handles the given arguments.
- * @param service a Service
- * @param properties a Dictionary
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param service first callback arg
+ * @param properties second callback arg
*/
- void accept(S service, Dictionary<String, Object> properties);
+ void accept(T instance, S service, Dictionary<String, Object> properties);
- default CbServiceDict<S> andThen(CbServiceDict<S> after) {
+ default CbServiceDict<T, S> andThen(CbServiceDict<? super T, S> after) {
Objects.requireNonNull(after);
- return (S service, Dictionary<String, Object> properties) -> {
- accept(service, properties);
- after.accept(service, properties);
+ return (T instance, S service, Dictionary<String, Object> properties) -> {
+ accept(instance, service, properties);
+ after.accept(instance, service, properties);
};
}
}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceMap.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceMap.java?rev=1731147&r1=1731146&r2=1731147&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceMap.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceMap.java Thu Feb 18 21:07:16 2016
@@ -4,24 +4,26 @@ import java.util.Map;
import java.util.Objects;
/**
- * Represents a callback(Service, Map) on an Object instance.
+ * Represents a callback(Service, Map) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
@FunctionalInterface
-public interface CbServiceMap<S> {
+public interface CbServiceMap<T, S> extends SerializableLambda {
/**
* Handles the given arguments.
- * @param service a Service
- * @param properties a Map
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param service first callback arg
+ * @param properties second callback arg
*/
- void accept(S service, Map<String, Object> properties);
+ void accept(T instance, S service, Map<String, Object> properties);
- default CbServiceMap<S> andThen(CbServiceMap<S> after) {
+ default CbServiceMap<T, S> andThen(CbServiceMap<? super T, S> after) {
Objects.requireNonNull(after);
- return (S service, Map<String, Object> properties) -> {
- accept(service, properties);
- after.accept(service, properties);
+ return (T instance, S service, Map<String, Object> properties) -> {
+ accept(instance, service, properties);
+ after.accept(instance, service, properties);
};
}
}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceRef.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceRef.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceRef.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceRef.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,30 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Represents a callback(Service, ServiceReference) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface CbServiceRef<T, S> extends SerializableLambda {
+ /**
+ * Handles the given arguments.
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param service first callback arg
+ * @param ref second callback arg
+ */
+ void accept(T instance, S service, ServiceReference<S> ref);
+
+ default CbServiceRef<T, S> andThen(CbServiceRef<? super T, S> after) {
+ Objects.requireNonNull(after);
+ return (T instance, S service, ServiceReference<S> ref) -> {
+ accept(instance, service, ref);
+ after.accept(instance, service, ref);
+ };
+ }
+}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceService.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceService.java?rev=1731147&r1=1731146&r2=1731147&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceService.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceService.java Thu Feb 18 21:07:16 2016
@@ -3,24 +3,26 @@ package org.apache.felix.dm.lambda.callb
import java.util.Objects;
/**
- * Represents a callback(Service, Service) on an Object instance.
+ * Represents a swap callback(Service, Service) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
@FunctionalInterface
-public interface CbServiceService<S> extends SerializableLambda {
+public interface CbServiceService<T, S> extends SerializableLambda {
/**
- * Handles the given argument
- * @param old a Service
- * @param replace a Service
+ * Handles the given arguments.
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param old first callback arg
+ * @param replace second callback arg
*/
- void accept(S old, S replace);
+ void accept(T instance, S old, S replace);
- default CbServiceService<S> andThen(CbServiceService<S> after) {
+ default CbServiceService<T, S> andThen(CbServiceService<? super T, S> after) {
Objects.requireNonNull(after);
- return (S old, S replace) -> {
- accept(old, replace);
- after.accept(old, replace);
+ return (T instance, S old, S replace) -> {
+ accept(instance, old, replace);
+ after.accept(instance, old, replace);
};
}
}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceServiceComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceServiceComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceServiceComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/CbServiceServiceComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,31 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+
+/**
+ * Represents a swap callback(Service, Service, Component) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface CbServiceServiceComponent<T, S> extends SerializableLambda {
+ /**
+ * Handles the given arguments.
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param old first callback arg
+ * @param replace second callback arg
+ * @param c third callback arg
+ */
+ void accept(T instance, S old, S replace, Component c);
+
+ default CbServiceServiceComponent<T, S> andThen(CbServiceServiceComponent<? super T, S> after) {
+ Objects.requireNonNull(after);
+ return (T instance, S old, S replace, Component c) -> {
+ accept(instance, old, replace, c);
+ after.accept(instance, old, replace, c);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCb.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCb.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCb.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCb.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,24 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+/**
+ * Represents a method reference to a no-args callback method from an arbitrary Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCb {
+ /**
+ * Implements the callback method.
+ */
+ void cb();
+
+ default InstanceCb andThen(InstanceCb after) {
+ Objects.requireNonNull(after);
+ return () -> {
+ cb();
+ after.cb();
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbBundle.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbBundle.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbBundle.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbBundle.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,27 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.osgi.framework.Bundle;
+
+/**
+ * Represents a callback(Bundle) on an Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbBundle extends SerializableLambda {
+ /**
+ * Handles the given argument.
+ * @param bundle the callback parameter
+ */
+ void accept(Bundle bundle);
+
+ default InstanceCbBundle andThen(InstanceCbBundle after) {
+ Objects.requireNonNull(after);
+ return (Bundle bundle) -> {
+ accept(bundle);
+ after.accept(bundle);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbBundleComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbBundleComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbBundleComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbBundleComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,29 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+import org.osgi.framework.Bundle;
+
+/**
+ * Represents a callback(Bundle, Component) on an Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbBundleComponent {
+ /**
+ * Handles the given arguments.
+ * @param component the callback parameter
+ * @param bundle the callback parameter
+ */
+ void accept(Bundle bundle, Component component);
+
+ default InstanceCbBundleComponent andThen(InstanceCbBundleComponent after) {
+ Objects.requireNonNull(after);
+ return (Bundle bundle, Component component) -> {
+ accept(bundle, component);
+ after.accept(bundle, component);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,27 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+
+/**
+ * Represents a callback(Component) on an Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbComponent {
+ /**
+ * Handles the given argument.
+ * @param component the callback parameter
+ */
+ void accept(Component component);
+
+ default InstanceCbComponent andThen(InstanceCbComponent after) {
+ Objects.requireNonNull(after);
+ return (Component component) -> {
+ accept(component);
+ after.accept(component);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfiguration.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfiguration.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfiguration.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfiguration.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,28 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+/**
+ * Represents a reference to a callback on an Object instance that takes Configuration type as argument.
+ * For more informations about configuration type, please refer to {@link CbConfiguration}.
+ *
+ * <p> The T generic parameter represents the type of the configuration class passed to the callback argument.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbConfiguration<T> extends SerializableLambda {
+ /**
+ * Handles the given argument.
+ * @param configType the configuration type
+ */
+ void accept(T configType);
+
+ default InstanceCbConfiguration<T> andThen(InstanceCbConfiguration<T> after) {
+ Objects.requireNonNull(after);
+ return (T configProxy) -> {
+ accept(configProxy);
+ after.accept(configProxy);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfigurationComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfigurationComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfigurationComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbConfigurationComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,32 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+
+/**
+ * Represents a callback(Configuration, Component) that is invoked on a Component implementation class.
+ * The type of the class on which the callback is invoked on is represented by the T generic parameter.
+ * For more informations about configuration type, please refer to {@link CbConfiguration}.
+ *
+ * <p> The T generic parameter represents the type of the configuration class passed to the callback argument.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbConfigurationComponent<T> extends SerializableLambda {
+ /**
+ * Handles the given arguments
+ * @param instance the Component implementation instance on which the callback is invoked on.
+ * @param component the callback Component
+ */
+ void accept(T instance, Component component);
+
+ default InstanceCbConfigurationComponent<T> andThen(InstanceCbConfigurationComponent<T> after) {
+ Objects.requireNonNull(after);
+ return (T instance, Component component) -> {
+ accept(instance, component);
+ after.accept(instance, component);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbDictionary.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbDictionary.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbDictionary.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbDictionary.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,26 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Dictionary;
+import java.util.Objects;
+
+/**
+ * Represents a callback(Dictionary) on an Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbDictionary {
+ /**
+ * Handles the given argument.
+ * @param conf the properties
+ */
+ void accept(Dictionary<String, Object> conf);
+
+ default InstanceCbDictionary andThen(InstanceCbDictionary after) {
+ Objects.requireNonNull(after);
+ return (Dictionary<String, Object> conf) -> {
+ accept(conf);
+ after.accept(conf);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbDictionaryComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbDictionaryComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbDictionaryComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbDictionaryComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,29 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Dictionary;
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+
+/**
+ * Represents a callback(Dictionary, Component) on an Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbDictionaryComponent {
+ /**
+ * Handles the given arguments.
+ * @param properties some service properties
+ * @param component a Component
+ */
+ void accept(Dictionary<String, Object> properties, Component component);
+
+ default InstanceCbDictionaryComponent andThen(InstanceCbDictionaryComponent after) {
+ Objects.requireNonNull(after);
+ return (Dictionary<String, Object> properties, Component component) -> {
+ accept(properties, component);
+ after.accept(properties, component);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbFuture.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbFuture.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbFuture.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbFuture.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,25 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+/**
+ * Represents a callback that accepts the result of a CompletableFuture. The callback is invoked on an Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbFuture<F> {
+ /**
+ * Handles the result of a CompletableFuture operation.
+ * @param future the result of a CompletableFuture operation.
+ */
+ void accept(F future);
+
+ default InstanceCbFuture<F> andThen(InstanceCbFuture<? super F> after) {
+ Objects.requireNonNull(after);
+ return (F f) -> {
+ accept(f);
+ after.accept(f);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbRefServiceRefService.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbRefServiceRefService.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbRefServiceRefService.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbRefServiceRefService.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,30 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Represents a swap callback(ServiceReference, Service, ServiceReference, Service) on an Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbRefServiceRefService<S> {
+ /**
+ * Handles the given arguments
+ * @param oldRef the old service reference
+ * @param old the old service
+ * @param replaceRef the replace service reference
+ * @param replace the replace service
+ */
+ void accept(ServiceReference<S> oldRef, S old, ServiceReference<S> replaceRef, S replace);
+
+ default InstanceCbRefServiceRefService<S> andThen(InstanceCbRefServiceRefService<S> after) {
+ Objects.requireNonNull(after);
+ return (ServiceReference<S> oldRef, S old, ServiceReference<S> replaceRef, S replace) -> {
+ accept(oldRef, old, replaceRef, replace);
+ after.accept(oldRef, old, replaceRef, replace);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbRefServiceRefServiceComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbRefServiceRefServiceComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbRefServiceRefServiceComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbRefServiceRefServiceComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,32 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Represents a swap callback(ServiceReference, Service, ServiceReference, Service, Component) on an Object instance.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbRefServiceRefServiceComponent<S> {
+ /**
+ * Handles the given arguments
+ * @param oldRef an old swapped service reference
+ * @param old an old swapped service
+ * @param replaceRef the new service reference
+ * @param replace the new service
+ * @param c a Component
+ */
+ void accept(ServiceReference<S> oldRef, S old, ServiceReference<S> replaceRef, S replace, Component c);
+
+ default InstanceCbRefServiceRefServiceComponent<S> andThen(InstanceCbRefServiceRefServiceComponent<S> after) {
+ Objects.requireNonNull(after);
+ return (ServiceReference<S> oldRef, S old, ServiceReference<S> replaceRef, S replace, Component c) -> {
+ accept(oldRef, old, replaceRef, replace, c);
+ after.accept(oldRef, old, replaceRef, replace, c);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbService.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbService.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbService.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbService.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,27 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+/**
+ * Represents a callback(Service) on an Object instance.
+ *
+ * <p> The type of the service passed in argument to the callback is defined by the "S" generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbService<S> {
+ /**
+ * Handles the given argument.
+ * @param service a Service
+ */
+ void accept(S service);
+
+ default InstanceCbService<S> andThen(InstanceCbService<S> after) {
+ Objects.requireNonNull(after);
+ return (S service) -> {
+ accept(service);
+ after.accept(service);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,30 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+
+/**
+ * Represents a callback(Service, Component) on an Object instance.
+ *
+ * <p> The type of the service passed in argument to the callback is defined by the "S" generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbServiceComponent<S> {
+ /**
+ * Handles the given arguments
+ * @param c the component
+ * @param service the service
+ */
+ void accept(S service, Component c);
+
+ default InstanceCbServiceComponent<S> andThen(InstanceCbServiceComponent<S> after) {
+ Objects.requireNonNull(after);
+ return (S service, Component c) -> {
+ accept(service, c);
+ after.accept(service, c);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceComponentRef.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceComponentRef.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceComponentRef.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceComponentRef.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,32 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Represents a callback(Service, Component, ServiceReference) on an Object instance.
+ *
+ * <p> The type of the service passed in argument to the callback is defined by the "S" generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbServiceComponentRef<S> {
+ /**
+ * Handles the given arguments.
+ * @param c a Component
+ * @param ref the service reference
+ * @param service the service
+ */
+ void accept(S service, Component c, ServiceReference<S> ref);
+
+ default InstanceCbServiceComponentRef<S> andThen(InstanceCbServiceComponentRef<S> after) {
+ Objects.requireNonNull(after);
+ return (S service, Component c, ServiceReference<S> ref) -> {
+ accept(service, c, ref);
+ after.accept(service, c, ref);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceDict.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceDict.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceDict.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceDict.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,29 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Dictionary;
+import java.util.Objects;
+
+/**
+ * Represents a callback(Service, Dictionary) on an Object instance.
+ *
+ * <p> The type of the service passed in argument to the callback is defined by the "S" generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbServiceDict<S> {
+ /**
+ * Handles the given arguments.
+ * @param service a Service
+ * @param properties a Dictionary
+ */
+ void accept(S service, Dictionary<String, Object> properties);
+
+ default InstanceCbServiceDict<S> andThen(InstanceCbServiceDict<S> after) {
+ Objects.requireNonNull(after);
+ return (S service, Dictionary<String, Object> properties) -> {
+ accept(service, properties);
+ after.accept(service, properties);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceMap.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceMap.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceMap.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceMap.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,29 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Represents a callback(Service, Map) on an Object instance.
+ *
+ * <p> The type of the service passed in argument to the callback is defined by the "S" generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbServiceMap<S> {
+ /**
+ * Handles the given arguments.
+ * @param service a Service
+ * @param properties a Map
+ */
+ void accept(S service, Map<String, Object> properties);
+
+ default InstanceCbServiceMap<S> andThen(InstanceCbServiceMap<S> after) {
+ Objects.requireNonNull(after);
+ return (S service, Map<String, Object> properties) -> {
+ accept(service, properties);
+ after.accept(service, properties);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceRef.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceRef.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceRef.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceRef.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,30 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Represents a callback(Service, ServiceReference) on an Object instance.
+ *
+ * <p> The type of the service passed in argument to the callback is defined by the "S" generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbServiceRef<S> {
+ /**
+ * Handles the given arguments.
+ * @param ref a Service Reference
+ * @param service a Service
+ */
+ void accept(S service, ServiceReference<S> ref);
+
+ default InstanceCbServiceRef<S> andThen(InstanceCbServiceRef<S> after) {
+ Objects.requireNonNull(after);
+ return (S service, ServiceReference<S> ref) -> {
+ accept(service, ref);
+ after.accept(service, ref);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceService.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceService.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceService.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceService.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,28 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+/**
+ * Represents a swap callback(Service, Service) on an Object instance.
+ *
+ * <p> The type of the service passed in argument to the callback is defined by the "S" generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbServiceService<S> extends SerializableLambda {
+ /**
+ * Handles the given argument
+ * @param old a Service
+ * @param replace a Service
+ */
+ void accept(S old, S replace);
+
+ default InstanceCbServiceService<S> andThen(InstanceCbServiceService<S> after) {
+ Objects.requireNonNull(after);
+ return (S old, S replace) -> {
+ accept(old, replace);
+ after.accept(old, replace);
+ };
+ }
+}
Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceServiceComponent.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceServiceComponent.java?rev=1731147&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceServiceComponent.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/callbacks/InstanceCbServiceServiceComponent.java Thu Feb 18 21:07:16 2016
@@ -0,0 +1,31 @@
+package org.apache.felix.dm.lambda.callbacks;
+
+import java.util.Objects;
+
+import org.apache.felix.dm.Component;
+
+/**
+ * Represents a swap callback(Service, Service, Component) on an Object instance.
+ *
+ * <p> The type of the service passed in argument to the callback is defined by the "S" generic parameter.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@FunctionalInterface
+public interface InstanceCbServiceServiceComponent<S> extends SerializableLambda {
+ /**
+ * Handles the given arguments.
+ * @param c the component
+ * @param old the old service
+ * @param replace the new service
+ */
+ void accept(S old, S replace, Component c);
+
+ default InstanceCbServiceServiceComponent<S> andThen(InstanceCbServiceServiceComponent<S> after) {
+ Objects.requireNonNull(after);
+ return (S old, S replace, Component c) -> {
+ accept(old, replace, c);
+ after.accept(old, replace, c);
+ };
+ }
+}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/AdapterBase.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/AdapterBase.java?rev=1731147&r1=1731146&r2=1731147&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/AdapterBase.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/AdapterBase.java Thu Feb 18 21:07:16 2016
@@ -12,9 +12,10 @@ import org.apache.felix.dm.lambda.Config
import org.apache.felix.dm.lambda.FluentProperty;
import org.apache.felix.dm.lambda.FutureDependencyBuilder;
import org.apache.felix.dm.lambda.ServiceDependencyBuilder;
+import org.apache.felix.dm.lambda.callbacks.Cb;
import org.apache.felix.dm.lambda.callbacks.CbComponent;
-import org.apache.felix.dm.lambda.callbacks.CbConsumer;
-import org.apache.felix.dm.lambda.callbacks.CbTypeComponent;
+import org.apache.felix.dm.lambda.callbacks.InstanceCb;
+import org.apache.felix.dm.lambda.callbacks.InstanceCbComponent;
/**
* Methods common to extended components like adapters or aspects.
@@ -156,18 +157,18 @@ public interface AdapterBase<B extends C
return (B) this;
}
- default B withSrv(Class<?> service, String filter) {
- andThenBuild(compBuilder -> compBuilder.withSrv(service, filter));
+ default B withSvc(Class<?> service, String filter) {
+ andThenBuild(compBuilder -> compBuilder.withSvc(service, filter));
return (B) this;
}
- default B withSrv(Class<?> ... services) {
- andThenBuild(compBuilder -> compBuilder.withSrv(services));
+ default B withSvc(Class<?> ... services) {
+ andThenBuild(compBuilder -> compBuilder.withSvc(services));
return (B) this;
}
- default <U> B withSrv(Class<U> service, Consumer<ServiceDependencyBuilder<U>> consumer) {
- andThenBuild(compBuilder -> compBuilder.withSrv(service, consumer));
+ default <U> B withSvc(Class<U> service, Consumer<ServiceDependencyBuilder<U>> consumer) {
+ andThenBuild(compBuilder -> compBuilder.withSvc(service, consumer));
return (B) this;
}
@@ -186,6 +187,11 @@ public interface AdapterBase<B extends C
return (B) this;
}
+ default B lifecycleCallbackInstance(Object lifecycleCallbackInstance) {
+ andThenBuild(compBuilder -> compBuilder.lifecycleCallbackInstance(lifecycleCallbackInstance));
+ return (B) this;
+ }
+
default B init(String callback) {
andThenBuild(compBuilder -> compBuilder.init(callback));
return (B) this;
@@ -205,103 +211,83 @@ public interface AdapterBase<B extends C
andThenBuild(compBuilder -> compBuilder.destroy(callback));
return (B) this;
}
-
- default B init(Object callbackInstance, String callback) {
- andThenBuild(compBuilder -> compBuilder.init(callbackInstance, callback));
- return (B) this;
- }
-
- default B start(Object callbackInstance, String callback) {
- andThenBuild(compBuilder -> compBuilder.start(callbackInstance, callback));
- return (B) this;
- }
-
- default B stop(Object callbackInstance, String callback) {
- andThenBuild(compBuilder -> compBuilder.stop(callbackInstance, callback));
- return (B) this;
- }
-
- default B destroy(Object callbackInstance, String callback) {
- andThenBuild(compBuilder -> compBuilder.destroy(callbackInstance, callback));
- return (B) this;
- }
-
- default <U> B init(CbConsumer<U> callback) {
+
+ default <U> B init(Cb<U> callback) {
andThenBuild(compBuilder -> compBuilder.init(callback));
return (B) this;
}
- default <U> B start(CbConsumer<U> callback) {
+ default <U> B start(Cb<U> callback) {
andThenBuild(compBuilder -> compBuilder.start(callback));
return (B) this;
}
- default <U> B stop(CbConsumer<U> callback) {
+ default <U> B stop(Cb<U> callback) {
andThenBuild(compBuilder -> compBuilder.stop(callback));
return (B) this;
}
- default <U> B destroy(CbConsumer<U> callback) {
+ default <U> B destroy(Cb<U> callback) {
andThenBuild(compBuilder -> compBuilder.destroy(callback));
return (B) this;
}
- default <U> B init(CbTypeComponent<U> callback) {
+ default <U> B init(CbComponent<U> callback) {
andThenBuild(compBuilder -> compBuilder.init(callback));
return (B) this;
}
- default <U> B start(CbTypeComponent<U> callback) {
+ default <U> B start(CbComponent<U> callback) {
andThenBuild(compBuilder -> compBuilder.start(callback));
return (B) this;
}
- default <U> B stop(CbTypeComponent<U> callback) {
+ default <U> B stop(CbComponent<U> callback) {
andThenBuild(compBuilder -> compBuilder.stop(callback));
return (B) this;
}
- default <U> B destroy(CbTypeComponent<U> callback) {
+ default <U> B destroy(CbComponent<U> callback) {
andThenBuild(compBuilder -> compBuilder.destroy(callback));
return (B) this;
}
- default B initInstance(Runnable callback) {
+ default B initInstance(InstanceCb callback) {
andThenBuild(compBuilder -> compBuilder.initInstance(callback));
return (B) this;
}
- default B startInstance(Runnable callback) {
+ default B startInstance(InstanceCb callback) {
andThenBuild(compBuilder -> compBuilder.startInstance(callback));
return (B) this;
}
- default B stopInstance(Runnable callback) {
+ default B stopInstance(InstanceCb callback) {
andThenBuild(compBuilder -> compBuilder.stopInstance(callback));
return (B) this;
}
- default B destroyInstance(Runnable callback) {
+ default B destroyInstance(InstanceCb callback) {
andThenBuild(compBuilder -> compBuilder.destroyInstance(callback));
return (B) this;
}
- default B initInstance(CbComponent callback) {
+ default B initInstance(InstanceCbComponent callback) {
andThenBuild(compBuilder -> compBuilder.initInstance(callback));
return (B) this;
}
- default B startInstance(CbComponent callback) {
+ default B startInstance(InstanceCbComponent callback) {
andThenBuild(compBuilder -> compBuilder.startInstance(callback));
return (B) this;
}
- default B stopInstance(CbComponent callback) {
+ default B stopInstance(InstanceCbComponent callback) {
andThenBuild(compBuilder -> compBuilder.stopInstance(callback));
return (B) this;
}
- default B destroyInstance(CbComponent callback) {
+ default B destroyInstance(InstanceCbComponent callback) {
andThenBuild(compBuilder -> compBuilder.destroyInstance(callback));
return (B) this;
}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java?rev=1731147&r1=1731146&r2=1731147&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java Thu Feb 18 21:07:16 2016
@@ -12,9 +12,9 @@ import org.apache.felix.dm.DependencyMan
import org.apache.felix.dm.lambda.BundleAdapterBuilder;
import org.apache.felix.dm.lambda.ComponentBuilder;
import org.apache.felix.dm.lambda.callbacks.CbBundle;
-import org.apache.felix.dm.lambda.callbacks.CbComponentBundle;
-import org.apache.felix.dm.lambda.callbacks.CbTypeBundle;
-import org.apache.felix.dm.lambda.callbacks.CbTypeComponentBundle;
+import org.apache.felix.dm.lambda.callbacks.CbBundleComponent;
+import org.apache.felix.dm.lambda.callbacks.InstanceCbBundle;
+import org.apache.felix.dm.lambda.callbacks.InstanceCbBundleComponent;
import org.osgi.framework.Bundle;
public class BundleAdapterBuilderImpl implements AdapterBase<BundleAdapterBuilder>, BundleAdapterBuilder {
@@ -82,45 +82,44 @@ public class BundleAdapterBuilderImpl im
return this;
}
- public BundleAdapterBuilder cb(String ... callbacks) {
- return cbi(null, callbacks);
+ public BundleAdapterBuilder add(String callback) {
+ return callbacks(callback, null, null);
}
- public BundleAdapterBuilder cbi(Object callbackInstance, String ... callbacks) {
- switch (callbacks.length) {
- case 1:
- return cbi(callbackInstance, callbacks[0], null, null);
-
- case 2:
- return cbi(callbackInstance, callbacks[0], null, callbacks[1]);
-
- case 3:
- return cbi(callbackInstance, callbacks[0], callbacks[1], callbacks[2]);
-
- default:
- throw new IllegalArgumentException("wrong number of arguments: " + callbacks.length + ". " +
- "Possible arguments: [add], [add, remove] or [add, change, remove]");
- }
+ public BundleAdapterBuilder change(String callback) {
+ return callbacks(null, callback, null);
}
- private BundleAdapterBuilder cbi(Object callbackInstance, String add, String change, String remove) {
- checkHasNoMethodRefs();
+ public BundleAdapterBuilder remove(String callback) {
+ return callbacks(null, null, callback);
+ }
+
+ public BundleAdapterBuilder callbackInstance(Object callbackInstance) {
m_callbackInstance = callbackInstance;
- m_add = add;
- m_change = change;
- m_remove = remove;
return this;
}
- public <T> BundleAdapterBuilder cb(CbTypeBundle<T> add) {
- return cb(add, (CbTypeBundle<T>) null, (CbTypeBundle<T>) null);
+ private BundleAdapterBuilder callbacks(String add, String change, String remove) {
+ checkHasNoMethodRefs();
+ m_add = add != null ? add : m_add;
+ m_change = change != null ? change : m_change;
+ m_remove = remove != null ? remove : m_remove;
+ return this;
+ }
+
+ public <T> BundleAdapterBuilder add(CbBundle<T> add) {
+ return callbacks(add, (CbBundle<T>) null, (CbBundle<T>) null);
+ }
+
+ public <T> BundleAdapterBuilder change(CbBundle<T> change) {
+ return callbacks(null, change, null);
}
- public <T> BundleAdapterBuilder cb(CbTypeBundle<T> add, CbTypeBundle<T> remove) {
- return cb(add, null, remove);
+ public <T> BundleAdapterBuilder remove(CbBundle<T> remove) {
+ return callbacks(null, null, remove);
}
- public <T> BundleAdapterBuilder cb(CbTypeBundle<T> add, CbTypeBundle<T> change, CbTypeBundle<T> remove) {
+ private <T> BundleAdapterBuilder callbacks(CbBundle<T> add, CbBundle<T> change, CbBundle<T> remove) {
if (add != null) {
Class<T> type = Helpers.getLambdaArgType(add, 0);
setComponentCallbackRef(Cb.ADD, type, (instance, component, bundle) -> { add.accept((T) instance, bundle); });
@@ -136,57 +135,69 @@ public class BundleAdapterBuilderImpl im
return this;
}
- public BundleAdapterBuilder cbi(CbBundle add) {
- return cbi(add, null, null);
+ public BundleAdapterBuilder add(InstanceCbBundle add) {
+ return callbacks(add, null, null);
+ }
+
+ public BundleAdapterBuilder change(InstanceCbBundle change) {
+ return callbacks(null, change, null);
}
- public BundleAdapterBuilder cbi(CbBundle add, CbBundle remove) {
- return cbi(add, null, remove);
+ public BundleAdapterBuilder remove(InstanceCbBundle remove) {
+ return callbacks(null, null, remove);
}
-
- public BundleAdapterBuilder cbi(CbBundle add, CbBundle change, CbBundle remove) {
+
+ public BundleAdapterBuilder callbacks(InstanceCbBundle add, InstanceCbBundle change, InstanceCbBundle remove) {
if (add != null) setInstanceCallbackRef(Cb.ADD, (instance, component, bundle) -> { add.accept(bundle); });
if (change != null) setInstanceCallbackRef(Cb.CHG, (instance, component, bundle) -> { change.accept(bundle); });
if (remove != null) setInstanceCallbackRef(Cb.REM, (instance, component, bundle) -> { remove.accept(bundle); });
return this;
}
- public <T> BundleAdapterBuilder cb(CbTypeComponentBundle<T> add) {
- return cb((CbTypeComponentBundle<T>) add, (CbTypeComponentBundle<T>) null, (CbTypeComponentBundle<T>) null);
+ public <T> BundleAdapterBuilder add(CbBundleComponent<T> add) {
+ return callbacks(add, null, null);
+ }
+
+ public <T> BundleAdapterBuilder change(CbBundleComponent<T> change) {
+ return callbacks(null, change, null);
}
- public <T> BundleAdapterBuilder cb(CbTypeComponentBundle<T> add, CbTypeComponentBundle<T> remove) {
- return cb(add, null, remove);
+ public <T> BundleAdapterBuilder remove(CbBundleComponent<T> remove) {
+ return callbacks(null, null, remove);
}
- public <T> BundleAdapterBuilder cb(CbTypeComponentBundle<T> add, CbTypeComponentBundle<T> change, CbTypeComponentBundle<T> remove) {
+ public <T> BundleAdapterBuilder callbacks(CbBundleComponent<T> add, CbBundleComponent<T> change, CbBundleComponent<T> remove) {
if (add != null) {
Class<T> type = Helpers.getLambdaArgType(add, 0);
- return setComponentCallbackRef(Cb.ADD, type, (instance, component, bundle) -> { add.accept((T) instance, component, bundle); });
+ return setComponentCallbackRef(Cb.ADD, type, (instance, component, bundle) -> { add.accept((T) instance, bundle, component); });
}
if (change != null) {
Class<T> type = Helpers.getLambdaArgType(change, 0);
- return setComponentCallbackRef(Cb.CHG, type, (instance, component, bundle) -> { change.accept((T) instance, component, bundle); });
+ return setComponentCallbackRef(Cb.CHG, type, (instance, component, bundle) -> { change.accept((T) instance, bundle, component); });
}
if (remove != null) {
Class<T> type = Helpers.getLambdaArgType(remove, 0);
- return setComponentCallbackRef(Cb.ADD, type, (instance, component, bundle) -> { remove.accept((T) instance, component, bundle); });
+ return setComponentCallbackRef(Cb.ADD, type, (instance, component, bundle) -> { remove.accept((T) instance, bundle, component); });
}
return this;
}
- public BundleAdapterBuilder cbi(CbComponentBundle add) {
- return cbi(add, null, null);
+ public BundleAdapterBuilder add(InstanceCbBundleComponent add) {
+ return callbacks(add, null, null);
}
- public BundleAdapterBuilder cbi(CbComponentBundle add, CbComponentBundle remove) {
- return cbi(add, null, remove);
+ public BundleAdapterBuilder change(InstanceCbBundleComponent change) {
+ return callbacks(null, change, null);
}
-
- public BundleAdapterBuilder cbi(CbComponentBundle add, CbComponentBundle change, CbComponentBundle remove) {
- if (add != null) setInstanceCallbackRef(Cb.ADD, (instance, component, bundle) -> { add.accept(component, bundle); });
- if (change != null) setInstanceCallbackRef(Cb.CHG, (instance, component, bundle) -> { change.accept(component, bundle); });
- if (remove != null) setInstanceCallbackRef(Cb.REM, (instance, component, bundle) -> { remove.accept(component, bundle); });
+
+ public BundleAdapterBuilder remove(InstanceCbBundleComponent remove) {
+ return callbacks(null, null, remove);
+ }
+
+ public BundleAdapterBuilder callbacks(InstanceCbBundleComponent add, InstanceCbBundleComponent change, InstanceCbBundleComponent remove) {
+ if (add != null) setInstanceCallbackRef(Cb.ADD, (instance, component, bundle) -> { add.accept(bundle, component); });
+ if (change != null) setInstanceCallbackRef(Cb.CHG, (instance, component, bundle) -> { change.accept(bundle, component); });
+ if (remove != null) setInstanceCallbackRef(Cb.REM, (instance, component, bundle) -> { remove.accept(bundle, component); });
return this;
}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java?rev=1731147&r1=1731146&r2=1731147&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java Thu Feb 18 21:07:16 2016
@@ -6,7 +6,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.function.Supplier;
+import java.util.function.Function;
import java.util.stream.Stream;
import org.apache.felix.dm.BundleDependency;
@@ -14,9 +14,9 @@ import org.apache.felix.dm.Component;
import org.apache.felix.dm.DependencyManager;
import org.apache.felix.dm.lambda.BundleDependencyBuilder;
import org.apache.felix.dm.lambda.callbacks.CbBundle;
-import org.apache.felix.dm.lambda.callbacks.CbComponentBundle;
-import org.apache.felix.dm.lambda.callbacks.CbTypeBundle;
-import org.apache.felix.dm.lambda.callbacks.CbTypeComponentBundle;
+import org.apache.felix.dm.lambda.callbacks.CbBundleComponent;
+import org.apache.felix.dm.lambda.callbacks.InstanceCbBundle;
+import org.apache.felix.dm.lambda.callbacks.InstanceCbBundleComponent;
import org.osgi.framework.Bundle;
@SuppressWarnings("unchecked")
@@ -34,7 +34,7 @@ public class BundleDependencyBuilderImpl
private boolean m_propagate;
private Object m_propagateInstance;
private String m_propagateMethod;
- private Supplier<Dictionary<?, ?>> m_propagateSupplier;
+ private Function<Bundle, Dictionary<?, ?>> m_propagateCallback;
private final Component m_component;
enum Cb {
@@ -55,13 +55,14 @@ public class BundleDependencyBuilderImpl
*/
private class Propagate {
@SuppressWarnings("unused")
- Dictionary<?, ?> propagate() {
- return m_propagateSupplier.get();
+ Dictionary<?, ?> propagate(Bundle bundle) {
+ return m_propagateCallback.apply(bundle);
}
}
public BundleDependencyBuilderImpl (Component component) {
m_component = component;
+ m_required = Helpers.isDependencyRequiredByDefault(component);
}
@Override
@@ -121,7 +122,7 @@ public class BundleDependencyBuilderImpl
@Override
public BundleDependencyBuilder propagate(Object instance, String method) {
- if (m_propagateSupplier != null || m_propagate) throw new IllegalStateException("Propagate callback already set.");
+ if (m_propagateCallback != null || m_propagate) throw new IllegalStateException("Propagate callback already set.");
Objects.nonNull(method);
Objects.nonNull(instance);
m_propagateInstance = instance;
@@ -130,42 +131,38 @@ public class BundleDependencyBuilderImpl
}
@Override
- public BundleDependencyBuilder propagate(Supplier<Dictionary<?, ?>> instance) {
+ public BundleDependencyBuilder propagate(Function<Bundle, Dictionary<?, ?>> instance) {
if (m_propagateInstance != null || m_propagate) throw new IllegalStateException("Propagate callback already set.");
- m_propagateSupplier = instance;
+ m_propagateCallback = instance;
return this;
}
-
- public BundleDependencyBuilder cb(String ... callbacks) {
- return cb(null, callbacks);
- }
@Override
- public BundleDependencyBuilder cb(Object callbackInstance, String ... callbacks) {
- switch (callbacks.length) {
- case 1:
- cbi(callbackInstance, callbacks[0], null, null);
- break;
-
- case 2:
- cbi(callbackInstance, callbacks[0], null, callbacks[1]);
- break;
-
- case 3:
- cbi(callbackInstance, callbacks[0], callbacks[1], callbacks[2]);
- break;
-
- default:
- throw new IllegalArgumentException("wrong number of arguments: " + callbacks.length + ". " +
- "Possible arguments: [add], [add, remove] or [add, change, remove]");
- }
+ public BundleDependencyBuilder callbackInstance(Object callbackInstance) {
+ m_instance = callbackInstance;
+ return this;
+ }
+ @Override
+ public BundleDependencyBuilder add(String add) {
+ callbacks(add, null, null);
return this;
}
- private BundleDependencyBuilder cbi(Object callbackInstance, String added, String changed, String removed) {
+ @Override
+ public BundleDependencyBuilder change(String change) {
+ callbacks(null, change, null);
+ return this;
+ }
+
+ @Override
+ public BundleDependencyBuilder remove(String remove) {
+ callbacks(null, null, remove);
+ return this;
+ }
+
+ private BundleDependencyBuilder callbacks(String added, String changed, String removed) {
requiresNoMethodRefs();
- m_instance = callbackInstance;
m_added = added != null ? added : m_added;
m_changed = changed != null ? changed : m_changed;
m_removed = removed != null ? removed : m_removed;
@@ -174,17 +171,21 @@ public class BundleDependencyBuilderImpl
}
@Override
- public <T> BundleDependencyBuilder cb(CbTypeBundle<T> add) {
- return cb(add, null, null);
+ public <T> BundleDependencyBuilder add(CbBundle<T> add) {
+ return callbacks(add, null, null);
}
@Override
- public <T> BundleDependencyBuilder cb(CbTypeBundle<T> add, CbTypeBundle<T> remove) {
- return cb(add, null, remove);
+ public <T> BundleDependencyBuilder change(CbBundle<T> change) {
+ return callbacks(null, change, null);
}
@Override
- public <T> BundleDependencyBuilder cb(CbTypeBundle<T> add, CbTypeBundle<T> change, CbTypeBundle<T> remove) {
+ public <T> BundleDependencyBuilder remove(CbBundle<T> remove) {
+ return callbacks(null, null, remove);
+ }
+
+ private <T> BundleDependencyBuilder callbacks(CbBundle<T> add, CbBundle<T> change, CbBundle<T> remove) {
if (add != null) {
setComponentCallbackRef(Cb.ADD, Helpers.getLambdaArgType(add, 0), (inst, component, bundle) -> add.accept ((T) inst, bundle));
}
@@ -198,41 +199,49 @@ public class BundleDependencyBuilderImpl
}
@Override
- public <T> BundleDependencyBuilder cb(CbTypeComponentBundle<T> add) {
- return cb(add, null, null);
+ public <T> BundleDependencyBuilder add(CbBundleComponent<T> add) {
+ return callbacks(add, null, null);
}
@Override
- public <T> BundleDependencyBuilder cb(CbTypeComponentBundle<T> add, CbTypeComponentBundle<T> remove) {
- return cb(add, null, remove);
+ public <T> BundleDependencyBuilder change(CbBundleComponent<T> change) {
+ return callbacks(null, change, null);
}
@Override
- public <T> BundleDependencyBuilder cb(CbTypeComponentBundle<T> add, CbTypeComponentBundle<T> change, CbTypeComponentBundle<T> remove) {
+ public <T> BundleDependencyBuilder remove(CbBundleComponent<T> remove) {
+ return callbacks(null, null, remove);
+ }
+
+ private <T> BundleDependencyBuilder callbacks(CbBundleComponent<T> add, CbBundleComponent<T> change, CbBundleComponent<T> remove) {
if (add != null) {
- setComponentCallbackRef(Cb.ADD, Helpers.getLambdaArgType(add, 0), (inst, component, bundle) -> add.accept ((T) inst, component, bundle));
+ setComponentCallbackRef(Cb.ADD, Helpers.getLambdaArgType(add, 0), (inst, component, bundle) -> add.accept ((T) inst, bundle, component));
}
if (change != null) {
- setComponentCallbackRef(Cb.CHG, Helpers.getLambdaArgType(change, 0), (inst, component, bundle) -> change.accept ((T) inst, component, bundle));
+ setComponentCallbackRef(Cb.CHG, Helpers.getLambdaArgType(change, 0), (inst, component, bundle) -> change.accept ((T) inst, bundle, component));
}
if (remove != null) {
- setComponentCallbackRef(Cb.REM, Helpers.getLambdaArgType(remove, 0), (inst, component, bundle) -> remove.accept ((T) inst, component, bundle));
+ setComponentCallbackRef(Cb.REM, Helpers.getLambdaArgType(remove, 0), (inst, component, bundle) -> remove.accept ((T) inst, bundle, component));
}
return this;
}
@Override
- public BundleDependencyBuilder cbi(CbBundle add) {
- return cbi(add, null, null);
+ public BundleDependencyBuilder add(InstanceCbBundle add) {
+ return callbacks(add, null, null);
}
@Override
- public BundleDependencyBuilder cbi(CbBundle add, CbBundle remove) {
- return cbi(add, null, remove);
+ public BundleDependencyBuilder change(InstanceCbBundle change) {
+ return callbacks(null, change, null);
}
@Override
- public BundleDependencyBuilder cbi(CbBundle add, CbBundle change, CbBundle remove) {
+ public BundleDependencyBuilder remove(InstanceCbBundle remove) {
+ return callbacks(null, null, remove);
+ }
+
+ private BundleDependencyBuilder callbacks(InstanceCbBundle add, InstanceCbBundle change, InstanceCbBundle remove) {
if (add != null) setInstanceCallbackRef(Cb.ADD, (inst, component, bundle) -> add.accept(bundle));
if (change != null) setInstanceCallbackRef(Cb.CHG, (inst, component, bundle) -> change.accept(bundle));
if (remove != null) setInstanceCallbackRef(Cb.REM, (inst, component, bundle) -> remove.accept(bundle));
@@ -240,20 +249,24 @@ public class BundleDependencyBuilderImpl
}
@Override
- public BundleDependencyBuilder cbi(CbComponentBundle add) {
- return cbi(add, null, null);
+ public BundleDependencyBuilder add(InstanceCbBundleComponent add) {
+ return callbacks(add, null, null);
}
@Override
- public BundleDependencyBuilder cbi(CbComponentBundle add, CbComponentBundle remove) {
- return cbi(add, null, remove);
+ public BundleDependencyBuilder change(InstanceCbBundleComponent add) {
+ return callbacks(add, null, null);
}
-
+
@Override
- public BundleDependencyBuilder cbi(CbComponentBundle add, CbComponentBundle change, CbComponentBundle remove) {
- if (add != null) setInstanceCallbackRef(Cb.ADD, (inst, component, bundle) -> add.accept(component, bundle));
- if (change != null) setInstanceCallbackRef(Cb.CHG, (inst, component, bundle) -> change.accept(component, bundle));
- if (remove != null) setInstanceCallbackRef(Cb.REM, (inst, component, bundle) -> remove.accept(component, bundle));
+ public BundleDependencyBuilder remove(InstanceCbBundleComponent remove) {
+ return callbacks(null, null, remove);
+ }
+
+ private BundleDependencyBuilder callbacks(InstanceCbBundleComponent add, InstanceCbBundleComponent change, InstanceCbBundleComponent remove) {
+ if (add != null) setInstanceCallbackRef(Cb.ADD, (inst, component, bundle) -> add.accept(bundle, component));
+ if (change != null) setInstanceCallbackRef(Cb.CHG, (inst, component, bundle) -> change.accept(bundle, component));
+ if (remove != null) setInstanceCallbackRef(Cb.REM, (inst, component, bundle) -> remove.accept(bundle, component));
return this;
}
@@ -280,7 +293,7 @@ public class BundleDependencyBuilderImpl
dep.setPropagate(true);
} else if (m_propagateInstance != null) {
dep.setPropagate(m_propagateInstance, m_propagateMethod);
- } else if (m_propagateSupplier != null) {
+ } else if (m_propagateCallback != null) {
dep.setPropagate(new Propagate(), "propagate");
}
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/CompletableFutureDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/CompletableFutureDependencyImpl.java?rev=1731147&r1=1731146&r2=1731147&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/CompletableFutureDependencyImpl.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/CompletableFutureDependencyImpl.java Thu Feb 18 21:07:16 2016
@@ -14,7 +14,7 @@ import org.apache.felix.dm.context.Event
import org.apache.felix.dm.context.EventType;
import org.apache.felix.dm.lambda.FutureDependencyBuilder;
import org.apache.felix.dm.lambda.callbacks.CbFuture;
-import org.apache.felix.dm.lambda.callbacks.CbTypeFuture;
+import org.apache.felix.dm.lambda.callbacks.InstanceCbFuture;
import org.osgi.service.log.LogService;
public class CompletableFutureDependencyImpl<F> extends AbstractDependency<CompletableFutureDependencyImpl<F>> implements FutureDependencyBuilder<F> {
@@ -23,8 +23,8 @@ public class CompletableFutureDependency
private Component m_comp;
private boolean m_async;
private Executor m_exec;
- private CbFuture<F> m_accept = (future) -> {};
- private CbTypeFuture<Object, F> m_accept2;
+ private InstanceCbFuture<F> m_accept = (future) -> {};
+ private CbFuture<Object, F> m_accept2;
private Class<?> m_accept2Type;
public CompletableFutureDependencyImpl(Component c, CompletableFuture<F> future) {
@@ -51,24 +51,24 @@ public class CompletableFutureDependency
}
@Override
- public FutureDependencyBuilder<F> cb(String callback) {
- return cbi(null, callback);
+ public FutureDependencyBuilder<F> complete(String callback) {
+ return complete(null, callback);
}
@Override
- public FutureDependencyBuilder<F> cbi(Object callbackInstance, String callback) {
+ public FutureDependencyBuilder<F> complete(Object callbackInstance, String callback) {
super.setCallbacks(callbackInstance, callback, null);
return this;
}
@Override
- public <T> FutureDependencyBuilder<F> cb(CbTypeFuture<T, ? super F> consumer) {
- return cb(consumer, false);
+ public <T> FutureDependencyBuilder<F> complete(CbFuture<T, ? super F> consumer) {
+ return complete(consumer, false);
}
@SuppressWarnings("unchecked")
@Override
- public <T> FutureDependencyBuilder<F> cb(CbTypeFuture<T, ? super F> consumer, boolean async) {
+ public <T> FutureDependencyBuilder<F> complete(CbFuture<T, ? super F> consumer, boolean async) {
m_accept2Type = Helpers.getLambdaArgType(consumer, 0);;
m_accept2 = (instance, result) -> consumer.accept((T) instance, result);
m_async = async;
@@ -76,28 +76,28 @@ public class CompletableFutureDependency
}
@Override
- public <T> FutureDependencyBuilder<F> cb(CbTypeFuture<T, ? super F> consumer, Executor executor) {
- cb(consumer, true /* async */);
+ public <T> FutureDependencyBuilder<F> complete(CbFuture<T, ? super F> consumer, Executor executor) {
+ complete(consumer, true /* async */);
m_exec = executor;
return this;
}
@Override
- public FutureDependencyBuilder<F> cbi(CbFuture<? super F> consumer) {
- cbi(consumer, false);
+ public FutureDependencyBuilder<F> complete(InstanceCbFuture<? super F> consumer) {
+ complete(consumer, false);
return this;
}
@Override
- public FutureDependencyBuilder<F> cbi(CbFuture<? super F> consumer, boolean async) {
+ public FutureDependencyBuilder<F> complete(InstanceCbFuture<? super F> consumer, boolean async) {
m_accept = m_accept.andThen(future -> consumer.accept(future));
m_async = async;
return this;
}
@Override
- public FutureDependencyBuilder<F> cbi(CbFuture<? super F> consumer, Executor executor) {
- cbi(consumer, true /* async */);
+ public FutureDependencyBuilder<F> complete(InstanceCbFuture<? super F> consumer, Executor executor) {
+ complete(consumer, true /* async */);
m_exec = executor;
return this;
}
@@ -212,7 +212,7 @@ public class CompletableFutureDependency
}
/**
- * Injects the completed fiture result in a method by reflection.
+ * Injects the completed future result in a method by reflection.
* We try to find a method which has in its signature a parameter that is compatible with the future result
* (including any interfaces the result may implements).
*