JDKのバージョン下位互換性
JDKはバージョンがあがるたびに新しくクラスが追加されますが、ビルド時に確認する方法ってあるんでしょうか。やっぱりコンパイルするJDKに依存してしまうものなのでしょうか。
どういうことかっていうと、今JDK6で開発しているプラグインがJDK5でも動くことを保障するには、JDK5へ環境を移さないとすべて確認できないのかということです。例えばJDK6からCookieManagerの実装クラスが提供されるようになりましたが、ということはJDK5だとCookieManagerの実装クラスは提供されていないということで、それなりの対応をしなければならないと思いますが、具体的に何をしたらいいのかをわかるために有用なツールとかないもんかなと。実験的な意味で始めたプロジェクトなんで、下位互換性を気にしなくてもいいかと思っててもやっぱり気になるもんですよ。
こみゅすけから参加者一覧を取得する
EclipsePlugin勉強会の参加者が増えてないかなーとわくわくしながらこみゅすけにアクセスしていたのだけれども、ふとHTMLで一覧を出力してくれないかなーと思った。よく考えてみたら、こみゅすけはAjaxを駆使して作られている。ん?そういえば一覧は不思議な動きをするぞ?
ということで、FireFoxのアドイン「Live HTTP headers」でどういうリクエストとレスポンスが飛んでるか見てみたら、受け口とJSONで通信していることがわかった。こみゅすけの管理人、よういちろうさんから公開してよいとお許しが出たので、駄コードをさらしてみる。例によってJUnit4を実行するランチャとして使ってみた。
package learning; import static org.junit.Assert.assertNotNull; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.util.Date; import org.json.JSONArray; import org.json.JSONObject; import org.json.JSONTokener; import org.junit.Test; public class JSONLearning { @Test public void leaningJSON() throws Exception { // 2007 11 EclipsePlugin勉強会 String meetingId = "57"; URL url = new URL("http://commusuke.eisbahn.jp/ajax/attendances/"+meetingId); assertNotNull(url); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String line = reader.readLine(); JSONTokener tokener = new JSONTokener(line); JSONObject value = (JSONObject) tokener.nextValue(); JSONArray array = value.getJSONArray("attendances"); for(int i = 0; i < array.length(); i++){ JSONObject jsonObject = array.getJSONObject(i); String name = jsonObject.getString("nick_name"); String comment = jsonObject.getString("comment"); Date date = new Date(); long time = jsonObject.getLong("updated_at"); date.setTime(time * 1000L); String formated = String.format("[%tF]%s:%s", date,name,comment); System.out.println(formated); } } }
使用したJSONのライブラリはorg.jsonを使ってみた。json-libも試したけど、とってもFatで使え切れません。
スレッドを立ち上げる場合のテスト
例えばビルド処理とか時間のかかる処理の場合、
IProgressMonitorを使ってスレッドを立ち上げて
並列処理を行います。
しかしそういった場合メインスレッドの方は
サブスレッドの処理が終わらなければ
期待した状態ではないため、
テストが失敗してしまいます。
こういった場合はThread.sleep()とかやって
とめておくしかないのでしょうか・・・。
Eclipse RCP開発 その3 ExtensionにViewを指定し、エラーがあった場合
Eclipse3.1.2の場合
org.eclipse.ui.internal.ErrorViewPartというViewが返されています。
例外は投げられません。
Eclipse RCP開発 その2 PDE JUnitについて
めんどくさいからと言って右クリックで呼び出しても
ClassNotFoundException :CachedRuntimeClasspathEntryResolverがないよー。
と言われる。
Eclipseプラグイン開発
現在このの本をお勉強中。この本は結構いいです。
少しずつ試しながら読み進めることでEclipseのいろいろが見につきます。
サンプルコードもコピーするのではなく、打ち込むことで
こんな使い方ができるのかーって感じです。