[
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.