-Tapestry and HiveMind

今のBasePageクラス(TapestryのPageの元)はこんなコードですが、

public class BasePage extends AbstractPage
{
    // (略)

    public IMarkupWriter getResponseWriter(OutputStream out)
    {
        return new HTMLWriter(out, getOutputEncoding());
    }
}

たぶん下記のように変更されて、コンテナにはIMarkupWriterとしてHTMLWrite・WMLWriter(共に既存)やPDFWriterなんかを登録する。

public class BasePage extends AbstractPage
{
    // (略)
  private IMarkupWriter writer;
    public IMarkupWriter getWriter(){return writer;}
    public setWriter(IMarkupWriter pWriter){writer = pWriter;}
}

from うえやんの日記2004/03/22
なるほど、と思いMLを「HiveMind」でgrepするといくらか議論がありました。流し読みですが、まずスペックXMLのレベルで行くと、<service>と<extention>エレメントを廃止して、この機能にHiveMindを入れるみたい。<service>をいじるとなるとページオブジェクトやコンポーネントなどのJavaで書かれるパーツは全部丸ごとHiveMindに行くかな?うえやんさんの予想の延長で、いま私が困ってるIPageLoaderやIBeanProviderなどせっかくインターフェイスで受けているのにハードコードで生成していたり、エンジンのファクトリメソッドで作ってるものなど全てがHiveMindに行ってくれたら、そのコンテナとTapestryとの密着具合によっては丸ごとごっそりS2Containerでもいけるかもしれないし、Seasar2プラグイン群をHiveMindに載せるほうが合理的かもしれない。このへん、まったく3.1のロードマップでしかなく、今は3.0の正式リリースも終わってないのと、3.1というバージョン何時?(来年?)ということもありますが、たぶん時流も考えて、コミッター達は(IoCコンテナである)HiveMindをいれたいんでしょう、きっと。MLの風速が速いのであまり見ていなかったのですが、ちょっとこの辺はウォッチしておいてTapestryとHiveMindを密結合しないように要望するかな。Seasar2Tapestryと使いたいのはまだ少数でも、JBoss-AOPとかSpringFrameworkとかすでに有力なのがいろいろあるから、HiveMindだけではもっていかないと思うのですけどね〜。HiveMindがJakarta Commonsになったから、密結合でいっちゃうのかな?
また、うえやんさんの予想をさらに過激にすると、

public class BasePage extends AbstractPage {
  public abstract IMarkupWriter getWriter();
}

ですね。Type3的なアプローチは、ページオブジェクトの構成要素が多いので無いかな?