/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.seasar.framework.container; import java.util.Map; /** * <p> * 式を表わすインターフェースです。 * </p> * <p> * 式とは、 オブジェクトの生成、 プロパティへのアクセス、 メソッドの呼び出し、 定義済みオブジェクトの指定、 リテラルの記述、 * 演算、などが出来る表現方法です。 また、 式の実装によっては(OGNLでは)変数の使用なども出来ます。 * </p> * <p> * diconファイルの<code><property></code>、 <code><component></code>、 * <code><initMethod></code>、 <code><destroyMethod></code>、 * <code><arg></code>、 <code><meta></code>、 に式を記述することが出来ます。 * </p> * <p> * 定義済みオブジェクトは、 以下のものがあります。 * <dl> * <dt>{@link ContainerConstants#CONTAINER_NAME container}</dt> * <dd>現在のdiconファイルを処理しているS2コンテナです。</dd> * <dt>{@link ContainerConstants#REQUEST_NAME request}</dt> * <dd>Webコンテナなどで実行されている場合、 現在のスレッドで処理しているリクエストです。</dd> * <dt>{@link ContainerConstants#RESPONSE_NAME response}</dt> * <dd>Webコンテナなどで実行されている場合、 現在のスレッドで処理しているレスポンスです。</dd> * <dt>{@link ContainerConstants#SESSION_NAME session}</dt> * <dd>Webコンテナなどで実行されている場合、 現在のスレッドで処理しているセッションです。</dd> * <dt>{@link ContainerConstants#SERVLET_CONTEXT_NAME application}</dt> * <dd>Webコンテナなどで実行されている場合、 現在のS2コンテナに関連づけられたアプリケーションコンテキストです。</dd> * </dl> * 定義済みオブジェクトの他にも、 S2コンテナに登録されているコンポーネントを<code>name</code>属性で参照することが出来ます。 * </p> * * @author koichik * @author goto */ public interface Expression { /** * 式を評価した結果を返します。 * * @param container * 式を評価するコンテキストとなるS2コンテナ * @param context * 式を評価するコンテキストに追加できるコンテキスト * @return 式を評価した結果 */ Object evaluate(S2Container container, Map context); }