You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Vidar S. Ramdal (JIRA)" <ji...@apache.org> on 2009/04/17 18:15:14 UTC

[jira] Created: (SLING-929) JSONObject.append() fails when adding second value

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.


[jira] Resolved: (SLING-929) JSONObject.append() fails when adding second value

Posted by "Vidar S. Ramdal (JIRA)" <ji...@apache.org>.
     [ 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.