[seasar-javadoc:421] Re: S2Container
Koichi Kobayashi
koichik @ improvement.jp
2006年 7月 21日 (金) 02:02:10 JST
小林 (koichik) です.
Date: Thu, 20 Jul 2006 09:36:51 +0900
From: "Makoto Yonezawa" <stratosphire @ gmail.com>
To: seasar-javadoc @ ml.seasar.org
Subject: [seasar-javadoc:416] Re: S2Container
> > どうせならホンモノのデスマにしちゃいましょう.
> > デスマ職人をお貸ししまっせ. (^^;
>
> やっと収束してきたので、大丈夫です(^^;
遠慮なさらずに♪
> クラスコメント書いてなかったんですね
> ・・・びっくりです(w
(^^;;;;;
クラスコメントはまだまだ寂しいですね.
S2Container は S2 の顔みたいなクラスというか
インタフェースなので,それなりに充実した Javadoc に
なるといいなぁ♪
> それと、追加されていたメソッド
>
> findAllComponents
> findLocalComponents
> findAllComponentDefs
> findLocalComponentDefs
>
> のコメントを書きましたが・・・まずいですorz
> なんて実装の方もみたのですが、なんてかいていいのやら。
> で、こんな感じになってしまいました。
これはちゃんと説明しないと無理だろなぁと思ってました (笑).
実は追加された奴らは割と簡単で,
・findAllComponents() / findAllComponentDefs()
メソッドが呼ばれたコンテナの子孫を含む全コンテナから
キーにマッチする全てのコンポーネント (定義) の配列を返す.
・fincLocalComponents() / findLocalComponentDefs()
メソッドが呼ばれたコンテナのみから
キーにマッチする全てのコンポーネント (定義) の配列を返す.
分かりにくいのはむしろ,以前からある findComponents() /
findComponentDefs() だと思います.
これらは説明するのが難しいのですが...
メソッドが呼ばれたコンテナから近い順にキーにマッチする
コンポーネントを探し,最初に見つかったコンテナに登録
されている全てのコンポーネント (定義) の配列を返す.
とでも言えばいいのかなぁ.
「近い順」というのはコンポーネントの検索順と同じで,
1. 自分自身
2. 最初にインクルードしているコンテナ
2.1 2.が最初にインクルードしているコンテナ
2.1.1 2.1 が最初にインクルードしているコンテナ
...
2.2 2.が 2 番目にインクルードしているコンテナ
2.2.1 2.2 が最初にインクルードしているコンテナ
...
3. 2 番目にインクルードしているコンテナ
3.1 3.が最初にインクルードしているコンテナ
3.1.1 3.1 が最初にインクルードしているコンテナ
...
3.2 3.が 2 番目にインクルードしているコンテナ
3.2.1 3.2 が最初にインクルードしているコンテナ
...
4....
ということになります.
findComponents() / findComponentDefs() が返すのは
一つのコンテナに登録されているコンポーネントだけであり,
複数のコンテナに登録されているコンポーネントが一緒になって
返されることはありません.
例えばコンテナ A,B,C があり,A は B,C を
インクルードしていて,B と C にインタフェース
Foo を実装しているコンポーネントが登録されている
場合,
A.findComponents(Foo.class)
-> B に登録されている Foo のみ
A.findAllComponents(Foo.class)
-> B と C に登録されている Foo
A.findLocalComponents(Foo.class)
-> 空の配列
という結果になります.
findComponents() / findComponentDefs() の動きは,
getComponent() に対応しています.
getComponent() が TooMany〜 にならずにコンポーネントを
返す場合,findComponents() は要素数が 1 の配列を返します.
getComponent() が TooMany〜 になる場合は,その時の
TooManyRegistrationComponentDef#getComponentDefs() と
同じ長さの配列を返します.
と,こんな具合です.
うまく Javadoc にまとめてください.(^^;
んで,肝心の Javadoc の方はまだ見れてません...
明日以降に拝見します.ごめんなさい.m(__)m
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"koichik @ improvement.jp"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
seasar-javadoc メーリングリストの案内