サーバー側 Expression evaluator API とカスタマイズ

このモジュールの機能は、独自の式評価 Bean を定義することでカスタマイズできます。通常は、DefaultEXPEvaluator インスタンスを作成して、そのインスタンスに変数リゾルバーと関数マッパーの実装を注入します。独自の Expression evaluator Bean を作成するには:
  1. カスタム OSGi バンドルを作成します。

  2. バンドルの Spring コンテキストを設定します。

  3. EXM および JSP-EL のクラスをバンドルのマニフェストにインポートします。Expression Manager には、次のパッケージが必要となります。
    • com.adobe.exm.exception

    • com.adobe.exm.expeval

    • javax.servlet.jsp.el

  4. Spring コンテキストで、com.adobe.exm.expeval.DefaultEXPEvaluator クラスのインスタンス(またはその何らかのカスタム拡張機能)となる Bean を定義します。さらに変数リゾルバーと関数マッパーを使用して、次のように設定します。
    <bean id="<expevaluator_id> " class="com.adobe.exm.expeval.DefaultEXPEvaluator" > 
        <lookup-method name="createVariableResolver" bean="<variable_resolver_bean_id>"/> 
        <property name="functionMapper" ref="<function_mapper_bean_id>"/> 
    </bean>
  5. 変数リゾルバーは、com.adobe.exm.expeval.EXPVariableResolver インターフェイスを実装するクラスのインスタンスである必要があります。Expression Manager 構築ブロックには、単純なマップベースの実装が用意されていますが、ごく単純なユースケース以外、あまり実用性がありません。ただし、Data Dictionary 構築ブロックには、より完成度の高い変数リゾルバーの実装が用意されており、データディクショナリのインスタンスのプロパティから変数の値を取得するようなユースケースにも使用できます。

  6. 関数マッパー Bean は、javax.servlet.jsp.el.FunctionMapper インターフェイスを実装するクラスのインスタンスである必要があります。Expression Manager 構築ブロックには、関数マッパーの実装(OSGi サービスとして公開)が用意されています。これは、同じ CRX コンテナにデプロイされている他のバンドルによってエクスポートされたカスタム関数を自動検出によって集約するものです。この関数マッパー実装を使用するには、次のように BluePrint を使用し、Spring Beanとしてインポートします。
    <bp:reference id="<function_mapper_bean_id>" 
        interface="javax.servlet.jsp.el.FunctionMapper" 
        filter="(exm.function.mapper.id=lc.exm.compositeFunctionMapper)"/>
  7. Expression evaluator Bean を独自のカスタム Bean に注入し、いずれかの evaluate*() API を使用して式の評価に使用します。