-式言語のコンテキスト

S2JSFを見ました。S2VariableResolverがいわばRootオブジェクトで、Mapをもって組み込み(もしくは暗黙)オブジェクトをハンドルしています。そのオブジェクトはJSFAPIを通して、結局はMyFacesの実装が手当てしてくれます。実行時に式言語のコンテキストに対してapplicationScopeやsessionScope、paramなどの実際のブツを用意してくれる。
で、私はエンジンのほうでこれらを用意してエンジンが式言語エンジンにセットするように考えていましたが、どうすっかな。エンジン実装者がひろってこれるように、FacesContextの代わりを作ってVariableResolverのインターフェイス自体は特にいじらないことにしますか。JSPAPIだし。
ということで、MyFacesのnet.sourceforge.myfaces.context.servlet.*と、org.seasar.jsf.el.*をざっくりパクる方向で(笑。
追記
なんか勘違いしていたみたい。VariableResolverはリゾルバであってExpressionエンジンではないような気がする。
再追記
OGNL他の式言語エンジンを入れるのに合うのは、javax.servlet.jsp.el.ExpressionEvaluator のほうのようです。が、これで実装するのはOGNLと合わないんじゃないかなと、今、考えています。どうかな。もうちょい見ないとわかんなくなってきましたが。で、昨日のコメントですが、PageContext extends JspContextという関係でしたね。これを見落としてわけがわからんかった。なるほど。PageContextはJSPカスタムタグからアクセスされるので、これに絡むのはマジメに実装しないといけません。ExpressionEvaluatorでやらないといけないか〜。うーん。
再々追記
VariableResolverがOGNLのPropertyAccessorと考え方がほぼ同じであることが分かりました。対応関係考える上では、PropertyAccessorのほうが難しいことができるのでOK。あとは、JSPのExpressionEvaluatorおよびJSFのValueBinding/MethodBinding/PropertyBindingとelのELParserの関係をOGNLに置き換える手段を考えていこう。