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();