I know I believe in nothing but it is my sweet nothing.:2007年07月13日分

2007/07/13(Fri)

[BTS] Scarab-0.21

昨日のQuickSearch対策のパッチがScarabのMLにpostされてるのをハッケソ。
http://osdir.com/ml/java.scarab.user/2007-01/msg00014.html
まあこれで動くようになるのは判るけど、ずいぶんなコードですなぁ。
せめてjava.net.URLDecoderは使おう。

このバグはあくまでもTurbine側で対策するのが筋。
まあ100歩譲ってScarab側で対処するのを認めたとしても

--- src/java/org/tigris/scarab/actions/Search.java.orig	2007-07-12 22:59:44.000000000 +0900
+++ src/java/org/tigris/scarab/actions/Search.java	2007-07-12 23:50:52.000000000 +0900
@@ -654,6 +654,11 @@
                 }
                 else
                 {
+                    /* XXX: FIXME */
+                    searchString = new String(
+                        searchString.getBytes("ISO-8859-1"),
+                        params.getCharacterEncoding());
+
                     Module module = user.getCurrentModule();
                     MITList mitList = MITListManager.getSingleModuleAllIssueTypesList(module,user);
                     user.setCurrentMITList(mitList); 

のように

  1. 壊れたStringをbyte arrayに戻す
  2. 正しい文字コードを指定した上でbyte array→Stringに再変換

としたほうが断然スマート。
#まあ、Turbine側を直したらこっちもこの変更をbackoutする必要があるけどね。。。

んでQuickSearchなんだけど、上記のkludgeで無理矢理動くようにしても
LuceneのSpecial Characterである

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

やANDやNOTといった予約語をちゃんと消毒してなさげ、イケてないなぁ。