Mylyn Connector: Bitbucket 0.1.0 リリース


巷ではGithubの方が人気のプロジェクトホスティングサービスですが、Bitbucketユーザの方はいかがお過ごしでしょうか?個人的にはWindowsにも導入が簡単で、Subversionとコマンド名が近いMercurialの方が好みです。

さて、Mylynですが、簡単に言えばEclipse上でタスクを管理するためのミドルウェアです。3.3あたりからEclipseに組み込まれ初め、TracやBugzillaなどのBTSと連動して使う事もできます。しかし、Bitbucketと連動して使うためのコネクタがありません・・・。調べたところ、GitHub用のコネクタはあるようで、Bitbucket用のコネクタも要望があがっているようですが、今のところは作られていないようです。

というわけで、なければ作ればいいじゃないということで作ってみましたEclipseのアップデートサイトはこちらです。

http://updates.deathmarch.jp

内部的には、BitbucketのREST APIを利用していますが、こちらもまだ、ベータ版ということで機能的に足りていない状況です。例えば、コメントが取得できなかったり、チケットのステータスが取得できなかったり(笑)します。なので、APIの進化と合わせてプラグインも作っていこうかな、と。

以下、Eclipse Plug-In開発に関してです。
久しぶりにEclipseのPlug-Inを作ってみました。とは言っても、簡単なサンプル程度しか作ったことがないので、公開サイトを作って、ある程度の機能を作り込んだのは初めてだったりします。最近、業務ではNetBeans Platformなんかをいじっていますが、エディタとしてはEclipseが大好きなので、興味を持ってやってみたというワケで、思ったことのメモを書いておきます。

キャッシュ?

データ構造の変更やGUIのレイアウトを変更して、確認用Eclipseを再起動するのですが、反映されない事がしばしば・・・。どうも、内部的にキャッシュしている部分があるらしく、一端削除するなど必要なようです。動作確認が慣れるまで面倒だなーと思いました。Slim3みたくHotReloadingな開発環境に慣れてしまうと辛いですね。

SWTのレイアウトが面倒・・・

SWTGUIを作るわけですが、NetBeansGUIエディタに慣れている事もあり、苦痛でした・・・。

というわけで、GridLayoutFactoryとGridDataFactoryを使うとだいぶ簡単に書けました。つか、これがないと辛いです・・・。

Composite group = new Composite(parent, SWT.NONE);
GridLayoutFactory.swtDefaults().numColumns(2).applyTo(group);
{
    Label label = new Label(group, SWT.LEFT);
    label.setText("Query Title:");
    queryTitleText = new Text(group, SWT.BORDER);
    if (getQuery() != null) queryTitleText.setText(getQuery().getSummary());
    queryTitleText.addModifyListener(modifyListenr);
    GridDataFactory.defaultsFor(queryTitleText).applyTo(queryTitleText);
}
GridDataFactory.fillDefaults().grab(true, false).applyTo(group);

依存プラグインの同梱ライブラリではまる

Mylynの依存ライブラリにcommons-httpclient 3.Xが含まれているのですが、そうとも知らずに commons-httpcomponent-client 4.Xを使おうとしてはまりました。httpclient 3.Xはレガシーなので、4.Xを使っているのですが、作った後にどうも動かない・・・。理由としては、httpcomponent-clientは認識している(パッケージが変わっているため)ものの、commons-codecのバージョンが異なることが原因でした。最終的には、4.Xを諦めて同梱の3.Xを使用しています。
結局の所、依存ライブラリに合わせるしかないなーという所です。

公開サイトの作成ではまる

「There are no categorized items」と表示され、カテゴリが上手く認識しないバグで半日悩まされました・・・。回避方法としては、カテゴリに属しているFeatureをいったん削除してから、ビルドしなおすということです。