[seasar-javadoc:786] Re: PathResolver

Koichi Kobayashi koichik @ improvement.jp
2007年 1月 29日 (月) 06:00:09 JST


小林 (koichik) です.

Date:    Sun, 28 Jan 2007 13:43:34 +0900
From:    "Jundo Ishikawa" <jundo.ishikawa @ gmail.com>
To:      seasar-javadoc @ ml.seasar.org
Subject: [seasar-javadoc:784] Re: PathResolver

>  お疲れ様です。数日悩んでみましたが、やはり具体的な実装が無いので、
> 抽象パスと物理パスの説明が難しいです(T-T) 現状のSimplePathResolver
> は、抽象パス=物理パスという実装ですし。
> 
> 物理パス=そのリソースを表すクラスパス上での具体的なパス。
> 抽象パス=そのリソースを表すパスリゾルバの実装が想定する任意の形式のパス。

抽象度の低い表現ですが,こんな感じ.

抽象パス=<include> 要素の path 属性等で指定されるパス名
物理パス=ResourceResolver に渡されるパス名

>  自分の中では、どうしても相対パス、絶対パスの関係を抜け出せません。
> 抽象パス、物理パスの関係で相対パス、絶対パスの関係じゃないものって、
> 例えばどのようなものがあるのでしょうか。

実は,SimplePathResolver では相対パス・絶対パスの関係では
ありません.(^^;
例えば foo.dicon が hoge/bar.dicon をインクルードして,
hoge/bar.dicon が baz.dicon をインクルードしたとき,
baz.dicon が hoge/baz.dicon として解釈されるなら,
抽象パス (baz.dicon) を相対パスとして,物理パス
(hoge/baz.dicon) に変換(解決)したことになりますが,
SimplePathResolver はそんなことしてなくて,抽象パス
baz.dicon は物理パスでも baz.dicon のままです.

なので,抽象パスを相対パスとして解釈する PathResolver は
現在はなく,必要なら自前で作ることができるという程度です.
他には,抽象パスを ServletContext#getRealPath(String) で
変換するような PathResolver を作ることもできなくはありません.

ともあれ (JW),抽象パスと物理パスがどのような関係に
なるかは,PathResolver の実装次第です.
なので,抽象パスと物理パスの説明としては,やっぱり

抽象パス=<include> 要素の path 属性等で指定されるパス名
物理パス=ResourceResolver に渡されるパス名

って感じでいいんじゃないかと.
あ,今更だけど,「抽象」と「物理」って揃ってないような
気のせいがしてきました.
論理パス・物理パスの方がいいかなぁ.
まぁ,こだわりませんが.


-- 
<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 メーリングリストの案内