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(