Author: sergeyb Date: Wed Jan 18 23:25:35 2012 New Revision: 1233114 URL: http://svn.apache.org/viewvc?rev=1233114&view=rev Log: 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.4.x-fixes/ (props changed) cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java Propchange: cxf/branches/2.4.x-fixes/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 18 23:25:35 2012 @@ -1,2 +1,2 @@ -/cxf/branches/2.5.x-fixes:1233076 -/cxf/trunk:1233075 +/cxf/branches/2.5.x-fixes:1233076,1233113 +/cxf/trunk:1233075,1233112 Propchange: cxf/branches/2.4.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java?rev=1233114&r1=1233113&r2=1233114&view=diff ============================================================================== --- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java (original) +++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java Wed Jan 18 23:25:35 2012 @@ -390,11 +390,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 = "["; @@ -475,7 +482,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.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java?rev=1233114&r1=1233113&r2=1233114&view=diff ============================================================================== --- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java (original) +++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java Wed Jan 18 23:25:35 2012 @@ -400,24 +400,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"); @@ -426,6 +434,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")); @@ -447,6 +457,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());
