[seasar-javadoc:182] Re: ArgDef

Makoto Yonezawa stratosphire @ gmail.com
2006年 6月 5日 (月) 12:48:49 JST


米澤です。
すこしとまってしまいしました・・・。

今日はサボって、喫茶店でSeasarDocumentに専念です(w
で、いろいろかいてたらやっぱ、あまり書かないほうが
分かりやすい気がして、このような感じになりました。

すいませんが、つっこみお願いします。

06/06/01 に Koichi Kobayashi<koichik @ improvement.jp> さんは書きました:
> 小林 (koichik) です.
>
> Date:    Thu, 1 Jun 2006 00:56:30 +0900
> From:    "Makoto Yonezawa" <stratosphire @ gmail.com>
> To:      seasar-javadoc @ ml.seasar.org
> Subject: [seasar-javadoc:142] Re: ArgDef
>
> > まだ、このインターフェース全体概要がかけてないっというか、
> > どう説明したらいいかまだ分かっていないです。
>
> 苦戦してますね.(^^;
>
> まず,このインタフェースが何を表現しているかを
> 考えましょう.
> 名前が ArgDef ですから,Arg の定義です.
> そして Arg は Argument の略で,これは引数を意味する場合が
> 多いです.
> 何の引数かというと,
>
> <component>
>  <arg>〜</arg>
> </component>
>
> の場合はコンストラクタの引数であり,
>
> <component>
>  <initMethod name="">
>    <arg>〜</arg>
>  </initMethod>
> </component>
>
> の場合はメソッドの引数です.
>
> そんなわけで (どんなわけで?),Javadoc の出だしは
>
>  * コンポーネントのコンストラクタまたはメソッドに与えられる引数の定義です。
>
> あたりでどうでしょう?
> ちょっと一文が長い気のせいがしますが.
>
>
> getValue() について
>
> >      * オブジェクトグラフから取得したOGNL式を評価した値を取得します。
>
> かなり微妙.
> 「オブジェクトグラフから取得した」は結果としてそうなる
> 場合もありますが,ここでは不適切です.
> 理由の一つは必ずしもオブジェクトグラフから取得されるとは
> 限らないため.
> 例えば
>
> <arg>1</arg>
>
> この場合は 1 というリテラルが評価されるだけで終わりです.
> もう一つは「オブジェクトグラフ」がどこに存在するどんな
> オブジェクトグラフなのかが曖昧なことです.
> 「メモリから取得した」くらい曖昧です.
>
> それから,get〜() は「〜を返します」にしましょう.
>
> では,getValue() は何を返すのでしょうか?
> ArgDef というインタフェースが表現するのは引数で,
> getValue() はその値なわけですから,
>
>  * この引数定義の値を返します。
>
> といったところでどうでしょう?
> 「この」というのは ArgDef を実装したクラスのインスタンスのこと.
> setValue() も同様で.
>
>
> getContainer() について.
>
>     * オブジェクトグラフからS2コンテナを取得します。
>
> これも違います.
> ここで返ってくる S2コンテナとはどういうものでしょうか?
>
> <component name="foo" class="..."/>
>
> <component name="bar">
>  <arg>foo</arg>
> </component>
>
> とあった場合,bar のコンストラクタに与えられる引数は
> foo という式を評価した結果で,明らかに foo という名前を
> 付けられたコンポーネントになるはずです.
>
> この foo はどこから入手するのでしょうか?
> もちろん S2 コンテナです.
>
> どの S2 コンテナでしょうか?
> <arg> を定義している <component> を所有しているコンテナです.
> このコンテナが引数を評価するコンテキストとなります.
> そのコンテナを返すのが getContainer() です.
>
> そんなわけで (どんなわけで?),
>
>  * この引数を評価するコンテキストとなるS2コンテナを返します。
>
> そしてこのコンテナを外から与えてもらうためのメソッドが
> setContainer().
>
>
> getExpression()
>
>     * オブジェクトグラフからOGNL式を取得します。
>
> まず,Expression は OGNL 式とは限りません.
> Expression が OgnlExpression という実装クラスの
> インスタンスなら OGNL 式ですが,それ以外の Expression も
> あり得ます.
>
> 次に,Expression は ArgDef の単なるプロパティであり,
> どこかから探し出して返してくるわけではありません.
> 少し ArgDefImpl の実装を見るといいかも.
>
>
> ともあれ (JW),最初からスイスイとはいかないのが
> 普通だと思います.
> 頑張って♪
>
>
> --
> <signature>
>    <name>Koichi Kobayashi</name>
>    <e-mail>koichik @ improvement.jp</e-mail>
> </signature>
>
> _______________________________________________
> seasar-javadoc mailing list
> seasar-javadoc @ ml.seasar.org
> https://www.seasar.org/mailman/listinfo/seasar-javadoc
>


-- 
-----------------------------
http://d.hatena.ne.jp/vestige/
http://www001.upp.so-net.ne.jp/vestige/
-------------- next part --------------
/*
 * Copyright 2004-2006 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;

/**
 * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
 * 
 * @author higa
 */
public interface ArgDef extends MetaDefAware {

    /**
     * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * @return value 
     */
    public Object getValue();

    /**
     * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * @param value - 〓〓〓
     */
    public void setValue(Object value);

    /**
     * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓S2〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * @return S2Container
     */
    public S2Container getContainer();

    /**
     * S2〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * @param container - S2〓〓〓〓〓〓〓〓〓〓〓〓
     */
    public void setContainer(S2Container container);
    
    /**
     * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * @return Expression
     */
    public Expression getExpression();

    /**
     * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * @param expression - 〓〓〓
     */
    public void setExpression(Expression expression);

    /**
     * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓<code>true</code>〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * @return 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓<code>true</code>〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓<code>null</code>〓〓〓〓〓〓〓〓〓〓〓〓<code>false</code>〓〓〓
     */
    public boolean isValueGettable();

    /**
     * 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     * 
     * @param componentDef - 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
     */
    public void setChildComponentDef(ComponentDef componentDef);

}


seasar-javadoc メーリングリストの案内