You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2020/11/19 14:15:38 UTC

[tomee] branch master updated: Don't stop adding Johnzon providers when SSE providers are added by the SSE extension

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

jgallimore pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git


The following commit(s) were added to refs/heads/master by this push:
     new 3beb8f3  Don't stop adding Johnzon providers when SSE providers are added by the SSE extension
3beb8f3 is described below

commit 3beb8f38dc7bb85c4c443fe2c2c722f874dfff81
Author: Jonathan Gallimore <jo...@jrg.me.uk>
AuthorDate: Thu Nov 19 14:14:48 2020 +0000

    Don't stop adding Johnzon providers when SSE providers are added by the SSE extension
---
 server/openejb-cxf-rs/pom.xml                      |  5 +++++
 .../apache/openejb/server/cxf/rs/CxfRSService.java | 23 +++++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/server/openejb-cxf-rs/pom.xml b/server/openejb-cxf-rs/pom.xml
index 47d1d0b..c61fe91 100644
--- a/server/openejb-cxf-rs/pom.xml
+++ b/server/openejb-cxf-rs/pom.xml
@@ -171,6 +171,11 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-sse</artifactId>
+      <version>${cxf.version}</version>
+    </dependency>
     <dependency> <!-- JohnzonProvider, WadlDocumentMessageBodyWriter and JsrProvider -->
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jaxrs</artifactId>
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
index 702cba1..c27fd8b 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
@@ -19,6 +19,8 @@ package org.apache.openejb.server.cxf.rs;
 import org.apache.cxf.Bus;
 import org.apache.cxf.binding.BindingFactoryManager;
 import org.apache.cxf.jaxrs.JAXRSBindingFactory;
+import org.apache.cxf.jaxrs.sse.SseContextProvider;
+import org.apache.cxf.jaxrs.sse.SseEventSinkContextProvider;
 import org.apache.cxf.transport.DestinationFactory;
 import org.apache.cxf.transport.http.HTTPTransportFactory;
 import org.apache.openejb.cdi.WebBeansContextBeforeDeploy;
@@ -218,7 +220,7 @@ public class CxfRSService extends RESTService {
     }
 
     private void initCxfProviders(final Bus bus) {
-        if (bus.getProperty("org.apache.cxf.jaxrs.bus.providers") == null) {
+        if (noProvidersExplicitlyAdded(bus)) {
             bus.setProperty("skip.default.json.provider.registration", "true"); // client jaxrs, we want johnzon not jettison
 
             final Collection<Object> defaults = new ArrayList<>();
@@ -268,6 +270,25 @@ public class CxfRSService extends RESTService {
         }
     }
 
+    private boolean noProvidersExplicitlyAdded(final Bus bus) {
+        final Object property = bus.getProperty("org.apache.cxf.jaxrs.bus.providers");
+
+        final Set<Class> currentProviders = new HashSet<>();
+
+        if (property instanceof List) {
+            for (final Object item : List.class.cast(property)) {
+                if (item != null) {
+                    currentProviders.add(item.getClass());
+                }
+            }
+        }
+
+        currentProviders.remove(SseContextProvider.class);
+        currentProviders.remove(SseEventSinkContextProvider.class);
+
+        return currentProviders.isEmpty();
+    }
+
     @Override
     public void stop() throws ServiceException {
         super.stop();