[[SeasarJavadocProject]]
*S2Container [#ma913fd2]
2.0.22 反映済み~
&ref("S2Container.java");
#code(Java)<<EOF
package org.seasar.framework.container;
package org.seasar.framework.container;
/**
* <p>コンポーネントを管理するDIコンテナのインターフェースです。</p>
* <p>コンテナ自身も"container"という名前でコンポーネントとして
* 登録されます。</p>
*
* @author higa
*/
public interface S2Container {
/** <p>S2コンテナ自身のコンポーネント名です。</p> */
public String NAME = "container";
/**
* <p>キーを指定してコンポーネントを取得します。</p>
* <p>キーが文字列の場合、一致するコンポーネント名を持つ
* コンポーネントを取得します。<br>
* キーがクラスまたはインターフェースの場合、<br
* 「コンポーネント instanceof キー」<br>
* を満たすコンポーネントを取得します。</p>
*
* @param componentKey コンポーネントを取得するためのキー
* @return コンポーネント
* @throws ComponentNotFoundRuntimeException コンポーネントが見つからない場合
* @throws TooManyRegistrationRuntimeException 同じ名前、または同じクラスに複数のコンポーネントが登録されている場合
* @throws CyclicReferenceRuntimeException constructor injectionでコンポーネントの参照が循環している場合
*/
public Object getComponent(Object componentKey)
throws
ComponentNotFoundRuntimeException,
TooManyRegistrationRuntimeException,
CyclicReferenceRuntimeException;
/**
* <p>外部コンポーネントにセッター・インジェクション、メソッド・イン
* ジェクションを実行します。</p>
* <p>外部コンポーネントのクラスをキーとしてコンポーネント定義を
* 取得します。<br>
* instanceモードが"outer"と定義されたコンポーネントのみ有効です。
* <br>
* 「コンポーネント instanceof 外部コンポーネント.getClass()」<br>
* を満たす外部コンポーネント定義を利用します。</p>
*
* @param outerComponent 外部コンポーネント
* @throws ClassUnmatchRuntimeException 適合する外部コンポーネント定義が見つからない場合
*/
public void injectDependency(Object outerComponent)
throws ClassUnmatchRuntimeException;
/**
* <p>外部コンポーネントにセッター・インジェクション、メソッド・
* インジェクションを実行します。</p>
* <p>componentClassをキーとしてコンポーネント定義を取得します。<br>
* instanceモードが"outer"と定義されたコンポーネントのみ有効です。
* <br>
* 「コンポーネント instanceof 外部コンポーネント」<br>
* を満たす外部コンポーネント定義を利用します。</p>
*
* @param outerComponent 外部コンポーネント
* @param componentClass 外部コンポーネント定義のキー (クラス)
* @throws ClassUnmatchRuntimeException 「外部コンポーネント instanceof 取得したコンポーネントのクラス」がfalseを返す場合
*/
public void injectDependency(Object outerComponent, Class componentClass)
throws ClassUnmatchRuntimeException;
/**
* <p>外部コンポーネントにセッター・インジェクション、メソッド・イン
* ジェクションを実行します。</p>
* <p>componentClassをキーとしてコンポーネント定義を取得します。<br>
* instanceモードが"outer"と定義されたコンポーネントのみ有効です。
* <br>
* 「コンポーネント instanceof 外部コンポーネント」<br>
* を満たす外部コンポーネント定義を利用します。</p>
*
* @param outerComponent 外部コンポーネント
* @param componentName 外部コンポーネント定義のキー (名前)
* @throws ClassUnmatchRuntimeException 「外部コンポーネント instanceof 取得したコンポーネントのクラス」がfalseを返す場合
*/
public void injectDependency(Object outerComponent, String componentName)
throws ClassUnmatchRuntimeException;
/**
* <p>オブジェクトをコンポーネントとして登録します。</p>
* <p>キーはオブジェクトのクラスになります。</p>
*
* @param component コンポーネントとして登録するオブジェクト
*/
public void register(Object component);
/**
* <p>オブジェクトを名前付きコンポーネントとして登録します。</p>
*
* @param component コンポーネントとして登録するオブジェクト
* @param componentName コンポーネント名
*/
public void register(Object component, String componentName);
/**
* <p>クラスをコンポーネント定義として登録します。</p>
*
* @param componentClass コンポーネントのクラス
*/
public void register(Class componentClass);
/**
* <p>クラスを名前付きコンポーネント定義として登録します。</p>
*
* @param componentClass コンポーネントのクラス
* @param componentName コンポーネントの名前
*/
public void register(Class componentClass, String componentName);
/**
* <p>コンポーネント定義を登録します。</p>
*
* @param componentDef 登録するコンポーネント定義
*/
public void register(ComponentDef componentDef);
/**
* <p>コンポーネント定義の数を取得します。</p>
*
* @return コンポーネント定義の数
*/
public int getComponentDefSize();
/**
* <p>番号を指定してコンポーネント定義を取得します。</p>
*
* @param index 番号
* @return コンポーネント定義
*/
public ComponentDef getComponentDef(int index);
/**
* <p>指定したキーに対応するコンポーネント定義を取得します。</p>
*
* @param componentKey キー
* @return コンポーネント定義
* @throws ComponentNotFoundRuntimeException コンポーネント定義が見つからない場合
*/
public ComponentDef getComponentDef(Object componentKey)
throws ComponentNotFoundRuntimeException;
/**
* <p>指定したキーに対応するコンポーネント定義を持つどうか判定
* します。</p>
*
* @param componentKey キー
* @return 存在するならtrue
*/
public boolean hasComponentDef(Object componentKey);
/**
* <p>rootのコンテナで、pathに対応するコンテナが既にロードされて
* いるかを返します。</p>
*
* @param path パス
* @return ロードされているならtrue
*/
public boolean hasDescendant(String path);
/**
* <p>rootのコンテナで、指定したパスに対応するロード済みの
* コンテナを取得します。</p>
*
* @param path パス
* @return コンテナ
* @throws ContainerNotRegisteredRuntimeException コンテナが見つからない場合
*/
public S2Container getDescendant(String path)
throws ContainerNotRegisteredRuntimeException;
/**
* <p>rootのコンテナに、ロード済みのコンテナを登録します。</p>
*
* @param descendant ロード済みのコンテナ
*/
public void registerDescendant(S2Container descendant);
/**
* <p>他のコンテナを子コンテナとしてincludeします。</p>
*
* @param child includeする子コンテナ
*/
public void include(S2Container child);
/**
* <p>子コンテナの数を取得します。</p>
*
* @return 子コンテナの数
*/
public int getChildSize();
/**
* <p>番号を指定して子コンテナを取得します。</p>
*
* @param index 子コンテナの番号
* @return 子コンテナ
*/
public S2Container getChild(int index);
/**
* <p>コンテナを初期化します。</p>
* <p>子コンテナを持つ場合、子コンテナを全て初期化した後、自分を
* 初期化します。</p>
*/
public void init();
/**
* <p>コンテナの終了処理をおこないます。</p>
* <p>子コンテナを持つ場合、自分の終了処理を実行した後、
* 子コンテナ全ての終了処理を行います。</p>
*/
public void destroy();
/**
* <p>名前空間を取得します。</p>
*
* @return 名前空間
*/
public String getNamespace();
/**
* <p>名前空間をセットします。</p>
*
* @param namespace セットする名前空間
*/
public void setNamespace(String namespace);
/**
* <p>設定ファイルのパスを取得します。</p>
*
* @return 設定ファイルのパス
*/
public String getPath();
/**
* <p>設定ファイルのパスをセットします。</p>
*
* @param path セットする設定ファイルのパス
*/
public void setPath(String path);
/**
* <p>ルートのコンテナを取得します。</p>
*
* @return ルートのコンテナ
*/
public S2Container getRoot();
/**
* <p>ルートのコンテナをセットします。</p>
*
* @param root セットするルートのコンテナ
*/
public void setRoot(S2Container root);
}
/**
* <p>コンポーネントを管理するDIコンテナのインターフェースです。</p>
* <p>コンテナ自身も"container"という名前でコンポーネントとして
* 登録されます。</p>
*
* @author higa
*/
public interface S2Container {
/** <p>S2コンテナ自身のコンポーネント名です。</p> */
public String NAME = "container";
/**
* <p>キーを指定してコンポーネントを取得します。</p>
* <p>キーが文字列の場合、一致するコンポーネント名を持つ
* コンポーネントを取得します。<br>
* キーがクラスまたはインターフェースの場合、<br
* 「コンポーネント instanceof キー」<br>
* を満たすコンポーネントを取得します。</p>
*
* @param componentKey コンポーネントを取得するためのキー
* @return コンポーネント
* @throws ComponentNotFoundRuntimeException コンポーネントが見つからない場合
* @throws TooManyRegistrationRuntimeException 同じ名前、または同じクラスに複数のコンポーネントが登録されている場合
* @throws CyclicReferenceRuntimeException constructor injectionでコンポーネントの参照が循環している場合
*/
public Object getComponent(Object componentKey)
throws
ComponentNotFoundRuntimeException,
TooManyRegistrationRuntimeException,
CyclicReferenceRuntimeException;
/**
* <p>外部コンポーネントにセッター・インジェクション、メソッド・イン
* ジェクションを実行します。</p>
* <p>外部コンポーネントのクラスをキーとしてコンポーネント定義を
* 取得します。<br>
* instanceモードが"outer"と定義されたコンポーネントのみ有効です。
* <br>
* 「コンポーネント instanceof 外部コンポーネント.getClass()」<br>
* を満たす外部コンポーネント定義を利用します。</p>
*
* @param outerComponent 外部コンポーネント
* @throws ClassUnmatchRuntimeException 適合する外部コンポーネント定義が見つからない場合
*/
public void injectDependency(Object outerComponent)
throws ClassUnmatchRuntimeException;
/**
* <p>外部コンポーネントにセッター・インジェクション、メソッド・
* インジェクションを実行します。</p>
* <p>componentClassをキーとしてコンポーネント定義を取得します。<br>
* instanceモードが"outer"と定義されたコンポーネントのみ有効です。
* <br>
* 「コンポーネント instanceof 外部コンポーネント」<br>
* を満たす外部コンポーネント定義を利用します。</p>
*
* @param outerComponent 外部コンポーネント
* @param componentClass 外部コンポーネント定義のキー (クラス)
* @throws ClassUnmatchRuntimeException 「外部コンポーネント instanceof 取得したコンポーネントのクラス」がfalseを返す場合
*/
public void injectDependency(Object outerComponent, Class componentClass)
throws ClassUnmatchRuntimeException;
/**
* <p>外部コンポーネントにセッター・インジェクション、メソッド・イン
* ジェクションを実行します。</p>
* <p>componentClassをキーとしてコンポーネント定義を取得します。<br>
* instanceモードが"outer"と定義されたコンポーネントのみ有効です。
* <br>
* 「コンポーネント instanceof 外部コンポーネント」<br>
* を満たす外部コンポーネント定義を利用します。</p>
*
* @param outerComponent 外部コンポーネント
* @param componentName 外部コンポーネント定義のキー (名前)
* @throws ClassUnmatchRuntimeException 「外部コンポーネント instanceof 取得したコンポーネントのクラス」がfalseを返す場合
*/
public void injectDependency(Object outerComponent, String componentName)
throws ClassUnmatchRuntimeException;
/**
* <p>オブジェクトをコンポーネントとして登録します。</p>
* <p>キーはオブジェクトのクラスになります。</p>
*
* @param component コンポーネントとして登録するオブジェクト
*/
public void register(Object component);
/**
* <p>オブジェクトを名前付きコンポーネントとして登録します。</p>
*
* @param component コンポーネントとして登録するオブジェクト
* @param componentName コンポーネント名
*/
public void register(Object component, String componentName);
/**
* <p>クラスをコンポーネント定義として登録します。</p>
*
* @param componentClass コンポーネントのクラス
*/
public void register(Class componentClass);
/**
* <p>クラスを名前付きコンポーネント定義として登録します。</p>
*
* @param componentClass コンポーネントのクラス
* @param componentName コンポーネントの名前
*/
public void register(Class componentClass, String componentName);
/**
* <p>コンポーネント定義を登録します。</p>
*
* @param componentDef 登録するコンポーネント定義
*/
public void register(ComponentDef componentDef);
/**
* <p>コンポーネント定義の数を取得します。</p>
*
* @return コンポーネント定義の数
*/
public int getComponentDefSize();
/**
* <p>番号を指定してコンポーネント定義を取得します。</p>
*
* @param index 番号
* @return コンポーネント定義
*/
public ComponentDef getComponentDef(int index);
/**
* <p>指定したキーに対応するコンポーネント定義を取得します。</p>
*
* @param componentKey キー
* @return コンポーネント定義
* @throws ComponentNotFoundRuntimeException コンポーネント定義が見つからない場合
*/
public ComponentDef getComponentDef(Object componentKey)
throws ComponentNotFoundRuntimeException;
/**
* <p>指定したキーに対応するコンポーネント定義を持つどうか判定
* します。</p>
*
* @param componentKey キー
* @return 存在するならtrue
*/
public boolean hasComponentDef(Object componentKey);
/**
* <p>rootのコンテナで、pathに対応するコンテナが既にロードされて
* いるかを返します。</p>
*
* @param path パス
* @return ロードされているならtrue
*/
public boolean hasDescendant(String path);
/**
* <p>rootのコンテナで、指定したパスに対応するロード済みの
* コンテナを取得します。</p>
*
* @param path パス
* @return コンテナ
* @throws ContainerNotRegisteredRuntimeException コンテナが見つからない場合
*/
public S2Container getDescendant(String path)
throws ContainerNotRegisteredRuntimeException;
/**
* <p>rootのコンテナに、ロード済みのコンテナを登録します。</p>
*
* @param descendant ロード済みのコンテナ
*/
public void registerDescendant(S2Container descendant);
/**
* <p>他のコンテナを子コンテナとしてincludeします。</p>
*
* @param child includeする子コンテナ
*/
public void include(S2Container child);
/**
* <p>子コンテナの数を取得します。</p>
*
* @return 子コンテナの数
*/
public int getChildSize();
/**
* <p>番号を指定して子コンテナを取得します。</p>
*
* @param index 子コンテナの番号
* @return 子コンテナ
*/
public S2Container getChild(int index);
/**
* <p>コンテナを初期化します。</p>
* <p>子コンテナを持つ場合、子コンテナを全て初期化した後、自分を
* 初期化します。</p>
*/
public void init();
/**
* <p>コンテナの終了処理をおこないます。</p>
* <p>子コンテナを持つ場合、自分の終了処理を実行した後、
* 子コンテナ全ての終了処理を行います。</p>
*/
public void destroy();
/**
* <p>名前空間を取得します。</p>
*
* @return 名前空間
*/
public String getNamespace();
/**
* <p>名前空間をセットします。</p>
*
* @param namespace セットする名前空間
*/
public void setNamespace(String namespace);
/**
* <p>設定ファイルのパスを取得します。</p>
*
* @return 設定ファイルのパス
*/
public String getPath();
/**
* <p>設定ファイルのパスをセットします。</p>
*
* @param path セットする設定ファイルのパス
*/
public void setPath(String path);
/**
* <p>ルートのコンテナを取得します。</p>
*
* @return ルートのコンテナ
*/
public S2Container getRoot();
/**
* <p>ルートのコンテナをセットします。</p>
*
* @param root セットするルートのコンテナ
*/
public void setRoot(S2Container root);
}
EOF