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());
         


Reply via email to