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 2018/03/09 15:16:36 UTC
[1/2] aries-jax-rs-whiteboard git commit: Release application and
extension services
Repository: aries-jax-rs-whiteboard
Updated Branches:
refs/heads/master cdf196c2a -> 763207933
Release application and extension services
everytime the application is bootstrapped. Otherwise prototype scoped
Features were invoked several times without being disposed.
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/ece812f2
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/ece812f2
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/ece812f2
Branch: refs/heads/master
Commit: ece812f2135ee8180d5d82a2c0b8775006461026
Parents: cdf196c
Author: Carlos Sierra <cs...@apache.org>
Authored: Fri Mar 9 16:13:16 2018 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Fri Mar 9 16:13:16 2018 +0100
----------------------------------------------------------------------
.../jax/rs/whiteboard/internal/Whiteboard.java | 2 +-
.../cxf/CxfJaxrsServiceRegistrator.java | 24 ++++++++++++++------
.../whiteboard/internal/utils/ServiceTuple.java | 12 +++++++++-
.../jax/rs/whiteboard/internal/utils/Utils.java | 9 +++-----
4 files changed, 32 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/ece812f2/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 cf45f6a..ac25403 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
@@ -460,7 +460,7 @@ public class Whiteboard {
return
just(() ->
new CxfJaxrsServiceRegistrator(
- createBus(), tuple.getService(), props.get())).
+ createBus(), tuple, props.get())).
flatMap(registrator ->
onClose(registrator::close).then(
register(
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/ece812f2/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/CxfJaxrsServiceRegistrator.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/CxfJaxrsServiceRegistrator.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/CxfJaxrsServiceRegistrator.java
index 04c40d1..10715e8 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/CxfJaxrsServiceRegistrator.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/CxfJaxrsServiceRegistrator.java
@@ -55,14 +55,16 @@ import org.apache.cxf.jaxrs.model.ClassResourceInfo;
import org.apache.cxf.jaxrs.provider.ProviderFactory.ProviderInfoClassComparator;
import org.apache.cxf.jaxrs.provider.ServerConfigurableFactory;
import org.apache.cxf.jaxrs.utils.AnnotationUtils;
-import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceObjects;
public class CxfJaxrsServiceRegistrator {
public CxfJaxrsServiceRegistrator(
- Bus bus, Application application, Map<String, ?> properties) {
+ Bus bus, ServiceTuple<Application> applicationTuple,
+ Map<String, ?> properties) {
+
_bus = bus;
- _application = application;
+ _applicationTuple = applicationTuple;
_properties = Collections.unmodifiableMap(new HashMap<>(properties));
Comparator<ServiceTuple<?>> comparing = Comparator.comparing(
@@ -180,17 +182,25 @@ public class CxfJaxrsServiceRegistrator {
protected synchronized void rewire() {
if (_server != null) {
_server.destroy();
+
+ _applicationTuple.refresh();
+
+ for (ServiceTuple<?> provider : _providers) {
+ provider.refresh();
+ }
}
+ Application application = _applicationTuple.getService();
+
if (_services.isEmpty() &&
- _application.getSingletons().isEmpty() &&
- _application.getClasses().isEmpty()) {
+ application.getSingletons().isEmpty() &&
+ application.getClasses().isEmpty()) {
return;
}
_jaxRsServerFactoryBean = createEndpoint(
- _application, JAXRSServerFactoryBean.class);
+ application, JAXRSServerFactoryBean.class);
_jaxRsServerFactoryBean.setBus(_bus);
@@ -276,7 +286,7 @@ public class CxfJaxrsServiceRegistrator {
_server.start();
}
- private final Application _application;
+ private final ServiceTuple<Application> _applicationTuple;
private final Bus _bus;
private final Collection<ServiceTuple<?>> _providers;
private final Collection<ResourceProvider> _services = new ArrayList<>();
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/ece812f2/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceTuple.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceTuple.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceTuple.java
index 5504a86..d048618 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceTuple.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceTuple.java
@@ -24,7 +24,7 @@ public class ServiceTuple<T> implements Comparable<ServiceTuple<T>> {
private final CachingServiceReference<T> _serviceReference;
private ServiceObjects<T> _serviceObjects;
- private final T _service;
+ private volatile T _service;
ServiceTuple(
CachingServiceReference<T> cachingServiceReference,
@@ -40,6 +40,16 @@ public class ServiceTuple<T> implements Comparable<ServiceTuple<T>> {
return _serviceReference.compareTo(o._serviceReference);
}
+ public void dispose() {
+ _serviceObjects.ungetService(_service);
+ }
+
+ public void refresh() {
+ dispose();
+
+ _service = _serviceObjects.getService();
+ }
+
public T getService() {
return _service;
}
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/ece812f2/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/Utils.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/Utils.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/Utils.java
index eaf56e0..c2c998e 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/Utils.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/Utils.java
@@ -150,12 +150,9 @@ public class Utils {
}
return
- onClose(
- () -> serviceObjects.ungetService(service)
- ).then(
- just(new ServiceTuple<>(
- serviceReference, serviceObjects, service))
- );
+ just(new ServiceTuple<>(
+ serviceReference, serviceObjects, service)).
+ effects(__ -> {}, ServiceTuple::dispose);
}));
}
[2/2] aries-jax-rs-whiteboard git commit: Do not replace extension
properties.
Posted by cs...@apache.org.
Do not replace extension properties.
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/76320793
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/76320793
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/76320793
Branch: refs/heads/master
Commit: 7632079335b2f3e7ea3a2e2fc2b159e83e1ec429
Parents: ece812f
Author: Carlos Sierra <cs...@apache.org>
Authored: Fri Mar 9 16:14:58 2018 +0100
Committer: Carlos Sierra <cs...@apache.org>
Committed: Fri Mar 9 16:14:58 2018 +0100
----------------------------------------------------------------------
.../apache/aries/jax/rs/whiteboard/internal/Whiteboard.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/76320793/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 ac25403..349be5e 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
@@ -631,7 +631,8 @@ public class Whiteboard {
Map<String, Object> properties = getProperties(
serviceReference);
- properties.put(JAX_RS_NAME, applicationName);
+ properties.put(
+ "original.application.name", applicationName);
properties.put(
"original.objectClass",
serviceReference.getProperty("objectClass"));
@@ -757,8 +758,8 @@ public class Whiteboard {
program =
once(serviceReferences(ApplicationExtensionRegistration.class).
filter(
- sr -> getApplicationName(sr::getProperty).equals(
- applicationName)
+ sr -> sr.getProperty("original.application.name").
+ equals(applicationName)
).map(
CachingServiceReference::getServiceReference
).filter(