You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Bob Harner (JIRA)" <ji...@apache.org> on 2017/02/25 21:54:44 UTC

[jira] [Created] (TAP5-2575) Replace json.org-licensed classes with Apache-compatible versions

Bob Harner created TAP5-2575:
--------------------------------

             Summary: Replace json.org-licensed classes with Apache-compatible versions
                 Key: TAP5-2575
                 URL: https://issues.apache.org/jira/browse/TAP5-2575
             Project: Tapestry 5
          Issue Type: Task
          Components: tapestry-json
    Affects Versions: 5.4.1, 5.3.8
            Reporter: Bob Harner


Because of [license issues|https://www.apache.org/legal/resolved#json], we need to replace all json.org-licensed classes with alternative classes having an Apache-approved license. Apache legal has imposed a deadline of April 30, 2017.

Tapestry apparently includes 3 classes that are, starting in version 5.2, "repackaged, improved (and tested) version of code originally from json.org." These 3 all include D. Crockford's "The Software shall be used for Good, not Evil" statement in the JSON license at the top.

The 3 classes are:
* JSONArray.java
* JSONTokener.java
* JSONObject.java

Other Apache projects (including Wicket) have successfully switched to https://github.com/tdunning/open-json, which contains versions of the above 3 classes that are purported to be mostly compatible with the current versions from json.org. However, there have been changes to Tapestry's own version since the original copy was made (May 2008 or possibly earlier), and those changes would need to be re-applied. Some examples:
* TAP5-1153: When in development mode, Tapestry should pretty-print JSON content
* TAP5-2209 Make JSONObject and JSONArray implement Serializable
* Make JSONArray.from() not care about what values are stored in Iterable
* Add a new constructor to JSONObject to make it easier to initalize a JSONObjects key/value pairs (if all strings)
* Change generics signature for JSONArray.putAll() and JSONObject.putAll()
* TAP5-2098: Maintain JSONObject keys & values in the order they were added
* Add a copy() method to JSONObject
* Add JSONArray.toList()
* Add JSONArray.putAll()
* Added remove(int index) to JSONArray
* TAP5-1970: Make it easier to create JSONObject and JSONArray instances
* Add JSONObject.toMap()
* Add JSONObject.in(String) to create (if needed) and return a nested JSONObject

There are 116 unit tests for the JSON module. A starting point would be to overlay the open-json classes and see what tests fail.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)