Tapestry-5.0.11

5.0.11が出ました。ダウンロードページなどはまだ更新されてないようですが、Mavenリポジトリからはすでに利用できるようになってます。

以下、リリースノートから目に留まった変更点2つ。

@Propertyアノテーション

ページやコンポーネントクラスのフィールドに@Propertyアノテーションをすると、getter/setterを自動生成してくれるようになりました。オプションのread,writeパラメータを指定すればgetter/setterどちらかだけの指定もできます。

    // getterのみ生成
    @Property(write=false)
    private String _foo;

@Cachedアノテーション

メソッドの戻り値をキャッシュして、複数回呼び出された場合に2回目以降はキャッシュされてる値を返すようにできます。実行コストの高いメソッドが、次のようにテンプレートから複数回呼び出される場合などに役立ちます。

.java:

@Cached
public List<DataType> getListOfDataType() {
    return someExpensiveMethodCall();
}
.tml:

<t:if test="listOfDataType.size()">
  <t:loop source="listOfDataType">
     ...
  </t:loop>
  <t:parameter name="else">
     No data to display
  </t:parameter>
</t:if>

今まで、何度か同様のケースで次のように書くことがあったので、これは嬉しいかも。

private List<DataType> _listOfDataType;

void setupRender() {
    _listOfDataType = someExpensiveMethodCall();
}

public List<DataType> getListOfDataType() {
    return _listOfDataType;
}

日本語訳の方が5.0.6で止まってしまってますが、5.0.11への更新作業を始めました。翻訳済みのページの変更点が結構ありそう。ページ数もたくさん増えてるので全部終えるのはまだまだ先になりそうです。リリースまでに最低限coreは終わらせたい。できればtutorialも。でも間に合うのか?

http://tapestry.apache.org/tapestry5/