Author: yonik
Date: Fri Dec  5 10:04:11 2008
New Revision: 723804

URL: http://svn.apache.org/viewvc?rev=723804&view=rev
Log:
SOLR-898: Fix null pointer exception for the JSON response writer based formats 
when nl.json=arrarr with null keys.

Modified:
    lucene/solr/trunk/CHANGES.txt
    lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java
    lucene/solr/trunk/src/test/org/apache/solr/request/JSONWriterTest.java

Modified: lucene/solr/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=723804&r1=723803&r2=723804&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Fri Dec  5 10:04:11 2008
@@ -149,6 +149,9 @@
 14. SOLR-892: Fix serialization of booleans for PHPSerializedResponseWriter
     (yonik)
 
+15. SOLR-898: Fix null pointer exception for the JSON response writer
+    based formats when nl.json=arrarr with null keys.  (yonik)
+
 
 Other Changes
 ----------------------

Modified: 
lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java?rev=723804&r1=723803&r2=723804&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java 
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/JSONResponseWriter.java 
Fri Dec  5 10:04:11 2008
@@ -245,13 +245,15 @@
 
         writeArrayOpener(1);
         incLevel();
-        writeStr(null,key,true);
+        if (key==null) {
+          writeNull(null);
+        } else {
+          writeStr(null, key, true);
+        }
         writeArraySeparator();
         writeVal(key,val.getVal(i));
         decLevel();
         writeArrayCloser();
-
-
     }
 
     decLevel();

Modified: lucene/solr/trunk/src/test/org/apache/solr/request/JSONWriterTest.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/request/JSONWriterTest.java?rev=723804&r1=723803&r2=723804&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/request/JSONWriterTest.java 
(original)
+++ lucene/solr/trunk/src/test/org/apache/solr/request/JSONWriterTest.java Fri 
Dec  5 10:04:11 2008
@@ -63,5 +63,21 @@
     w.write(buf, req, rsp);
     assertEquals(buf.toString(), 
"a:3:{s:5:\"data1\";s:5:\"hello\";s:5:\"data2\";i:42;s:5:\"data3\";b:1;}");
   }
+
+  public void testJSON() throws IOException {
+    SolrQueryRequest req = req("wt","json","json.nl","arrarr");
+    SolrQueryResponse rsp = new SolrQueryResponse();
+    JSONResponseWriter w = new JSONResponseWriter();
+
+    StringWriter buf = new StringWriter();
+    NamedList nl = new NamedList();
+    nl.add("data1", "hello");
+    nl.add(null, 42);
+    rsp.add("nl", nl);
+
+    w.write(buf, req, rsp);
+    assertEquals(buf.toString(), "{\"nl\":[[\"data1\",\"hello\"],[null,42]]}");
+
+  }
   
 }


Reply via email to