[[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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS