ListViewの拡張をやってみた2
昨日は、固定の文字を表示しただけなので、今回はちゃんとビルドを起動した契機を表示します。
まずは、column.jellyを変更します。
<j:jelly xmlns:j="jelly:core"> <td>${it.getHTMLDescription(job)}</td> // ここを修正 </j:jelly>
この変更箇所の"it"は作成したCauseListViewColumnのインスタンスです。"job"は、表示する行のJobです。ListViewColumnのJavadocに、"The Item object is passed in the "job" variable. "と書いてあります。
つまり、"${it.getHTMLDescription(job)}"は、CauseListViewColumn#getHTMLDescriptionに今表示するJobを渡した結果になります。
次に、CauseListViewColumn#getHTMLDescriptionを実装します。このメソッドでは、
- 受け取ったJobの直近のビルドを取得
- そのビルドの起動契機(CauseAction)を取得
- CauseAction#getHTMLDescrptionの結果を返す
ようなことをします。CauseListViewColumn.javaに以下を追加します。
public String getHTMLDescription(final Job job) { final Run r = job.getLastBuild(); if (r == null) { return "N/A"; } final CauseAction action = r.getAction(CauseAction.class); if (action == null) { return "N/A"; } return action.getHTMLDescription(); }
すると、
のように表示されます。日本語化されていませんが、これからコミットするので1.285では日本語で表示されます。
一応これで終わりですが、ジョブ一覧にあまり長い文章を表示するのもまずいので、起動契機を表すアイコンとユーザー名だけ表示とか、いろいろすることはありそうです。ジョブ一覧の拡張は、3ファイルぐらいの作成ですむので、試しに作ってみるのもいいでしょう。最新の変更(コミット履歴)へのショートカットとかは地味に便利かもしれません。
最後に、はてなキーワードに登録されるかどうかの試験です。Hudson Hudson hudson 以上。
やっぱり、されません。はてなキーワード八分か。