-OGNLのClassResolver

OGNLの多い使われ方は、プロパティの取得か、リテラルだと思います。さくっとプロパティに対応しました。次はクラスメソッド。これもさくっと対応しました。しかし、OGNLのstaticな世界は、名前解決にognl.ClassResolverというものを使ってます。これはインターフェイスで、以下の簡単なメソッドがあるのみです。

public Class classForName(String className, Map context) throws ClassNotFoundException

デフォルトの実装もシンプルで、Class.forName(className)しているだけです。しかし、これがEclipseプロジェクト内ではアウトなんでRTTIなんてめんどくさいものを作っていたのですね。ということで、classForName("test.Person", null)としたら、対応するプロジェクト内のJavaソースをハンドルできるRTTIを作らないといけません。で、これも秒殺です。問題は、プリミティブがこれの外で動いているのです。Project RTTIでは、プリミティブもRTTIとして扱ってます。また、配列も厄介です。OGNLでは配列はjava.lang.Objectだと思ってます。しかし、やっぱりProject RTTIでは配列もRTTIなのです。ということで、この辺のAccessorを一そろい全部作り直して、デフォルトで突っ込まれているものを引き剥がさないと、RTTIワールドにうっかりJavaのまともな型情報が飛び込んできてしまうのです。
まあ、検証は100%できなくてもいいでしょうから、ざくっと大きなところを週末までの夜仕事で開発しちゃって、週末はビルダーの作り直しかな。パーツは全部あるから、そんなに時間はかからないと思うのですが。はて。