CHANGE LOG

JSON-RPC 2.0 Base, Copyright (c) Vladimir Dzhuvinov, 2009 - 2013


version 1.0 (2009-10-04)
	* First release.

version 1.1 (2009-12-04)
	* Official release.
	* Major refactoring.

version 1.2 (2009-12-27)
	* More detailed messages in parser exceptions.

version 1.3 (2010-01-06)
	* Adds convenient constant instances of the JSONRPC2Error class for all 
	  standard JSON-RPC 2.0 errors (with proper codes and messages): 
	  PARSE_ERROR, INVALID_REQUEST, METHOD_NOT_FOUND, INVALID_PARAMS, 
	  INTERNAL_ERROR.

version 1.4 (2010-02-02)
	* New JSONRPC2ParamsType class enumerates the three possible JSON-RPC 
	  parameter types: NO_PARAMS, ARRAY and OBJECT.
	* Improves the documentation.
	
version 1.5 (2010-02-12)
	* Adds the utility classes PositionalParamsRetriever and 
	  NamedParamsRetriever to ease the processing of request parameters 
	  (type and mandatory/optional parameter checking, default values).
	* Introduces JUnit test cases.

version 1.6 (2010-02-18)
	* Adds a base absract class ParamsRetriever to the utility parameter 
	  retriever classes PositionalParamsRetriever and NamedParamsRetriever.
	* Adds methods for getting enumerated strings to the parameter retriever 
	  classes.
	  
version 1.7 (2010-02-24)
	* Adds a getNames() method to NamedParamsRetriever to list the names of 
	  all parameters.
	* Adds the checking methods checkNames(String[] mandatoryNames) and 
	  checkNames(String[] mandatoryNames,String[]optionalNames) to 
	  NamedParamsRetriever which will throw an exception if a mandatory 
	  parameter name is missing or a name outside the expected is present.
	  
version 1.8 (2010-03-11)
	* Changes the signature of PositionalParamsRetriever.getOptEnumString().
	* Changes the signature of NamedParamsRetriever.getOptEnumString().

version 1.9 (2010-03-12)
	* Refactors the PositionalParamsRetriever class, hasParameter() and 
	  ensureParameter() methods.
	* Refactors the NamedParamsRetriever class, hasParameter() and 
	  ensureParameter() methods.

version 1.9.1 (2010-03-15)
	* Minor internal refactoring in the util classes.

version 1.9.2 (2010-08-07)
	* Util parameter retriever methods getEnumString() add support for Java 
	  enum constants.

version 1.9.3 (2010-08-09)
	* Adds explicit class parameter to util retriever methods getOpt().
	
version 1.9.4 (2010-08-19)
	* Renames util PositionalParamsRetriever.getEnum()|getOptEnum() and
	  NamedParamsRetriever.getEnum()|getOptEnum() methods

version 1.10 (2010-09-07)
	* Adds util retriever methods to allow optional null values for
	  JSON string, JSON array and JSON object parameters. The generic
	  ensure(), get() and getOpt() methods are also updated for this.

version 1.11 (2010-10-04)
	* Factors out common parse logic to the JSONRPC2Message class.
	* Parse exceptions provide specific message on empty JSON string.

version 1.12 (2010-12-12)
	* Released under the Apache Open Source License 2.0.

version 1.13 (2011-03-08)
	* Minor changes to the Ant build.xml script.
	* Includes version number in the JAR file.

version 1.14 (2011-03-09)
	* Allows optional parsing of JSON objects where their original member
	  order is preserved.
	* Allows for non-strict parsing of JSON-RPC 2.0 messages where the
	  "jsonrpc" version field is not checked.
	* Fixes JSONArray cast bug in JSONRPC2Message.parseJSONObject().
	* Documentation improvements.

version 1.15 (2011-05-19)
	* Allows for concurrent execution of the static JSONRPC2Message.parse
	  method.
	* Includes field in JSONRPCParseException to indicate the cause as
	  bad JSON or protocol exception.

version 1.16 (2011-05-19)
	* Refactors parsing, adds a reusable JSONRPC2Parser class.

version 1.17 (2011-06-11)
	* Switches the underlying JSON library from JSON.simple to the interface
	  compatible JSON Smart 1.0.6.4 for faster and more efficient parsing.
	* Expands use of Java generics.

version 1.18 (2011-07-07)
	* Completes the introduction of Java generics into the utility retriever
	  classes.

