ポートレットフィルタをApacheへ渡すためにいくつか足りない部分について、検討するために、GenericPortletについて、見てみる。GenericPortlet は、Portlet と PortletConfig をインターフェースとして持つ。init では、渡されたPortletConfigをフィールドのprivate PortletConfig config に渡して、init() を呼ぶだけ。init()は各ポートレットの実装で上書きされたものを呼び出す。GenericPortlet は PortletConfig インターフェースを持っているので、そのconfigの各メソッドの代理をする。というわけで、単純に右から左に渡すだけで、PortletConfigインターフェースの対応は完了。そんで、processActionは各実装で上書きされるとして(上書きしないと、PortletException(“processAction method not implemented”)を投げてくる)、renderについては、response.setTitle(getTitle(request))をした後に、doDispatchで、doViewとかに振り分ける。ここでの、getTitle(RenderRequest request)では、portlet.xmlで指定されたリソースバンドルのjavax.portlet.titleから取ってきて渡すだけ。doDispatchについては、request.getWindowState()でポートレットのウィンドウ状態を取得して、WindowState.MINIMIZED以外の時にdoViewなどの各renderを実行する。WindowState.MINIMIZEDのときは、何もせずに終了。各renderの振り分けは、request.getPortletMode()でモードを取得して、PortletMode.VIEW、PortletMode.EDIT、PortletMode.HELPのときに対象のdo???を実行。それ以外のモードでは、PortletException(“unknown portlet mode: ” + mode)を投げてくる(つまり、独自のモードをポータルで実装したときには、doDispatchを上書きして、新たなGenericPortletみたいのを作っておかないと、表示できない感じがする。うーん、JSR 168 にもこの辺のことは書いてあるかと思うが、忘れた・・・)。
投稿者: shinsuke
marevol.com
以前に、HelloWorldのサンプルポートレットがmarevol.comからダウンロードできない問題を指摘頂いたのですが、まだ、対応できず・・・。LanyaをWebContentsPortletで変換しているときに、tar.gzなどをURL書き換え対象から外さないといけないと思いつつ、Jetplume でシステムを汎用化させたいと考えていたりすると、そこまで手が回っていない・・・。うーん、その前に、12月でドメインの有効期限が切れるから、更新しないといかん・・・。もう、かれこれ、5年ほど、保持しているな。今度は何年契約にするべきか。やることたまってる・・・。
Portal Application Laboratory
に参加することになりました。目的は、便利なポートレットを作るといった感じ。私はそこでブログポートレットの作成を目指します。興味のある方はどうぞ。っといっても、まだ、始まったばかりで何もないですが。