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);
