Slim3とGAE/JでつくったTODOリストサービスをGoogle Codeで公開

以下のエントリーでTODOリストサービスをfirestorageで公開してたんだけど、色々コメントもらって結局Google Codeに公開することにしました。
Slim3で作ったTODOリストサービス - ありの日記

Google Code↓
http://code.google.com/p/hironemu-examples/

ちなみに、Google CodeのSVNには、前のエントリーでひがさんとnamaeさんにコメントをいただいた辺りを直した奴をアップしています。
ひがさんにはControllerクラスには便利な機能(asXxx())があるよと教えてもらったので、Controllerクラスをついでに調べてみました。

Controllerクラスの便利な機能

1. asXxx()メソッドによるリクエストの取得

例えば、文字列(String)の場合

String name = asString("user_name");

とすることでリクエストデータを取得できます。同様にBooleanの場合、

Boolean deleteFlg = asBoolean("delete_flg");

とすることで、リクエストの内容をBooleanに変換して取得してくれます。便利だったのがjava.util.Dateの場合で、以下の用になります。

Date dueDate = asDate("dueDate", "yyyy/MM/dd");

として、リクエストのStringの日付をパースしてDate型に変換してくれます。いずれも、org.slim3.controller.Controllerクラスで実装されているんですが、よく使う物だけに便利ですね。同じような感じで、asBigDecimal()やasByte()など色々あるので見てみるといいかも。

2. key()メソッド

これもよく使うであろうkeyの取得を簡略化するためのメソッドです。reques.getAttribute("key")でkeyを取得するようになってます。でも、keyが取得できない場合はIllegalStateExceptionが発生するので、keyがリクエストで飛んでこない場合は、Exceptionをキャッチするか別の方法(request.getAttribute("key")で直接とるとか)する必要がありますね。(※内部ではシンプルにreturn asString("key");とするだけになったようです。)

3. isDevelopment()メソッド

開発環境で動いてるときtrueが返ってきます。何かで使えそうw

4. download()メソッド

簡単にファイル名とファイル(バイト配列)を渡してOutputStreamにはき出します。この場合、Controllerのrun()メソッドの戻り値はnulにしておきます。試してないですが、slim3itのslim3.it.controller.upload.DownloadControllerにサンプルがありますw

5. isGet(), isPost()

名前のまんまですね。これもどっかで使いそう〜。

おっと。話がそれた。
Google CodeにUPしたサービスはまだまだサンプルとして充分じゃないです。正式なslim3itとかのサンプルの方がSlim3の機能の網羅率は圧倒的に高いはずです。
でも、それとは違った視点で別のコードを見たい、っていう人のためにはそれなりに意味があるのではないかと思いますし、これからもっとそうなっていけばいいなとも思います。

さて、次はJDOあたりを重点的に調べようかなー。今日はハマりまくったのでまだ先になりそうだけど。