jardiff-maven-plugin っていうのがあったので、どんなレポートを生成してくれるのかが気になる(試してみたもの、Maven のバージョンが合わないせいか、動かなかった)。どうやら、API の diff を生成してくれるみたい。内部的には jardiff を呼んでいるだけのようだが。そのうち、またチャレンジしてみよ。
カテゴリー: Java
Solrが参照するcommons-io
solr-core と solr-solrj の pom では commons-io の groupId が以下のように org.apache.commons になっている。
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency>
なので、自分のプロジェクトでも groupId が commons-io の commons-io を定義していると別物として扱われ、2つの commons-io が入ることになる。というわけで、紛らわしいから自分のプロジェクトの pom で solr の dependency で exclusions して commons-io が入らないようにするのが良いかも。commons 系の groupId は困るな…。
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 で目的なことはできた。