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/11/03 15:25:07 UTC

[08/11] aries-jax-rs-whiteboard git commit: Improve dependency checking

Improve dependency checking

It only uses the first one of each dependency as a trigger for
starting and the last one of each dependency as a trigger for
closing.


Project: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/commit/8fd8f7f8
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/8fd8f7f8
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/8fd8f7f8

Branch: refs/heads/master
Commit: 8fd8f7f8bf832db35272df301bd1a534f75b5275
Parents: 388fbfd
Author: Carlos Sierra <cs...@apache.org>
Authored: Mon Oct 30 08:33:25 2017 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Fri Nov 3 16:18:24 2017 +0100

----------------------------------------------------------------------
 .../jax/rs/whiteboard/internal/Whiteboard.java  | 21 ++++++++------------
 1 file changed, 8 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/8fd8f7f8/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
index 0277965..b7c412b 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
@@ -84,6 +84,7 @@ import static org.apache.aries.osgi.functional.OSGi.join;
 import static org.apache.aries.osgi.functional.OSGi.just;
 import static org.apache.aries.osgi.functional.OSGi.nothing;
 import static org.apache.aries.osgi.functional.OSGi.onClose;
+import static org.apache.aries.osgi.functional.OSGi.once;
 import static org.apache.aries.osgi.functional.OSGi.register;
 import static org.apache.aries.osgi.functional.OSGi.serviceReferences;
 import static org.osgi.service.http.runtime.HttpServiceRuntimeConstants.HTTP_SERVICE_ENDPOINT;
@@ -552,12 +553,10 @@ public class Whiteboard {
             applicationReference.getProperty(JAX_RS_EXTENSION_SELECT));
 
         if (extensionDependencies.length > 0) {
-            program = onClose(
-                () -> _runtime.removeDependentApplication(
-                    applicationReference)).
-                then(program);
-
-            _runtime.addDependentApplication(applicationReference);
+            program = just(0).effects(
+                __ -> _runtime.addDependentApplication(applicationReference),
+                __ -> _runtime.removeDependentApplication(applicationReference)
+            ).then(program);
         }
         else {
             return program;
@@ -570,7 +569,7 @@ public class Whiteboard {
                 extensionDependency);
 
             program =
-                serviceReferences(extensionDependency).
+                once(serviceReferences(extensionDependency)).
                     flatMap(
                         sr -> {
                             Object applicationSelectProperty =
@@ -604,10 +603,6 @@ public class Whiteboard {
                     then(program);
         }
 
-        program = onClose(
-            ()-> _runtime.removeDependentApplication(applicationReference)).
-            then(program);
-
         program = program.effects(
             __ -> _runtime.removeDependentApplication(applicationReference),
             __ -> {}
@@ -639,14 +634,14 @@ public class Whiteboard {
                     extensionDependency);
 
                 program =
-                    serviceReferences(ApplicationExtensionRegistration.class).
+                    once(serviceReferences(ApplicationExtensionRegistration.class).
                         filter(
                             sr -> getApplicationName(sr::getProperty).equals(
                                 applicationName)
                         ).
                         filter(
                             extensionFilter::match
-                        ).effects(
+                        )).effects(
                             __ -> {},
                             __ -> _runtime.addDependentService(serviceReference)
                         ).