[ 
https://issues.apache.org/jira/browse/SLING-12269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17828626#comment-17828626
 ] 

Remo Liechti commented on SLING-12269:
--------------------------------------

to restore the happy path functionality, it is enough to patch getString of 
JSONObject and JSONArray. However, the edge cases now throw different 
exceptions (before: ClassCast, NumberFormat. Now: JsonException)

Please see attached patch that would give us the same old behavior, with 
slightly adapted unit tests. Marked the two lines changed in JSONObject and 
JSONArray as well as added a note to the manual steps in the readme.

[^SLING-12269.patch]

> Changed behaviour in commons json when used as a dependency
> -----------------------------------------------------------
>
>                 Key: SLING-12269
>                 URL: https://issues.apache.org/jira/browse/SLING-12269
>             Project: Sling
>          Issue Type: Bug
>          Components: Commons
>            Reporter: Remo Liechti
>            Priority: Blocker
>         Attachments: SLING-12269.patch
>
>
> With the new internal release 2.0.22, there seems to be a different behaviour 
> when it comes to get values from JSONObject.
> The new version checks for types and throws an exception, as of the old 
> version simply called toString() on any object found.
> *Old:*
> {{public String getString(String key) throws JSONException {}}
> {{  return get(key).toString();}}
> {{}}}
> *New:*
> {{public String getString(String key) throws JSONException {}}
> {{  Objectobject=this.get(key);}}
> {{  if (objectinstanceofString) {}}
> {{    return (String) object;}}
>      }
> {{  throwwrongValueFormatException(key, "string", object, null);}}
> {{}}}
>  
> Same is true for all other types, such as getInt, getLong etc.
> There might be more such small differences in behaviour.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to