XMLEncoderでTimestampを使う

Fess の設定情報を XMLEncoder/XMLDecoder で XML でまるごと操作できるようにしたのだけど、そのときにいくつかハマったので書いておく。まず、java.sql.Timestamp をデフォルトでは扱えん。というわけで、

XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(out));
PersistenceDelegate pd = encoder.getPersistenceDelegate(Date.class);
encoder.setPersistenceDelegate(Timestamp.class, pd);
encoder.writeObject(dataSet);
encoder.close();

みたいな感じで、PersistenceDelegate を取得して、Timestamp にも登録した。どうやら、BigDecimal もできないような情報があるけど、そのときは Date.class の代わりに Integer.class とかからとって、セットすれば良いみたい。

もう一つハマったのが、出力された XML で最後の java 閉じタグが表示されないこと。これは、XMLEncoder の動きとして、flush で最後の閉じタグ前まで出力して、close で最後のタグを記述する感じ。close の内部で flush を読んでいるから、つまり、最後は必ず、XMLEncoder は close 呼ばんときちんとした XML にならん(細かい設定方法があるのかもしれないけど、直感的でないからちょっと仕様的に微妙な気もするのだけど…)。

という感じで、XMLEncoder/XMLDecoder で目的なことはできた。

S2Robotに細かい修正を入れる

来週か再来週あたりに Fess をリリースしたいと考えていて、それに併せて、細かい修正を S2Robot にポツリポツリと入れている。という感じなので、Fess のリリース前には、S2Robot 0.1.1 をリリースする予定でいます。0.1.1 の後には、拡張的な機能も追加したい感じです。

相鉄線のJRと東横との連絡

横須賀線の利用者の私だが、武蔵小杉駅ができるのも先月くらいに知った感じなのだけど、まだ先な感じだけど、相鉄線も湘南新宿ラインと連結しようとしていることを最近知った。相鉄線の方は新川崎の後に東海道貨物線(?)を使って羽沢の方に行って、そっから西谷と結ぶみたい。個人的には横浜にも止まらないみたいなので面倒な感じだな。まだかなり先な話だけど、保土ヶ谷を止まる横須賀線の本数が減らないか心配する今日この頃。