ENGLISH

UrlRewriteFilterのIssue120を修正してみた

公開日 : 2013-10-26
更新日 : $Date: 2013-11-16 23:36:15 +0900 (Sat, 16 Nov 2013) $


概要

UrlRewriteFilterIssue120 によると、 関数が連続した形ではうまく動作しないようです。そこでこれを修正してみました。 パッチは本家に送ったのですがここでも公開してみます。この件でお困りの方、どうでしょうか。

配布物

修正を行って作成したurlrewritefilter本体
urlrewritefilter-4.0.5-SNAPSHOT.jar
提供したパッチそのもの
patch-Issue120-fixed.txt

patch-Issue120-fixed.txt は、ソースの修正後 svn diff > patch.txt などと実行して作成しました。 興味のある方はurlrewritefilter本体のソースを入手し、このパッチを適用すると変更内容が確認できます。 本体のソースについては以下のURLをご参照下さい。
https://code.google.com/p/urlrewritefilter/source/checkout

そもそもUrlRewriteFilterとはなにか。

UrlRewriteFilter は外向けに綺麗なURLを公開し、 内側では異なるURLへのアクセスとして処理させることを可能にするライブラリです。 外に提供しているURLを内側向けのURLへリクエストのURLを書き換えてアプリケーションに引き渡します。 外向けには自由に設計された綺麗なURLを提供し、内部では自由度の高くないフレームワークの設計に沿ったURLをそのまま使う事ができます。 例えば、外向けには以下の様なURLを提示したいとします。

http://example.org/repo/data/123/なんとかかんとか

しかし、フレームワークは以下の様なURLを基本的な形として持っているとします。

http://example.org/repo/data/get.do&id=123

このような場合UrlRewriteFilterが役に立ちます。UrlRewriteFilterはこのような変換を行うのです。

この修正で何ができるようになったか。

Issue120によると、<to>要素内の 関数が複数連続していると、 正しく処理できないという障害が報告されています。 つまり

   /test/${upper:$1}/${upper:$1}.html

のような指定は括弧の開始と終了が正しく解釈されません。(関数は設定されているが、実際は外側の${ } で1個の関数だけだと解釈される) しかしこの修正でこの障害が解決されます。関数が複数連続で使われていても入れ子になっていても正しく動作します。

第四回 #渋谷javaでの発表

本パッチについて、第四回 #渋谷javaにて発表を行いました。その発表資料です。

UrlRewriteFilterに手を入れてみた from Kazuro Fukuhara

creative commons BY
この文書は 表示 2.1 日本 (CC BY 2.1) によってライセンスされます。

トップページに戻る