This is an automated email from the ASF dual-hosted git repository.

timothyjward pushed a commit to branch fix/lifecycle
in repository https://gitbox.apache.org/repos/asf/aries-jax-rs-whiteboard.git

commit 23d40666d15fdc7c47a41d039677dc434a8c2cb6
Author: Tim Ward <[email protected]>
AuthorDate: Wed Oct 13 11:27:54 2021 +0100

    Further CXF lifecycle workarounds
---
 .../main/java/test/WhiteboardLifecycleTest.java    | 37 +++++++++++++++++++---
 .../activator/CxfJaxrsBundleActivator.java         | 12 ++++---
 2 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/jax-rs.itests/src/main/java/test/WhiteboardLifecycleTest.java 
b/jax-rs.itests/src/main/java/test/WhiteboardLifecycleTest.java
index cd0aa09..2fd09b6 100644
--- a/jax-rs.itests/src/main/java/test/WhiteboardLifecycleTest.java
+++ b/jax-rs.itests/src/main/java/test/WhiteboardLifecycleTest.java
@@ -20,27 +20,56 @@ package test;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
+import javax.ws.rs.client.ClientBuilder;
+
 import org.apache.cxf.bus.osgi.CXFActivator;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
 import org.osgi.framework.FrameworkUtil;
+import org.osgi.service.jaxrs.client.SseEventSourceFactory;
+import org.osgi.util.tracker.ServiceTracker;
 
 import test.types.TestHelper;
 
 public class WhiteboardLifecycleTest extends TestHelper {
 
     @Test
-    public void testCXFLifecycle() throws Exception {
-       assertNotNull(_runtimeTracker.getService());
+    public void testCXFLifecycleWhiteboard() throws Exception {
+       testTracking(_runtimeTracker);
+    }
+
+       private void testTracking(ServiceTracker<?,?> tracker) throws 
BundleException, InterruptedException {
+               assertNotNull(tracker.waitForService(5000));
        
        Bundle cxfBundle = FrameworkUtil.getBundle(CXFActivator.class);
                cxfBundle.stop();
                
-               assertNull(_runtimeTracker.getService());
+               assertNull(tracker.getService());
                
                cxfBundle.start();
                
-               assertNotNull(_runtimeTracker.waitForService(5000));
+               assertNotNull(tracker.waitForService(5000));
+       }
+    
+    @Test
+    public void testCXFLifecycleClientBuilder() throws Exception {
+       ServiceTracker<ClientBuilder, ClientBuilder> tracker = new 
ServiceTracker<>(bundleContext, ClientBuilder.class, null);
+       tracker.open();
+       
+       testTracking(tracker);
+       
+       tracker.close();
+    }
+
+    @Test
+    public void testCXFLifecycleSseBuilderFactory() throws Exception {
+       ServiceTracker<SseEventSourceFactory, SseEventSourceFactory> tracker = 
new ServiceTracker<>(bundleContext, SseEventSourceFactory.class, null);
+       tracker.open();
+       
+       testTracking(tracker);
+       
+       tracker.close();
     }
 
 }
\ No newline at end of file
diff --git 
a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/activator/CxfJaxrsBundleActivator.java
 
b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/activator/CxfJaxrsBundleActivator.java
index 375ba79..ab85480 100644
--- 
a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/activator/CxfJaxrsBundleActivator.java
+++ 
b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/activator/CxfJaxrsBundleActivator.java
@@ -100,9 +100,11 @@ public class CxfJaxrsBundleActivator implements 
BundleActivator {
             _log.debug("Starting the whiteboard factory");
         }
 
-        OSGi<?> runWhiteboards =
-               bundles(ACTIVE)
-               .filter(b -> 
b.equals(FrameworkUtil.getBundle(CXFActivator.class)))
+        OSGi<?> waitForCXF =
+                       bundles(ACTIVE)
+                       .filter(b -> 
b.equals(FrameworkUtil.getBundle(CXFActivator.class)));
+        
+        OSGi<?> runWhiteboards = waitForCXF
                .then(
                    all(
                        configurations("org.apache.aries.jax.rs.whiteboard"),
@@ -130,8 +132,8 @@ public class CxfJaxrsBundleActivator implements 
BundleActivator {
 
         _defaultOSGiResult =
             all(
-                ignore(registerClient()),
-                ignore(registerSseEventSourceFactory()),
+                ignore(waitForCXF.then(registerClient())),
+                ignore(waitForCXF.then(registerSseEventSourceFactory())),
                 ignore(runWhiteboards)
             )
         .run(bundleContext);

Reply via email to