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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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:[email protected]">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). *
