Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 83A3D10F8F for ; Tue, 10 Sep 2013 13:52:13 +0000 (UTC) Received: (qmail 32502 invoked by uid 500); 10 Sep 2013 13:52:13 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 32448 invoked by uid 500); 10 Sep 2013 13:52:12 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 32440 invoked by uid 99); 10 Sep 2013 13:52:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Sep 2013 13:52:12 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Sep 2013 13:52:09 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id B79722388A3D; Tue, 10 Sep 2013 13:51:47 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1521486 - in /cxf/branches/2.7.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/dom4j/ rt/rs/extensions/providers/src/test/java/org/apache/cxf/ja... Date: Tue, 10 Sep 2013 13:51:47 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130910135147.B79722388A3D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Tue Sep 10 13:51:47 2013 New Revision: 1521486 URL: http://svn.apache.org/r1521486 Log: Merged revisions 1521413 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r1521413 | sergeyb | 2013-09-10 10:55:39 +0100 (Tue, 10 Sep 2013) | 1 line [CXF-4381] Updating DOM4JProvider to better support custom media types ........ Modified: cxf/branches/2.7.x-fixes/ (props changed) cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProvider.java cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java Propchange: cxf/branches/2.7.x-fixes/ ------------------------------------------------------------------------------ Merged /cxf/trunk:r1521413 Propchange: cxf/branches/2.7.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1521486&r1=1521485&r2=1521486&view=diff ============================================================================== --- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original) +++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Tue Sep 10 13:51:47 2013 @@ -205,26 +205,25 @@ public final class JAXRSUtils { return theList; } - @SuppressWarnings("unchecked") - private static String[] getUserMediaTypes(Object provider, String methodName) { + private static String[] getUserMediaTypes(Object provider, boolean consumes) { String[] values = null; if (AbstractConfigurableProvider.class.isAssignableFrom(provider.getClass())) { - try { - Method m = provider.getClass().getMethod(methodName, new Class[]{}); - List types = (List)m.invoke(provider, new Object[]{}); - if (types != null) { - values = types.size() > 0 ? types.toArray(new String[types.size()]) - : new String[]{"*/*"}; - } - } catch (Exception ex) { - // ignore + List types = null; + if (consumes) { + types = ((AbstractConfigurableProvider)provider).getConsumeMediaTypes(); + } else { + types = ((AbstractConfigurableProvider)provider).getProduceMediaTypes(); + } + if (types != null) { + values = types.size() > 0 ? types.toArray(new String[types.size()]) + : new String[]{"*/*"}; } } return values; } public static List getProviderConsumeTypes(MessageBodyReader provider) { - String[] values = getUserMediaTypes(provider, "getConsumeMediaTypes"); + String[] values = getUserMediaTypes(provider, true); if (values == null) { return getConsumeTypes(provider.getClass().getAnnotation(Consumes.class)); @@ -234,7 +233,7 @@ public final class JAXRSUtils { } public static List getProviderProduceTypes(MessageBodyWriter provider) { - String[] values = getUserMediaTypes(provider, "getProduceMediaTypes"); + String[] values = getUserMediaTypes(provider, false); if (values == null) { return getProduceTypes(provider.getClass().getAnnotation(Produces.class)); } else { Modified: cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProvider.java URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProvider.java?rev=1521486&r1=1521485&r2=1521486&view=diff ============================================================================== --- cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProvider.java (original) +++ cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProvider.java Tue Sep 10 13:51:47 2013 @@ -35,12 +35,13 @@ import javax.ws.rs.ext.MessageBodyReader import javax.ws.rs.ext.MessageBodyWriter; import javax.ws.rs.ext.Providers; +import org.apache.cxf.jaxrs.provider.AbstractConfigurableProvider; import org.apache.cxf.staxutils.StaxUtils; -@javax.ws.rs.Produces({"application/xml", "text/xml", "application/json" }) -@javax.ws.rs.Consumes({"application/xml", "text/xml", "application/json" }) -public class DOM4JProvider implements MessageBodyReader, - MessageBodyWriter { +@javax.ws.rs.Produces({"application/xml", "application/*+xml", "text/xml", "application/json" }) +@javax.ws.rs.Consumes({"application/xml", "application/*+xml", "text/xml", "application/json" }) +public class DOM4JProvider extends AbstractConfigurableProvider + implements MessageBodyReader, MessageBodyWriter { private static final Class DOM_DOC_CLS = org.w3c.dom.Document.class; Modified: cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java?rev=1521486&r1=1521485&r2=1521486&view=diff ============================================================================== --- cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java (original) +++ cxf/branches/2.7.x-fixes/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java Tue Sep 10 13:51:47 2013 @@ -49,13 +49,13 @@ public class DOM4JProviderTest extends A assertTrue(str.contains("") || str.contains("")); } private org.dom4j.Document readXML() throws Exception { - return readXML(""); + return readXML(MediaType.APPLICATION_XML_TYPE, ""); } - private org.dom4j.Document readXML(final String xml) throws Exception { + private org.dom4j.Document readXML(MediaType ct, final String xml) throws Exception { DOM4JProvider p = new DOM4JProvider(); p.setProviders(new ProvidersImpl(createMessage())); org.dom4j.Document dom = p.readFrom(org.dom4j.Document.class, org.dom4j.Document.class, - new Annotation[] {}, MediaType.APPLICATION_XML_TYPE, new MetadataMap(), + new Annotation[] {}, ct, new MetadataMap(), new ByteArrayInputStream(xml.getBytes("UTF-8"))); return dom; } @@ -75,14 +75,22 @@ public class DOM4JProviderTest extends A @Test public void testWriteXML() throws Exception { - org.dom4j.Document dom = readXML(); + doTestWriteXML(MediaType.APPLICATION_XML_TYPE); + } + + @Test + public void testWriteXMLCustomCt() throws Exception { + doTestWriteXML(MediaType.valueOf("application/custom+xml")); + } + + private void doTestWriteXML(MediaType ct) throws Exception { + org.dom4j.Document dom = readXML(ct, ""); DOM4JProvider p = new DOM4JProvider(); p.setProviders(new ProvidersImpl(createMessage())); ByteArrayOutputStream bos = new ByteArrayOutputStream(); p.writeTo(dom, org.dom4j.Document.class, org.dom4j.Document.class, - new Annotation[]{}, MediaType.APPLICATION_XML_TYPE, new MetadataMap(), - bos); + new Annotation[]{}, ct, new MetadataMap(), bos); String str = bos.toString(); // starts with the xml PI assertTrue(str.contains("") || str.contains("")); @@ -105,7 +113,7 @@ public class DOM4JProviderTest extends A @Test public void testWriteJSONDropRoot() throws Exception { - org.dom4j.Document dom = readXML(""); + org.dom4j.Document dom = readXML(MediaType.APPLICATION_XML_TYPE, ""); DOM4JProvider p = new DOM4JProvider(); p.setProviders(new ProvidersImpl(createMessageWithJSONProvider()));