[Seasar-user:21659] Re: S2JDBC の AutoSelect への includes() と excludes() 実装

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2013年 7月 14日 (日) 08:11:18 JST


小林 (koichik) です.

お疲れ様です。

startsWith() の使い方そのものは変わってないんですね。
大丈夫なのかなー?

気になるのは、たとえば aaa.bbb.ccc.ddd という
プロパティがあるとして、

"aaa.bbb.ccc.ddd".startsWith("aaa.")
"aaa.bbb.ccc.ddd".startsWith("aaa.bbb.")
"aaa.bbb.ccc.ddd".startsWith("aaa.bbb.ccc.")

は全部 true になるわけです。
そして includes/excludes は HashSet なので、
どの順番で比較されるかは制御できてないわけです。
本来なら一番長い "aaa.bbb.ccc." の指定が有効に
なってほしいのに、より短い方で判定されてしまう
ケースがあるんじゃないか? たとえば

.includes("aaa")
.excludes("aaa.bbb")
.includes("aaa.bbb.ccc")

とあった場合、"aaa.bbb.ccc.ddd" が確実に
includes と判断されるかというと、されないのでは
ないかと。

なので、先に書いたように、aaa.bbb.ccc.ddd の
方を基準として、

aaa.bbb.ccc.ddd
aaa.bbb.ccc
aaa.bbb
aaa

の順番で includes/excludes に含まれてるか
チェックする方が確実なんじゃないかと思うのですが
どうでしょう?


On Sun, 14 Jul 2013 07:40:56 +0900, Jun Futagawa <jfut @ integ.jp> wrote:

> ふたがわ (jfut) です。
> 
> On 2013/07/14 7:30, Koichi Kobayashi wrote:
> 
> > パッチが両方ともドキュメントの方でした。(^^;
> 
> ごめんなさい、最後にドキュメントをちょこっと直して
> 保存する時に保存先を間違えました。
> 両方とも最新のものを添付して送ります。
> 
> > ドキュメント、よく見たら includes() と excludes()
> > それぞれに注意点があったのですね。
> > これなら自分が書いた部分はいらないかもです。
> > 失礼しました。
> 
> いえいえ、includes() の方に excludes() と一緒に使う
> コード例を追加したので、今は両方に書いてあった方が
> 良いかなと思います。
> 
> -- 
> Jun Futagawa


-- 
{
  name: "Koichi Kobayashi",
  mail: "koichik @ improvement.jp",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
}



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