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 2017/09/29 13:20:23 UTC
svn commit: r1810094 - in
/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional:
OSGi.java internal/PrototypesOSGi.java internal/ServicesOSGi.java
Author: csierra
Date: Fri Sep 29 13:20:23 2017
New Revision: 1810094
URL: http://svn.apache.org/viewvc?rev=1810094&view=rev
Log:
[Component-DSL] Reimplement in terms of service references
Removed:
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/PrototypesOSGi.java
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/ServicesOSGi.java
Modified:
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.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=1810094&r1=1810093&r2=1810094&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 Sep 29 13:20:23 2017
@@ -32,10 +32,8 @@ import org.apache.aries.osgi.functional.
import org.apache.aries.osgi.functional.internal.JustOSGiImpl;
import org.apache.aries.osgi.functional.internal.NothingOSGiImpl;
import org.apache.aries.osgi.functional.internal.OnCloseOSGiImpl;
-import org.apache.aries.osgi.functional.internal.PrototypesOSGi;
import org.apache.aries.osgi.functional.internal.ServiceReferenceOSGi;
import org.apache.aries.osgi.functional.internal.ServiceRegistrationOSGiImpl;
-import org.apache.aries.osgi.functional.internal.ServicesOSGi;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceFactory;
@@ -121,7 +119,12 @@ public interface OSGi<T> extends OSGiRun
static <T> OSGi<ServiceObjects<T>> prototypes(
Class<T> clazz, String filterString) {
- return new PrototypesOSGi<>(clazz, filterString);
+ return
+ bundleContext().flatMap(
+ bundleContext ->
+
+ serviceReferences(clazz, filterString).map(
+ bundleContext::getServiceObjects));
}
static <T> OSGi<ServiceRegistration<T>> register(
@@ -151,7 +154,20 @@ public interface OSGi<T> extends OSGiRun
}
static <T> OSGi<T> services(Class<T> clazz, String filterString) {
- return new ServicesOSGi<>(clazz, filterString);
+ return
+ bundleContext().flatMap(
+ bundleContext ->
+
+ serviceReferences(clazz, filterString).flatMap(
+ sr -> {
+ T service = bundleContext.getService(sr);
+
+ return
+ onClose(() -> bundleContext.ungetService(sr)).then(
+ just(service)
+ );
+ }
+ ));
}
static <T> OSGi<ServiceReference<T>> serviceReferences(