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/11/26 15:56:58 UTC

[aries-jax-rs-whiteboard] 03/05: [ARIES-1868] Properly report if the service is singleton

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

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

commit 6a553b4c96e26e007a2d4b77572f7617ac2146d6
Author: Carlos Sierra <cs...@apache.org>
AuthorDate: Mon Nov 26 15:38:53 2018 +0100

    [ARIES-1868] Properly report if the service is singleton
---
 jax-rs.itests/src/main/java/test/JaxrsTest.java    |  4 ++
 .../{TestSSEApplication.java => SSEResource.java}  | 57 +++++++++-------------
 .../main/java/test/types/TestSSEApplication.java   | 48 ------------------
 .../utils/ServiceReferenceResourceProvider.java    |  5 +-
 4 files changed, 31 insertions(+), 83 deletions(-)

diff --git a/jax-rs.itests/src/main/java/test/JaxrsTest.java b/jax-rs.itests/src/main/java/test/JaxrsTest.java
index 7375cac..7dd0cf7 100644
--- a/jax-rs.itests/src/main/java/test/JaxrsTest.java
+++ b/jax-rs.itests/src/main/java/test/JaxrsTest.java
@@ -73,6 +73,7 @@ import test.types.ConfigurationAwareResource;
 import test.types.CxfExtensionTestAddon;
 import test.types.ExtensionA;
 import test.types.ExtensionB;
+import test.types.SSEResource;
 import test.types.TestAddon;
 import test.types.TestAddonConflict;
 import test.types.TestAddonConflict2;
@@ -2281,6 +2282,9 @@ public class JaxrsTest extends TestHelper {
         
         registerApplication(
             new TestSSEApplication(), JAX_RS_APPLICATION_BASE, "/sse");
+        registerAddon(
+            new SSEResource(), JAX_RS_APPLICATION_SELECT,
+            "(" + JAX_RS_APPLICATION_BASE + "=/sse)");
 
         SseEventSourceFactory sseFactory = createSseFactory();
 
diff --git a/jax-rs.itests/src/main/java/test/types/TestSSEApplication.java b/jax-rs.itests/src/main/java/test/types/SSEResource.java
similarity index 52%
copy from jax-rs.itests/src/main/java/test/types/TestSSEApplication.java
copy to jax-rs.itests/src/main/java/test/types/SSEResource.java
index 56160ae..6f39827 100644
--- a/jax-rs.itests/src/main/java/test/types/TestSSEApplication.java
+++ b/jax-rs.itests/src/main/java/test/types/SSEResource.java
@@ -21,54 +21,43 @@ import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
-import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.sse.Sse;
 import javax.ws.rs.sse.SseBroadcaster;
 import javax.ws.rs.sse.SseEventSink;
-import java.util.Collections;
-import java.util.Set;
 import java.util.concurrent.CompletionStage;
 import java.util.concurrent.ExecutionException;
 
-public class TestSSEApplication extends Application {
+public class SSEResource {
 
-    @Override
-    public Set<Object> getSingletons() {
-        return Collections.singleton(new SSEResource());
-    }
-
-    public static class SSEResource {
-
-        @Produces(MediaType.SERVER_SENT_EVENTS)
-        @GET
-        @Path("/subscribe")
-        public void subscribe(@Context SseEventSink sink) {
-            sink.send(_sse.newEvent("welcome"));
+    @Produces(MediaType.SERVER_SENT_EVENTS)
+    @GET
+    @Path("/subscribe")
+    public void subscribe(@Context SseEventSink sink) {
+        sink.send(_sse.newEvent("welcome"));
 
-            _sseBroadcaster.register(sink);
-        }
-
-        @POST
-        @Path("/broadcast")
-        public void broadcast(String body)
-            throws ExecutionException, InterruptedException {
+        _sseBroadcaster.register(sink);
+    }
 
-            CompletionStage<?> broadcast = _sseBroadcaster.broadcast(
-                _sse.newEvent(body));
+    @POST
+    @Path("/broadcast")
+    public void broadcast(String body)
+        throws ExecutionException, InterruptedException {
 
-            broadcast.toCompletableFuture().get();
-        }
+        CompletionStage<?> broadcast = _sseBroadcaster.broadcast(
+            _sse.newEvent(body));
 
-        @Context
-        public void setSse(Sse sse) {
-            _sse = sse;
-            _sseBroadcaster = _sse.newBroadcaster();
-        }
+        broadcast.toCompletableFuture().get();
+    }
 
-        private Sse _sse;
-        private SseBroadcaster _sseBroadcaster;
+    @Context
+    public void setSse(Sse sse) {
+        _sse = sse;
+        _sseBroadcaster = _sse.newBroadcaster();
     }
 
+    private Sse _sse;
+    private SseBroadcaster _sseBroadcaster;
+    
 }
diff --git a/jax-rs.itests/src/main/java/test/types/TestSSEApplication.java b/jax-rs.itests/src/main/java/test/types/TestSSEApplication.java
index 56160ae..77d2150 100644
--- a/jax-rs.itests/src/main/java/test/types/TestSSEApplication.java
+++ b/jax-rs.itests/src/main/java/test/types/TestSSEApplication.java
@@ -17,58 +17,10 @@
 
 package test.types;
 
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
 import javax.ws.rs.core.Application;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.sse.Sse;
-import javax.ws.rs.sse.SseBroadcaster;
-import javax.ws.rs.sse.SseEventSink;
 import java.util.Collections;
 import java.util.Set;
-import java.util.concurrent.CompletionStage;
-import java.util.concurrent.ExecutionException;
 
 public class TestSSEApplication extends Application {
 
-    @Override
-    public Set<Object> getSingletons() {
-        return Collections.singleton(new SSEResource());
-    }
-
-    public static class SSEResource {
-
-        @Produces(MediaType.SERVER_SENT_EVENTS)
-        @GET
-        @Path("/subscribe")
-        public void subscribe(@Context SseEventSink sink) {
-            sink.send(_sse.newEvent("welcome"));
-
-            _sseBroadcaster.register(sink);
-        }
-
-        @POST
-        @Path("/broadcast")
-        public void broadcast(String body)
-            throws ExecutionException, InterruptedException {
-
-            CompletionStage<?> broadcast = _sseBroadcaster.broadcast(
-                _sse.newEvent(body));
-
-            broadcast.toCompletableFuture().get();
-        }
-
-        @Context
-        public void setSse(Sse sse) {
-            _sse = sse;
-            _sseBroadcaster = _sse.newBroadcaster();
-        }
-
-        private Sse _sse;
-        private SseBroadcaster _sseBroadcaster;
-    }
-
 }
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceReferenceResourceProvider.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceReferenceResourceProvider.java
index cbaf5ad..5d4e6a1 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceReferenceResourceProvider.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/utils/ServiceReferenceResourceProvider.java
@@ -70,7 +70,10 @@ public class ServiceReferenceResourceProvider
 
     @Override
     public boolean isSingleton() {
-        return false;
+        String scope =
+            _serviceReference.getProperty("service.scope").toString();
+
+        return !scope.equals("prototype");
     }
 
     public CachingServiceReference<?> getImmutableServiceReference() {