[mayaa-user:53] Re: 独自のプロセッサー

suga ko.suga @ gmail.com
2005年 11月 30日 (水) 10:37:53 JST


suga です。

05/11/30 に 小野 心<shin @ hotcore.jp> さんは書きました:
> いつも、教えて君で申し訳御座いません。
> mayaaのポリシーに沿わないかも知れないのですが、
> 独自にプロセッサーを作成して利用したい場合には、
> どの様な定義が必要なのでしょうか?

独自プロセッサを作ることはポリシーに反しません。
発展的な使い方ではありますけど。


> /org/seasar/mayaa/impl/engine/processor/mayaa.mld
>
> と同等なファイルを作成する必要は有ると思うので
> すが、
>
> org.seasar.mayaa.provider.ServiceProvider
>
> の時と同じように、META-INFディレクトリーに入れて
> おけば認識されるのでしょうか?

MLD ファイルを探すロジックは、TLD ファイルと同じロジックです。
したがって、

  WEB-INF/lib
  jar内 META-INF/
  classes/以下全ディレクトリ

などに置けば有効になります。



発展的な使い方ですが、HTML コンポーネントも MLD で定義することによって
プロセッサになります。
# このあたり、Web に載せるのは都合によりしばらく先になります。すみません。
# 正月明けまでにはひと通り形になっている予定です。

WEB-INF/lib/sample.mld として次の内容を定義したとします。

<library uri="http://mayaa.seasar.org/sample">
    <processor name="hello"
            class="org.seasar.mayaa.impl.engine.processor.InsertProcessor">
        <description>sample component</description>
        <property name="path" final="/sample_component.html" />
        <property name="name" final="comp1" />
    </processor>
</library>

# final はプロパティに変更不可な値を定義します。


このとき mayaa ファイルで下記のように書くことで、HTML コンポーネントの
/sample_component.html (name="comp1") がプロセッサとして動作します。

<m:mayaa xmlns:m="http://mayaa.seasar.org"
        xmlns:s="http://mayaa.seasar.org/sample">
    <s:hello m:id="message" />
</m:mayaa>


これらをまとめて jar ファイルを作り WEB-INF/lib に置けば、
再利用しやすい形でコンポーネント群をまとめられます。

xxxx.jar
    +- META-INF/
        +- sample.mld
        +- sample_component.html
        +- sample_component.mayaa


もちろん .mld ファイルの prosessor - class に独自プロセッサを指定すれば、
HTML コンポーネントではなく Java でできたプロセッサを使えます。

--
suga ( ko.suga @ gmail.com )


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