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