Reimplement using recoverWith

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/24467b34
Tree: 
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/24467b34
Diff: 
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/24467b34

Branch: refs/heads/master
Commit: 24467b34d7c6ba21114d353a53eb83f49aff7165
Parents: 610578f
Author: Carlos Sierra <[email protected]>
Authored: Mon Nov 20 15:03:02 2017 +0100
Committer: Carlos Sierra <[email protected]>
Committed: Mon Nov 20 15:03:02 2017 +0100

----------------------------------------------------------------------
 .../jax/rs/whiteboard/internal/Whiteboard.java  | 60 +++++++++-----------
 1 file changed, 26 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/24467b34/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 c2c21ec..df5dd13 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
@@ -462,34 +462,26 @@ public class Whiteboard {
                 just(serviceReference),
                 _runtime::addNotGettableEndpoint,
                 _runtime::removeNotGettableEndpoint
+            ).recoverWith((t, e) ->
+                just(serviceReference).
+                effects(
+                    _runtime::addErroredEndpoint,
+                    _runtime::removeErroredEndpoint).
+                then(nothing())
+            ).map(
+                ServiceTuple::getCachingServiceReference
             ).flatMap(
-                tuple -> serviceObjects(serviceReference).flatMap(
-                    serviceObjects -> {
-                        try {
-                            return registerEndpoint(
-                                registrator, serviceObjects).flatMap(
-                                resourceProvider ->
-                                    onClose(
-                                        () -> Utils.unregisterEndpoint(
-                                            registrator, resourceProvider)
-                                    ).effects(
-                                        __ -> _runtime.addApplicationEndpoint(
-                                            applicationName, serviceReference),
-                                        __ -> 
_runtime.removeApplicationEndpoint(
-                                            applicationName, serviceReference)
-                                    ));
-                        }
-                        catch (Exception e) {
-                            return
-                                just(serviceReference).
-                                effects(
-                                    _runtime::addErroredEndpoint,
-                                    _runtime::removeErroredEndpoint).
-                                then(nothing());
-                        }
-                    }
-
-                )
+                Utils::serviceObjects
+            ).map(
+                Utils::getResourceProvider
+            ).effects(
+                registrator::add,
+                registrator::remove
+            ).effects(
+                __ -> _runtime.addApplicationEndpoint(
+                    applicationName, serviceReference),
+                __ -> _runtime.removeApplicationEndpoint(
+                    applicationName, serviceReference)
             ));
     }
 
@@ -646,11 +638,12 @@ public class Whiteboard {
                             CachingServiceReference::getServiceReference
                         ).filter(
                             extensionFilter::match
-                        )).effects(
-                            __ -> {},
-                            __ -> 
_runtime.addDependentService(serviceReference)
-                        ).
-                        then(program);
+                        )
+                    ).effects(
+                        __ -> {},
+                        __ -> _runtime.addDependentService(serviceReference)
+                    ).
+                    then(program);
             }
             catch (InvalidSyntaxException e) {
 
@@ -790,9 +783,8 @@ public class Whiteboard {
 
     private static <T> OSGi<ResourceProvider> registerEndpoint(
         CXFJaxRsServiceRegistrator registrator,
-        ServiceObjects<T> serviceObjects) {
+        ResourceProvider resourceProvider) {
 
-        ResourceProvider resourceProvider = 
getResourceProvider(serviceObjects);
         registrator.add(resourceProvider);
 
         return just(resourceProvider);

Reply via email to