Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 558 invoked from network); 24 Jul 2009 15:42:19 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 24 Jul 2009 15:42:19 -0000 Received: (qmail 31950 invoked by uid 500); 24 Jul 2009 15:43:22 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 31884 invoked by uid 500); 24 Jul 2009 15:43:22 -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 31843 invoked by uid 99); 24 Jul 2009 15:43:22 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Jul 2009 15:43:22 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.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; Fri, 24 Jul 2009 15:43:18 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5A4382388877; Fri, 24 Jul 2009 15:42:57 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r797541 - in /cxf/branches/2.2.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ Date: Fri, 24 Jul 2009 15:42:57 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090724154257.5A4382388877@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Fri Jul 24 15:42:56 2009 New Revision: 797541 URL: http://svn.apache.org/viewvc?rev=797541&view=rev Log: Merged revisions 797534 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r797534 | sergeyb | 2009-07-24 16:33:57 +0100 (Fri, 24 Jul 2009) | 1 line JAXRS : fixing Aegis JSON reads ........ Modified: cxf/branches/2.2.x-fixes/ (props changed) cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AegisJSONProvider.java cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java Propchange: cxf/branches/2.2.x-fixes/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Fri Jul 24 15:42:56 2009 @@ -1 +1 @@ -/cxf/trunk:782728-782730,783097,783294,783396,784059,784181-784184,784893,784895,785279-785282,785468,785621,785624,785651,785734,785866,786142,786271-786272,786395,786512,786514,786582-786583,786638,786647,786850,787200,787269,787277-787279,787290-787291,787305,787323,787366,787849,788030,788060,788187,788444,788451,788703,788752,788774,788819-788820,789013,789371,789387,789420,789527-789530,789704-789705,789788,789811,789896-789901,790074,790094,790134,790188,790294,790553,790637-790644,790868,791301,791354,791538,791753,791947,792007,792096,792183,792261-792265,792271,792604,792683-792685,792975,792985,793059,793570,794297,794396,794680,794728,794771,794778-794780,794892,795044,795104,795160,795583,795907,796022-796023,796352,796593,796741,796780,796994-796997,797117,797159,797192,797194,797231-797233,797442,797505,797517 +/cxf/trunk:782728-782730,783097,783294,783396,784059,784181-784184,784893,784895,785279-785282,785468,785621,785624,785651,785734,785866,786142,786271-786272,786395,786512,786514,786582-786583,786638,786647,786850,787200,787269,787277-787279,787290-787291,787305,787323,787366,787849,788030,788060,788187,788444,788451,788703,788752,788774,788819-788820,789013,789371,789387,789420,789527-789530,789704-789705,789788,789811,789896-789901,790074,790094,790134,790188,790294,790553,790637-790644,790868,791301,791354,791538,791753,791947,792007,792096,792183,792261-792265,792271,792604,792683-792685,792975,792985,793059,793570,794297,794396,794680,794728,794771,794778-794780,794892,795044,795104,795160,795583,795907,796022-796023,796352,796593,796741,796780,796994-796997,797117,797159,797192,797194,797231-797233,797442,797505,797517,797534 Propchange: cxf/branches/2.2.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AegisJSONProvider.java URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AegisJSONProvider.java?rev=797541&r1=797540&r2=797541&view=diff ============================================================================== --- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AegisJSONProvider.java (original) +++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AegisJSONProvider.java Fri Jul 24 15:42:56 2009 @@ -25,6 +25,8 @@ import java.io.OutputStreamWriter; import java.lang.annotation.Annotation; import java.lang.reflect.Type; +import java.util.Collections; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -33,11 +35,13 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.ext.Provider; +import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; -import org.apache.cxf.common.util.PackageUtils; +import org.apache.cxf.jaxrs.utils.JAXRSUtils; +import org.apache.cxf.staxutils.DepthXMLStreamReader; import org.codehaus.jettison.AbstractXMLStreamWriter; import org.codehaus.jettison.mapped.Configuration; import org.codehaus.jettison.mapped.MappedNamespaceConvention; @@ -99,17 +103,17 @@ @Override protected XMLStreamReader createStreamReader(Class type, InputStream is) throws Exception { + if (readXsiType) { + namespaceMap.putIfAbsent("http://www.w3.org/2001/XMLSchema-instance", "xsins"); + } + getQName(type); MappedXMLInputFactory factory = new MappedXMLInputFactory(namespaceMap); - return factory.createXMLStreamReader(is); + return new NamespaceContextReader(factory.createXMLStreamReader(is)); } private QName getQName(Class type) { - String nsURI = PackageUtils.getNamespace(PackageUtils.getPackageName(type)); - if (nsURI.endsWith("/")) { - nsURI = nsURI.substring(0, nsURI.length() - 1); - } - QName qname = new QName(nsURI, type.getSimpleName(), "ns1"); - namespaceMap.putIfAbsent(nsURI, "ns1"); + QName qname = JAXRSUtils.getClassQName(type); + namespaceMap.putIfAbsent(qname.getNamespaceURI(), "ns1"); return qname; } @@ -118,4 +122,36 @@ qname.getNamespaceURI(), qname.getLocalPart()); } + + private class NamespaceContextReader extends DepthXMLStreamReader { + public NamespaceContextReader(XMLStreamReader reader) { + super(reader); + } + + @Override + public NamespaceContext getNamespaceContext() { + return new NamespaceContext() { + + public String getNamespaceURI(String prefix) { + for (Map.Entry entry : namespaceMap.entrySet()) { + if (entry.getValue().equals(prefix)) { + return entry.getKey(); + } + } + return null; + } + + public String getPrefix(String ns) { + return namespaceMap.get(ns); + } + + public Iterator getPrefixes(String ns) { + String prefix = getPrefix(ns); + return prefix == null ? null : Collections.singletonList(prefix).iterator(); + } + + }; + } + } + } Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=797541&r1=797540&r2=797541&view=diff ============================================================================== --- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original) +++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Fri Jul 24 15:42:56 2009 @@ -63,9 +63,11 @@ import javax.ws.rs.ext.MessageBodyReader; import javax.ws.rs.ext.MessageBodyWriter; import javax.ws.rs.ext.Providers; +import javax.xml.namespace.QName; import org.apache.cxf.common.i18n.BundleUtils; import org.apache.cxf.common.logging.LogUtils; +import org.apache.cxf.common.util.PackageUtils; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.jaxrs.ext.MessageContext; import org.apache.cxf.jaxrs.ext.MessageContextImpl; @@ -1041,4 +1043,12 @@ return false; } + public static QName getClassQName(Class type) { + String nsURI = PackageUtils.getNamespace(PackageUtils.getPackageName(type)); + if (nsURI.endsWith("/")) { + nsURI = nsURI.substring(0, nsURI.length() - 1); + } + return new QName(nsURI, type.getSimpleName(), "ns1"); + } + } Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java?rev=797541&r1=797540&r2=797541&view=diff ============================================================================== --- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java (original) +++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/AegisJSONProviderTest.java Fri Jul 24 15:42:56 2009 @@ -35,7 +35,6 @@ import org.apache.cxf.jaxrs.resources.Tags; import org.junit.Assert; -import org.junit.Ignore; import org.junit.Test; public class AegisJSONProviderTest extends Assert { @@ -52,14 +51,27 @@ assertFalse(p.isReadable(AegisTestBean.class, null, null, null)); } - @SuppressWarnings("unchecked") + @Test - @Ignore public void testReadFrom() throws Exception { + doTestRead(true); + } + + @Test + public void testReadFromNoMap() throws Exception { + doTestRead(false); + } + + @SuppressWarnings("unchecked") + private void doTestRead(boolean setNsMap) throws Exception { AegisJSONProvider p = new AegisJSONProvider(); - Map namespaceMap = new HashMap(); - namespaceMap.put("http://fortest.jaxrs.cxf.apache.org", "ns1"); - namespaceMap.put("http://www.w3.org/2001/XMLSchema-instance", "ns2"); + p.clearContexts(); + if (setNsMap) { + Map namespaceMap = new HashMap(); + namespaceMap.put("http://fortest.jaxrs.cxf.apache.org", "ns1"); + namespaceMap.put("http://www.w3.org/2001/XMLSchema-instance", "xsins"); + p.setNamespaceMap(namespaceMap); + } String data = "{\"ns1.AegisTestBean\":{\"@xsins.type\":\"ns1:AegisTestBean\"," + "\"ns1.boolValue\":true,\"ns1.strValue\":\"hovercraft\"}}";