ポートレットフィルタを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 にもこの辺のことは書いてあるかと思うが、忘れた・・・)。
カテゴリー: Java
Ctrl-C を捕まえる
SinalHander で INT を捕まえる。
https://lists.xcf.berkeley.edu/lists/advanced-java/2000-February/006441.html
MAREVOLユーティリティ
個人的に今作っているツール群を公開しておこうと思い、SourceForge.jpに申請してみた。あとは、許可されるのを待つのみ。許可されることを祈る。