[Seasar-user:2101] Re: injectDependencyについて

Koichi Kobayashi koichik
2005年 6月 6日 (月) 00:40:10 JST


小林 (koichik) です.

On Fri, 03 Jun 2005 10:29:31 +0900
Masataka Kurihara <[E-MAIL ADDRESS DELETED]> wrote:

>   やっぱりこれはダメですね。FactoryもBuilderも、XML特化ではないから、
> InputSourceはいかんと思います。これらはInputStreamでやっておかないと。

S2ContainerFactory のインタフェースとして考えるなら,
InputStream だけではだめですね.
Factory が Builder を選択する材料が無くなっちゃいます.

public S2Container create(String path, InputStream is)

ならいけますが,前にも書いたように S2ContainerFactory および
SingletonS2ContainerFactory にはあまりメソッド増やしたくないと
考えているので,新たに次のようなインタフェースを追加するのは
いかがでしょうか?

public interface ResourceResolver {
    void setServletContext(ServletContext servletContext);
    InputStream getInputStream(String path);
}

もうひとつ.

public interface ResourceResolverAware {
    void setResourceResolver(ResourceResolver resourceResolver);
}

後者は Builder が実装することを意図しています.
もちろん XmlS2ContainerBuilder はこれを実装します.
将来 S2GroovyBuilder がこれを実装してくれることも期待.
# S2ContainerBuilder に setResourceResolver() を追加しても
# いいのかもしれませんが...
# 既存のインタフェースは変更しない方を選択しました.

そして s2containerbuilder.properties は

ext=buider-class:resolver-class

と記述できるようにします (resolver-class はオプション).
そして,builder-class が ResourceResolverAware を実装していれば,
resolver-class をインスタンス化して設定します.

resolver-class が指定されていなければ DefaultResourceResolver が
使われます.こいつは従来同様クラスパスからリソースを探します.
WEB-INF からの検索は DefaultResourceResolver でやるか,それとも
WebResourceResolver とかを別途用意した方がいいか思案中.

感想・ご意見・要望があればお願いします.



-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




Seasar-user メーリングリストの案内