version 1.19 (2011-07-10)
	* Renames parser methods "noStrict" to "ignoreversion" and "isNoStrict" 
	  to "ignoresversion".
	* Adds methods for appending non-standard attributes (as aditional JSON 
	  object members) to JSON-RPC 2.0 messages.
	* Additional parser constructors and static parse methods to allow
	  setting of non-standard attribute parsing.

version 1.20 (2011-07-13)
	* Re-introduce parser methods "noStrict" and "isNoStrict" as deprecated.
	* Documentation improvements.
	* Updates JSON Smart JAR to 1.0.9.

version 1.21 (2011-08-05)
	* Provides an equals method implementation to the JSONRPC2Error class
	  which compares the error code values.

version 1.21.1 (2011-08-06)
	* Replaces String.isEmpty() by String.length()==0 for Google Android
	  compatibility (pre 9 level APIs).

version 1.22 (2011-10-08)
	* Utility parameter retriever classes relax the requirement of the
	  underlying datatype for int, long, float and double values by
	  converting from the more general java.lang.Number representation.
	* Removes the get{Opt}[Type]Array(...) methods from the utility 
	  parameter retriever classes.

version 1.23 (2011-10-09)
	* Reintroduces the previously removed utility parameter retriever 
	  methods get{Opt}StringArray(...).

version 1.24 (2011-10-25)
	* Adds methods hasParameters(String[] names) and 
	  hasParameters(String[] mandatoryNames, String[] optionalNames) to the
	  utility NamedParamsRetriever class.
	* Updates JSON Smart JAR to 1.0.9-1 (fixes parse bug #15).

version 1.25 (2012-02-19)
	* Updates JSON Smart JAR to 1.1.

version 1.25.1 (2012-04-03)
	* Updades JSON Smart JAR to 1.1.1.

version 1.26 (2012-07-08)
	* Adds class cast exception checking to critical sections in the utility
	  retriever classes.

version 1.27 (2012-07-14)
	* Deprecates JSONRPC2Message.toJSON() in favour of 
	  JSONRPC2Message.toJSONObject().
	* JSONRPC2Message implements net.minidev.json.JSONAware.
	* Updates build.xml script for automatic version number substitution and
	  ZIP file generation.
	* Updates JUnit JAR to 4.10.

version 1.28 (2012-11-11)
	* Adds getParams() method to {Positional|Named}ParamsRetriever.
	* Renames methods for consistent use of "std" and "params" abbreviation,
	  old ones deprecated.
	* Adds static JSONRPC2Error appendMessage and setData methods.
	* Adds standard annotations.

version 1.29 (2012-11-28)
	* Converts JSONRPC2ParamsType to enum type.
	* {Positional|Named}ParamsRetriever detail cause on JSON-RPC 2.0
	  "Invalid parameters" (-32602) error.

version 1.30 (2012-11-30)
	* Improves type safety of JSON-RPC 2.0 request and notification
	  parameters by introducing dedicated setter and getter methods for
	  positional and named parameters.
	* Removes deprecated JSONRPC2Message.toJSON(), JSONRPC2Parser.noStrict()
	  and JSONRPC2Parser.isNoStrict() methods.
	* Adds type check for error objects during JSON-RPC 2.0 response
	  parsing.

version 1.31 (2012-12-23)
	* Refactors retrieval of positional and named parameters.

version 1.32 (2013-02-19)
	* Corrects null argument treatment in JSONRPC2Parser.

version 1.33 (2013-03-29)
	* Switches project build from Ant to Maven.

version 1.34 (2013-03-29)
	* Updates Maven assembly plugin configuration.

version 1.34.1 (2013-03-29)
	* Updates Maven pom.xml.
	
version 1.34.2 (2013-03-30)
	* Fixes bug in assembly-dist.xml.

version 1.34.3 (2013-04-02)
	* Publishes library to Maven Central.

version 1.34.4 (2013-04-02)
	* Removes JavaDocs @version tags.
	* Simplifies pom.xml build.

version 1.35 (2013-04-07)
	* Refactors JSONRPC2Error class.

version 1.36 (2015-03-16)
    * Cleans up code.
    * Upgrades to JSON Smart 1.3.1.

version 1.37 (2015-03-26)
    * Identifiers fall back to toString() if not an instance of Boolean, Number
      or String (iss #4).

version 1.38 (2015-03-27)
    * JSON Smart assumes the entire JSON serialisation of JSON-RPC 2.0 response
      results.

version 1.38.1 (2017-10-22)
    * Fixes parsing of error code integer in
      JSONRPC2Parser.parseJSONRPC2Response (iss #5).

version 1.38.2 (2021-02-25)
    * Catches unexpected NumberFormatException when parsing JSON (iss #6).
