Apache Clickりりーす
さっそくソースを読もうとするが、ConcurrentReaderHashMap.javaがなくなってて、ソースフォルダにclassが入ってた。
ライセンスとかの問題かな。
それと、Clickはantで依存jarまでとってこれるからMavenをあんまし重視してないっぽいけど、今日mavenでコンパイルしてみたらあまりに重視されてなさすぎでワロタ。
問題あるのはほとんどoptional=trueなdependencyだから影響はないんだけど。ちなみに1.5のときにspringのバージョンあげてるみたいだけど、そのときからおかしかったみたい。テストしてねーだろ。
一応めもっとくと、click-extras.pom のおかしい点はこんなん。
- freemarkerがない
- hibernateのバージョンがおかしい
- hibernateのdependencyには、exclusionでjavax.transactionを除外したほうがよくね?(リポジトリにjarがない)
- cayenneのgroupIdが古い
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.2.6.ga</version> <optional>true</optional> <exclusions> <exclusion> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.cayenne</groupId> <artifactId>cayenne-nodeps</artifactId> <version>2.0.4</version> <optional>true</optional> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.12</version> <optional>true</optional> </dependency>
click自体をmavenでビルドすることはほとんど需要がないんだろうけど、ちょっと依存関係確認したり、mavenのプロジェクトの中に改変したソース入れたりしたときに、pomがおかしいとへこむ。
ひさしぶりにDbUtilsを触る
今のプロジェクトで大体設計ができてきて、もうすぐ製造工程にはいります。
なんか完全に新規案件なのに5年くらい前に作られたと思われる超独自WEBフレームワーク使うことになってて、あまり楽しい開発とは言えません。
製造は自分を含めて協力会社2人でやるんですが、メンテはプロパーの人たちがすることになるので開発効率の良い今時のフレームワークよりも使用経験のあるものが良いみたいです。
DBアクセスはDbUtilsを使うことになりそうです。DbUtilsといえば以前も書いたんだけど色々問題があるわけで、さっそくそれらをカバーする最低限のユーティリティを書いてみたりしました。その途中でBeanListHandlerを見てみたんだけど、バージョン1.1からGenericListHandlerってのが導入されてて、複数行を処理するハンドラの実装はこれのサブクラスになっています。GenericListHandlerがhandleメソッドで結果をまわして、1行ごとにhandleRowってメソッドを呼び出します。サブクラスはこれをオーバーライドするわけですが、ここでBeanListHandlerはRowProcessorのtoBeanメソッドを呼び出すようになっています。
これはちょっと問題があって、1行ごとにtoBeanメソッドが呼ばれるわけだから、そのたびに以下の処理が行われます。
- ClassからPropertyDescriptorを取得。
- PropertyDescriptorとResultSetMetaDataのマッピング。
つまり、結果が返ってきたタイミングで一回やればいい処理を、1行ごとにやっちゃってるわけですね。
1.0のころは、RowProcessorのtoBeanListってメソッドを呼び出してました。ここでは上記のような問題はありませんでした。
もちろん1.1の実装のほうが、きれいですっきりしてるのは間違いありません。でもなんかなー。結局、BeanListHandlerを拡張したりせず、ResultSetHandlerの実装を独自に作成することにしました。
DbUtilsは所詮はDBユーティリティ。ORマッピングツールではないので、あまり高度なことを期待するのは間違っているのかもしれません。便利そうなResultSetHandlerの実装などが、いくつか準備されていますが、所詮は参考程度に考えて、プロジェクトで使うものは独自で実装したほうがいいとおもいます。
Click Framework 1.5.1
さーて、ひさしぶりにClickでもさわるかなー、と。
1.4.2まではよくさわってたけど1.5はまださわってないんだよなー、とか思って、今朝ダウンロードしてソース読み出したら、その2時間後くらいに1.5.1が出た。なんつータイミング・・・
1.5になって個人的にうれしいのはControlRegistryとActionListener。
これまでFormの中のコントロールとか特に、入力フィールドを処理してボタン処理するって順番に依存した仕組みには違和感感じまくってたんだよねー。自作のコントロールとかでは実害もあったし。
あと、ClickServletにonProcessCheckなんつー拡張ポイントが増えてたりするのが地味にうれしいね。
仕事がない
今の契約先と12月末で契約がおわるんだけど、それ以降の契約は無い方向で話がまとまってしまった。
来年1月から仕事がない。
だれかー、仕事くれー!!
半年ぶりに更新
実に半年ぶりの更新になる。
今日久しぶりに、3年くらい前に一緒に仕事をしたメンバーから電話がかかってきた。
Click Frameworkについて調べてたらこのブログを見つけて電話してきたらしい。
当時の彼はほぼ新人。そんな時に技術者としていろいろと洗脳しておいた。今日話したところ、確実にその芽がでてたみたいで嬉しかったと同時に、俺も勉強せないかんなーと思い直した。
まぁこの半年間、わりと忙しくて以前みたいに「暇だからブログでも書こっかなー」なんて状態にならなかったのが大きな原因。
ネタとしては多少溜めてるのもあるので、徐々に吐き出していきたいと思う。
Javaコミュ九州で
九州JavaOne報告会ってのが金曜にあるわけです。
某発表者様が連続遅刻記録を3回に伸ばすと予測。