低スペックな頭の僕がQuick JunitとGrowl for windowsを繋いでみた その2

あわせて読みたい
低スペックな頭の僕がQuick JunitとGrowl for windowsを繋いでみた

前回のverではlibgrowl-0.2.0.jarをつかってGrowl for windowsにnotifyを送信してポップアップしていました。ただ、このlibgrowl-0.2.0.jarはGPLなので、拡張とはいえCPLのQuick Junitに勝手に組み込むわけにはいきません。*1この部分を手で実装してしまえば解決できるわけです。

Growl通知の実装はじまります。

ざっくり仕様の解説

Growl for windowsは23053番ポートに常駐して待ち受けをしています。そこにsocketを張ってリクエストを送信します。リクエストはまず、アプリケーションの定義とnotifyの定義を送信します。これをregisterと呼びます。registerが行われるとGrowl for windowsにアプリケーションとnotifyが登録されます。これは呼び出し元アプリケーション単位でおこなうので一度registerを行えばOKです。*2
registerが完了した後にnotifyを行うと画面上にポップアップが表示されます。notifyを行う時はどのアプリケーションのどのnotify定義を利用してポップアップするかというリクエストを送信します。
詳細は次のリンクをごらんください。Growl for Windows

ソース

regtan/quickjunit_growlforwindows - GitHub
新たに実装を行ったものを組み込んだ新しいVerです。buildしてdropinsにでもいれてください。

regtan/growlforwindows4j - GitHub
Growl for windowsJavaから呼び出すライブラリです。

つかうとこんな感じ



まとめ

Javadocも何もほとんどついてないし結構作りが雑な所があるので追々直したい所があったりします。前回と同じ環境でためしてみたところ、おおむね問題なく動作しますが、registerがうまく行かないことがあります。*3Eclipseを再起動するとうまくいくのでGrowl側の仕様かと思います。既知の問題などはREADMEをごらんください。
仕様をみるとリモートのGrowlに対してもnotifyを送信できるのでCIでビルドが終わったらnotifyを送信みたいなこともできるのかな。リモートに対しての処理は実装していないので今後の課題です。

*1:多分ダメだと思う

*2:別に何度やってもいいみたい

*3:registerされたアプリを消した後に再実行するとregisterがうまく行かない