Author: sergeyb Date: Wed Jan 18 23:28:32 2012 New Revision: 1233118 URL: http://svn.apache.org/viewvc?rev=1233118&view=rev Log: Merged revisions 1233114 via svnmerge from https://svn.apache.org/repos/asf/cxf/branches/2.4.x-fixes
................ r1233114 | sergeyb | 2012-01-18 23:25:35 +0000 (Wed, 18 Jan 2012) | 16 lines Merged revisions 1233113 via svnmerge from https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes ................ r1233113 | sergeyb | 2012-01-18 23:23:35 +0000 (Wed, 18 Jan 2012) | 9 lines Merged revisions 1233112 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r1233112 | sergeyb | 2012-01-18 23:21:25 +0000 (Wed, 18 Jan 2012) | 1 line [CXF-4043] Minor update to JSONProvider to properly deal with a custom prefix ........ ................ ................ Modified: cxf/branches/2.3.x-fixes/ (props changed) cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java Propchange: cxf/branches/2.3.x-fixes/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 18 23:28:32 2012 @@ -1,3 +1,3 @@ -/cxf/branches/2.4.x-fixes:1232881 -/cxf/branches/2.5.x-fixes:1232880 -/cxf/trunk:1232877 +/cxf/branches/2.4.x-fixes:1232881,1233114 +/cxf/branches/2.5.x-fixes:1232880,1233113 +/cxf/trunk:1232877,1233112 Propchange: cxf/branches/2.3.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java?rev=1233118&r1=1233117&r2=1233118&view=diff ============================================================================== --- cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java (original) +++ cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java Wed Jan 18 23:28:32 2012 @@ -345,11 +345,18 @@ public class JSONProvider extends Abstra } else { qname = getCollectionWrapperQName(actualClass, genericType, firstObj, false); } - if (qname.getNamespaceURI().length() > 0) { - startTag = "{\"ns1." + qname.getLocalPart() + "\":["; - } else { - startTag = "{\"" + qname.getLocalPart() + "\":["; + String prefix = ""; + if (!ignoreNamespaces) { + if (namespaceMap.containsKey(qname.getNamespaceURI())) { + prefix = namespaceMap.get(qname.getNamespaceURI()); + if (!prefix.isEmpty()) { + prefix += "."; + } + } else if (qname.getNamespaceURI().length() > 0) { + prefix = "ns1."; + } } + startTag = "{\"" + prefix + qname.getLocalPart() + "\":["; endTag = "]}"; } else if (serializeAsArray) { startTag = "["; @@ -418,7 +425,7 @@ public class JSONProvider extends Abstra writeXsiType && !ignoreNamespaces, config, serializeAsArray, arrayKeys, isCollection || dropRootElement); writer = JSONUtils.createIgnoreMixedContentWriterIfNeeded(writer, ignoreMixedContent); - writer = JSONUtils.createIgnoreNsWriterIfNeeded(writer, ignoreNamespaces); + writer = JSONUtils.createIgnoreNsWriterIfNeeded(writer, ignoreNamespaces && !isCollection); return createTransformWriterIfNeeded(writer, os); } Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java?rev=1233118&r1=1233117&r2=1233118&view=diff ============================================================================== --- cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java (original) +++ cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java Wed Jan 18 23:28:32 2012 @@ -354,24 +354,32 @@ public class JSONProviderTest extends As public void testWriteQualifiedCollection() throws Exception { String data = "{\"ns1.tag\":[{\"group\":\"b\",\"name\":\"a\"}" + ",{\"group\":\"d\",\"name\":\"c\"}]}"; - doWriteQualifiedCollection(false, false, data); + doWriteQualifiedCollection(false, false, false, data); + } + + @Test + public void testWriteQualifiedCollectionDropNs() throws Exception { + String data = "{\"tag\":[{\"group\":\"b\",\"name\":\"a\"}" + + ",{\"group\":\"d\",\"name\":\"c\"}]}"; + doWriteQualifiedCollection(false, false, true, data); } @Test public void testWriteQualifiedCollection2() throws Exception { String data = "{{\"group\":\"b\",\"name\":\"a\"}" + ",{\"group\":\"d\",\"name\":\"c\"}}"; - doWriteQualifiedCollection(true, false, data); + doWriteQualifiedCollection(true, false, false, data); } @Test public void testWriteQualifiedCollection3() throws Exception { String data = "[{\"group\":\"b\",\"name\":\"a\"}" + ",{\"group\":\"d\",\"name\":\"c\"}]"; - doWriteQualifiedCollection(true, true, data); + doWriteQualifiedCollection(true, true, false, data); } - public void doWriteQualifiedCollection(boolean drop, boolean serializeAsArray, String data) + public void doWriteQualifiedCollection(boolean drop, boolean serializeAsArray, + boolean ignoreNamespaces, String data) throws Exception { JSONProvider p = new JSONProvider(); p.setCollectionWrapperName("{http://tags}tag"); @@ -380,6 +388,8 @@ public class JSONProviderTest extends As Map<String, String> namespaceMap = new HashMap<String, String>(); namespaceMap.put("http://tags", "ns1"); p.setNamespaceMap(namespaceMap); + p.setIgnoreNamespaces(ignoreNamespaces); + List<TagVO2> tags = new ArrayList<TagVO2>(); tags.add(createTag2("a", "b")); tags.add(createTag2("c", "d")); @@ -401,6 +411,7 @@ public class JSONProviderTest extends As Method m = CollectionsResource.class.getMethod("getBooks", new Class[0]); p.writeTo(books, m.getReturnType(), m.getGenericReturnType(), new Annotation[0], MediaType.APPLICATION_JSON_TYPE, new MetadataMap<String, Object>(), os); + System.out.println(os.toString()); assertEquals("{\"Book\":[{\"id\":123,\"name\":\"CXF\",\"state\":\"\"}]}", os.toString());
