You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2018/02/23 08:54:50 UTC
svn commit: r1825116 - in
/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional:
OSGi.java internal/ServiceRegistrationOSGiImpl.java
Author: csierra
Date: Fri Feb 23 08:54:50 2018
New Revision: 1825116
URL: http://svn.apache.org/viewvc?rev=1825116&view=rev
Log:
[Component-DSL] Register accepts Supplier
Modified:
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/ServiceRegistrationOSGiImpl.java
Modified: aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java
URL: http://svn.apache.org/viewvc/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java?rev=1825116&r1=1825115&r2=1825116&view=diff
==============================================================================
--- aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java (original)
+++ aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java Fri Feb 23 08:54:50 2018
@@ -186,17 +186,39 @@ public interface OSGi<T> extends OSGiRun
static <T> OSGi<ServiceRegistration<T>> register(
Class<T> clazz, T service, Map<String, Object> properties) {
+ return register(clazz, () -> service, () -> properties);
+ }
+
+ static <T> OSGi<ServiceRegistration<T>> register(
+ Class<T> clazz, ServiceFactory<T> service,
+ Map<String, Object> properties) {
+
+ return register(clazz, service, () -> properties);
+ }
+
+ static OSGi<ServiceRegistration<?>> register(
+ String[] classes, Object service, Map<String, ?> properties) {
+
+ return new ServiceRegistrationOSGiImpl(
+ classes, () -> service, () -> properties);
+ }
+
+ static <T> OSGi<ServiceRegistration<T>> register(
+ Class<T> clazz, Supplier<T> service, Supplier<Map<String, ?>> properties) {
+
return new ServiceRegistrationOSGiImpl<>(clazz, service, properties);
}
static <T> OSGi<ServiceRegistration<T>> register(
- Class<T> clazz, ServiceFactory<T> service, Map<String, Object> properties) {
+ Class<T> clazz, ServiceFactory<T> service,
+ Supplier<Map<String, ?>> properties) {
return new ServiceRegistrationOSGiImpl<>(clazz, service, properties);
}
static OSGi<ServiceRegistration<?>> register(
- String[] classes, Object service, Map<String, ?> properties) {
+ String[] classes, Supplier<Object> service,
+ Supplier<Map<String, ?>> properties) {
return new ServiceRegistrationOSGiImpl(classes, service, properties);
}
Modified: aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/ServiceRegistrationOSGiImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/ServiceRegistrationOSGiImpl.java?rev=1825116&r1=1825115&r2=1825116&view=diff
==============================================================================
--- aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/ServiceRegistrationOSGiImpl.java (original)
+++ aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/ServiceRegistrationOSGiImpl.java Fri Feb 23 08:54:50 2018
@@ -25,6 +25,7 @@ import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.function.Function;
+import java.util.function.Supplier;
/**
* @author Carlos Sierra Andrés
@@ -33,12 +34,13 @@ public class ServiceRegistrationOSGiImpl
extends OSGiImpl<ServiceRegistration<T>> {
public ServiceRegistrationOSGiImpl(
- Class<T> clazz, T service, Map<String, Object> properties) {
+ Class<T> clazz, Supplier<T> service,
+ Supplier<Map<String, ?>> properties) {
super((bundleContext, op) -> {
ServiceRegistration<?> serviceRegistration =
bundleContext.registerService(
- clazz, service, getProperties(properties));
+ clazz, service.get(), getProperties(properties.get()));
return getServiceRegistrationOSGiResult(serviceRegistration, op);
});
@@ -46,31 +48,33 @@ public class ServiceRegistrationOSGiImpl
public ServiceRegistrationOSGiImpl(
Class<T> clazz, ServiceFactory<T> serviceFactory,
- Map<String, Object> properties) {
+ Supplier<Map<String, ?>> properties) {
super((bundleContext, op) -> {
ServiceRegistration<?> serviceRegistration =
bundleContext.registerService(
- clazz, serviceFactory, getProperties(properties));
+ clazz, serviceFactory,
+ getProperties(properties.get()));
return getServiceRegistrationOSGiResult(serviceRegistration, op);
});
}
public ServiceRegistrationOSGiImpl(
- String[] clazz, Object service, Map<String, ?> properties) {
+ String[] clazz, Supplier<Object> service,
+ Supplier<Map<String, ?>> properties) {
super((bundleContext, op) -> {
ServiceRegistration<?> serviceRegistration =
bundleContext.registerService(
- clazz, service, new Hashtable<>(properties));
+ clazz, service, new Hashtable<>(properties.get()));
return getServiceRegistrationOSGiResult(serviceRegistration, op);
});
}
private static Hashtable<String, Object> getProperties(
- Map<String, Object> properties) {
+ Map<String, ?> properties) {
if (properties == null) {
return new Hashtable<>();