JSONIC 1.2.0 ベータ4リリース

ものすごく難産でしたが、1.2.0の最終ベータ版をリリースしました。特に問題がなければ、一週間以内に正式リリースしたいと思います。1.2のリリースに関しては、出す出す言って結局リリースできていなかったので、気が重い状況が続いてましたが、これでやっと一息付けそうです。

今回のリリースでWebServiceServletが非推奨となり、同機能を発展させたRPCServletとRESTServletに分割されました。RPCServletの方はJSON-RPC 2.0をサポートする一方、RESTServletの方もRPC的な使い方もできるよう機能追加した関係で、両方のServletを無理やり統合しておくのが難しくなってしまったのがその理由です。両方のI/Fが違いすぎるので、今となっては実際のアプリケーションで共存させる必然性はないように思います。

変更点は次の通りです。表面上はあまり変わってない感もありますが。

  • [不具合] JSONクラスにて親クラスの型パラメータ変数を持つプロパティの取り扱いに失敗していた問題にある程度対応しました。
  • [不具合] JSONクラスおよびWebサービスAPIにてメソッドを探す際、合成メソッドやブリッジメソッドも対象に含めてしまっていた問題に対応しました(バージョン1.0.5、1.1.2でも修正/リリース済みです)[#19766]
  • [不具合] JSONのデコード時に指数部が2桁以上ある数値の解析に失敗していた点を修正しました(JSONIC AS3およびバージョン1.0.5、1.1.3でも修正/リリース済みです)。[#20537]
  • [不具合] ストリームから読み込む際、JSONException#getErrorOffset()にて正しくないオフセット値が戻される不具合を修正しました。
  • [不具合] WebサービスAPIにて、パス変数に「.」を指定できるため、意図せぬクラスの呼び出しが可能になる場合があったため、デフォルトのパターンを[^/().]+に変更しました。
  • JSONHintアノテーションにて、formatの日付書式でISO8601形式のタイムゾーンを扱うZZを指定できるようにしました。
  • JSONHintアノテーションにanonymを追加し、単純値型からMapや複合型への変換を可能にしました。
  • JSON encoder/decoderにて1処理中に限りメソッド情報をキャッシュするように変更しました。
  • JSON.encode(or format)およびJSON.decode(or parse)にてJSONHint(type=String.class)を指定した場合にはtoStringおよびStringを引数に取るコンストラクタを使い文字列の相互変換を行うようにしました。
  • JSON.encode(or format)およびJSON.decode(or parse)にてJSONHint(type=Serializable.class)を指定した場合にはObjectInputStream/ObjectOutputStreamを使いシリアライズによる変換を行うようにしました。
  • JSON.encode(or format)およびJSON.decode(or parse)にてjava.sql.RowIdの相互変換に対応しました。
  • JSON.encode(or format)にてjava.sql.Array, java.sql.StructJSON化に対応しました(逆方向には対応していません。相互変換が必要な場合はJSONHint(type=Serializable.class)を指定しシリアル化してください)。
  • AS3版JSONICにて、JSON.encode(or format)時にmine変数を無視するように変更しました。
  • JSON-RPC2.0をサポートするRPCServletと強化されたREST操作を可能にするRESTServletを新設しました。WebServiceServletは互換性のため残されていますが非推奨となり機能追加もほとんど行われていません(Version 1.1互換)。RPCServletやRESTServletとWebServiceServletの各モードとの違いは、JSONIC 1.1 RPCモードからの変更点JSONIC 1.1 RESTモードからの変更点を参照してください。
  • WebサービスAPIにて各種DI Container用Containerクラスのパッケージをnet.arnx.jsonic.webからnet.arnx.jsonic.web.extensionに変更しました。ご注意ください(ただし、WebServiceServletに限り互換性維持のため、指定されたパッケージ名が旧来のものでも動作します)。
  • WebサービスAPIにてContainerにリクエストの最初と最後に呼ばれるstartメソッドとendメソッドを追加しました(WebServiceServletでも利用できます)。
  • sampleに付属のjquery.jsのバージョンを1.4.2に更新しました。