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:05 UTC
[06/11] aries-jax-rs-whiteboard git commit: Handle error endpoint
registration
Handle error endpoint registration
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/388fbfdb
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/388fbfdb
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/388fbfdb
Branch: refs/heads/master
Commit: 388fbfdb466d6cb28d97ef5a914cd618019f4f8c
Parents: 7126342
Author: Carlos Sierra <cs...@apache.org>
Authored: Mon Oct 30 08:32:01 2017 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Fri Nov 3 16:18:24 2017 +0100
----------------------------------------------------------------------
.../internal/AriesJaxRSServiceRuntime.java | 22 +++++++++++-
.../jax/rs/whiteboard/internal/Whiteboard.java | 38 +++++++++++++-------
2 files changed, 46 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/388fbfdb/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxRSServiceRuntime.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxRSServiceRuntime.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxRSServiceRuntime.java
index 1e72f6b..12d8fb2 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxRSServiceRuntime.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/AriesJaxRSServiceRuntime.java
@@ -71,6 +71,8 @@ public class AriesJaxRSServiceRuntime implements JaxRSServiceRuntime {
new CopyOnWriteArrayList<>();
private Collection<ServiceReference<Application>> _erroredApplications =
new CopyOnWriteArrayList<>();
+ private Collection<ServiceReference<?>> _erroredEndpoints =
+ new CopyOnWriteArrayList<>();
private Collection<ServiceReference<?>> _ungettableEndpoints =
new CopyOnWriteArrayList<>();
private Collection<ServiceReference<?>> _ungettableExtensions =
@@ -118,6 +120,10 @@ public class AriesJaxRSServiceRuntime implements JaxRSServiceRuntime {
_erroredApplications.add(serviceReference);
}
+ public <T> void addErroredEndpoint(ServiceReference<T> serviceReference) {
+ _erroredEndpoints.add(serviceReference);
+ }
+
public void addInvalidExtension(ServiceReference<?> serviceReference) {
_invalidExtensions.add(serviceReference);
}
@@ -203,7 +209,10 @@ public class AriesJaxRSServiceRuntime implements JaxRSServiceRuntime {
runtimeDTO.failedResourceDTOs =
Stream.concat(
- unreferenciableEndpointsDTOStream(), dependentServiceStreamDTO()
+ unreferenciableEndpointsDTOStream(),
+ Stream.concat(
+ dependentServiceStreamDTO(),
+ erroredEndpointsStreamDTO())
).toArray(
FailedResourceDTO[]::new
);
@@ -218,6 +227,13 @@ public class AriesJaxRSServiceRuntime implements JaxRSServiceRuntime {
return runtimeDTO;
}
+ private Stream<FailedResourceDTO> erroredEndpointsStreamDTO() {
+ return _erroredEndpoints.stream().map(
+ sr -> buildFailedResourceDTO(
+ DTOConstants.FAILURE_REASON_UNKNOWN, sr)
+ );
+ }
+
public void removeApplicationEndpoint(
String applicationName, ServiceReference<?> endpointServiceReference) {
@@ -254,6 +270,10 @@ public class AriesJaxRSServiceRuntime implements JaxRSServiceRuntime {
_erroredApplications.remove(serviceReference);
}
+ public <T> void removeErroredEndpoint(ServiceReference<T> serviceReference) {
+ _erroredEndpoints.remove(serviceReference);
+ }
+
public void removeInvalidExtension(ServiceReference<?> serviceReference) {
_invalidExtensions.remove(serviceReference);
}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/388fbfdb/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 4324ada..0277965 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
@@ -476,20 +476,32 @@ public class Whiteboard {
_runtime::removeNotGettableEndpoint
).flatMap(
tuple -> serviceObjects(serviceReference).flatMap(
- serviceObjects -> registerEndpoint(
- registrator, serviceObjects).flatMap(
- resourceProvider ->
- onClose(
- () -> Utils.unregisterEndpoint(
- registrator, resourceProvider)
- )
- )
+ 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());
+ }
+ }
+
)
- ).effects(
- __ -> _runtime.addApplicationEndpoint(
- applicationName, serviceReference),
- __ -> _runtime.removeApplicationEndpoint(
- applicationName, serviceReference)
));
}