Dependency Walkerの実装

正直、CROSSFIRE O/Rは、最初のSQLからJavaソースコードにコンバートするコンバーターの領域をでなくてはならない。
そうすると、やはり、必要なのが「Dependency Walkerの実装」の実装だ。

Dependency Walkerは、SQLを入力するXMLファイルから何が自動生成されていたり、自動生成されたものがどこで使われているとか、その辺をサポートする機能だ。
これがあると、今までの機能の拡張としては

・差分コンパイルの更なる高速化
・SQL2Javaソースのコンパイラの高速化
・テーブル構造が変わったり、出力するJavaクラス名やメソッド名が変わるときのリファクタリング

などができる。
あとは、SeasarのようなDIコンテナを利用したときに、名前から解決するのもよいが、Dependency(依存性)から、XMLファイルを自動生成させるのも良いと思う。

対象となるDependencyとしては

[Java関連]
・インターフェースの実装による依存性
・クラスの継承
・継承したスーパークラスのメソッドのオーバーライドを検出して、エクスポート
・パッケージ内に、一式のインターフェースを実装したクラス郡がそろっているかどうかでそのパッケージをクラスローダーが外部に公開するかを判断

[CROSSFIRE O/R固有関連]
・サブクエリーと親クエリーの依存性
・内部で使われている動的変数($で始まる単語)とJavaBeanのGetter,Setterでマッチングするプロパティ
・自動生成されたソースコードがどこで利用されているかの検出

などだ。
あとは、Dependency Walkerだけでは判断できないところで、人間に質問をする仕組み(問題解決時に補完すべき依存性の抽出)が出来るとかなりよくなってくると思う。