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

commit f0930e10e67408cd0c75dd20904446987048efb6
Author: Jonathan Gallimore <[email protected]>
AuthorDate: Tue Dec 1 10:05:50 2020 +0000

    Don't use Johnzon for certain types better handled by CXF built-in 
readers/writers
---
 .../server/cxf/rs/johnzon/TomEEJsonbProvider.java  | 26 ++++++++++++++++++++++
 .../server/cxf/rs/johnzon/TomEEJsonpProvider.java  |  4 +++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git 
a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
 
b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
index f7d37c9..8eebfac 100644
--- 
a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
+++ 
b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
@@ -19,10 +19,14 @@ package org.apache.openejb.server.cxf.rs.johnzon;
 import org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider;
 import org.apache.johnzon.mapper.access.AccessMode;
 
+import javax.activation.DataSource;
 import javax.json.bind.JsonbConfig;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.ext.Provider;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
 import java.util.Locale;
 
 @Provider
@@ -35,6 +39,28 @@ public class TomEEJsonbProvider<T> extends 
JsonbJaxrsProvider<T> {
         setThrowNoContentExceptionOnEmptyStreams(true); // this is to make TCK 
tests happy
     }
 
+    @Override
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] 
annotations, MediaType mediaType) {
+        // let the CXF built-in writer handle this one
+        // TODO: add a setting?
+        if (DataSource.class.isAssignableFrom(type)) {
+            return false;
+        }
+
+        return super.isWriteable(type, genericType, annotations, mediaType);
+    }
+
+    @Override
+    public boolean isReadable(Class<?> type, Type genericType, Annotation[] 
annotations, MediaType mediaType) {
+        // let the CXF built-in writer handle this one
+        // TODO: add a setting?
+        if (DataSource.class.isAssignableFrom(type)) {
+            return false;
+        }
+
+        return super.isReadable(type, genericType, annotations, mediaType);
+    }
+
     public void setDateFormat(String dateFormat) {
         config.setProperty(JsonbConfig.DATE_FORMAT, dateFormat);
     }
diff --git 
a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonpProvider.java
 
b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonpProvider.java
index 472fba8..d75b65a 100644
--- 
a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonpProvider.java
+++ 
b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonpProvider.java
@@ -18,6 +18,7 @@ package org.apache.openejb.server.cxf.rs.johnzon;
 
 import org.apache.johnzon.jaxrs.JsrProvider;
 
+import javax.activation.DataSource;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
@@ -40,6 +41,7 @@ public class TomEEJsonpProvider extends JsrProvider {
                 && !OutputStream.class.isAssignableFrom(rawType)
                 && !StreamingOutput.class.isAssignableFrom(rawType)
                 && !Writer.class.isAssignableFrom(rawType)
-                && !Response.class.isAssignableFrom(rawType);
+                && !Response.class.isAssignableFrom(rawType)
+                && !DataSource.class.isAssignableFrom(rawType);
     }
 }

Reply via email to