[ 
https://issues.apache.org/jira/browse/SLING-929?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vidar S. Ramdal resolved SLING-929.
-----------------------------------

    Resolution: Fixed

Fixed in rev #766073

> JSONObject.append() fails when adding second value
> --------------------------------------------------
>
>                 Key: SLING-929
>                 URL: https://issues.apache.org/jira/browse/SLING-929
>             Project: Sling
>          Issue Type: Bug
>    Affects Versions: Commons JSON 2.0.2
>            Reporter: Vidar S. Ramdal
>            Assignee: Vidar S. Ramdal
>             Fix For: Commons JSON 2.0.4
>
>
> o.a.s.c.json.JSONObject#append has an ugly typo in it.
> The method is supposed, according to the javadoc, to create an array when the 
> first value is added, and then append to the array on subsequent values.
> So that this test should pass:
> 1:       JSONObject obj = new JSONObject();
> 2:      obj.append("key", "value1");
> 3:       obj.append("key", "value2");
> 4:       Object result = obj.get("key");
> 5:       assertTrue("Did not create an array", result instanceof JSONArray);
> However, an exception is thrown at line #3: 
> org.apache.sling.commons.json.JSONException: JSONObject[key] is not a 
> JSONArray.
>       at org.apache.sling.commons.json.JSONObject.append(JSONObject.java:327)
> There's an if-else block in append() that checks if the array already exists. 
> If there's already a property with the same key, which is not an array, the 
> exception should be thrown. However, instead an exception is thrown when an 
> array already exists.
> This code seems to have been copied from JSON.org. The original code 
> (view-source:http://www.json.org/java/org/json/JSONObject.java) has the 
> if-else block reversed.
> Coming up with a patch and a testcase.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to