Repository: tomee Updated Branches: refs/heads/master 87120faad -> df2aedadb
TOMEE-1719 support application/*+json by default Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/df2aedad Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/df2aedad Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/df2aedad Branch: refs/heads/master Commit: df2aedadb8beaa518c0157ddb0948cc853b6dd58 Parents: 87120fa Author: Romain manni-Bucau <[email protected]> Authored: Thu Feb 25 19:01:12 2016 +0100 Committer: Romain manni-Bucau <[email protected]> Committed: Thu Feb 25 19:01:12 2016 +0100 ---------------------------------------------------------------------- .../openejb/server/cxf/rs/CxfRSService.java | 53 ++++++++++++-------- .../server/cxf/rs/CxfRsHttpListener.java | 6 ++- 2 files changed, 35 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/df2aedad/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java ---------------------------------------------------------------------- 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 61f016c..e4bdf6b 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 @@ -38,23 +38,6 @@ import org.apache.webbeans.annotation.EmptyAnnotationLiteral; import org.apache.webbeans.config.WebBeansContext; import org.apache.webbeans.container.BeanManagerImpl; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Serializable; -import java.lang.annotation.Annotation; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.lang.reflect.Type; -import java.net.Socket; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Properties; -import java.util.Set; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.spi.Bean; @@ -66,6 +49,8 @@ import javax.servlet.ServletContext; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.Consumes; +import javax.ws.rs.Produces; import javax.ws.rs.container.ResourceContext; import javax.ws.rs.container.ResourceInfo; import javax.ws.rs.core.Context; @@ -74,7 +59,25 @@ import javax.ws.rs.core.Request; import javax.ws.rs.core.SecurityContext; import javax.ws.rs.core.UriInfo; import javax.ws.rs.ext.ContextResolver; +import javax.ws.rs.ext.Provider; import javax.ws.rs.ext.Providers; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Serializable; +import java.lang.annotation.Annotation; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.lang.reflect.Type; +import java.net.Socket; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; +import java.util.Set; import static java.util.Arrays.asList; @@ -197,13 +200,13 @@ public class CxfRSService extends RESTService { final String userProviders = SystemInstance.get().getProperty("openejb.jaxrs.client.providers"); if (userProviders == null) { (all = new ArrayList<>(2)).addAll(asList( - new JohnzonProvider<>(), - new JsrProvider() + new TomEEJohnzonProvider<>(), + new JsrProvider() )); } else { all = new ArrayList<>(4 /* blind guess */); for (String p : userProviders.split(" *, *")) { - p= p.trim(); + p = p.trim(); if (p.isEmpty()) { continue; } @@ -212,8 +215,8 @@ public class CxfRSService extends RESTService { } all.addAll(asList( // added after to be after in the list once sorted - new JohnzonProvider<>(), - new JsrProvider())); + new TomEEJohnzonProvider<>(), + new JsrProvider())); } bus.setProperty("org.apache.cxf.jaxrs.bus.providers", all); } catch (final Exception e) { @@ -355,4 +358,10 @@ public class CxfRSService extends RESTService { } } } + + @Provider + @Produces({"application/json", "application/*+json"}) + @Consumes({"application/json", "application/*+json"}) + public class TomEEJohnzonProvider<T> extends JohnzonProvider<T> { + } } http://git-wip-us.apache.org/repos/asf/tomee/blob/df2aedad/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java ---------------------------------------------------------------------- diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java index fec5f10..77a6dd2 100644 --- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java +++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java @@ -666,10 +666,12 @@ public class CxfRsHttpListener implements RsHttpListener { } } - if (customJsonProvider) { + if (customJsonProvider) { // remove JohnzonProvider default versions final Iterator<ProviderInfo<?>> it = values.iterator(); while (it.hasNext()) { - if ("org.apache.johnzon.jaxrs.JohnzonProvider".equals(it.next().getResourceClass().getName())) { + final String name = it.next().getResourceClass().getName(); + if ("org.apache.johnzon.jaxrs.JohnzonProvider".equals(name) || + "org.apache.openejb.server.cxf.rs.CxfRSService$TomEEJohnzonProvider".equals(name)) { it.remove(); break; }
