Open fujithuro opened 2 months ago
一覧検索の費目指定で、Intの範囲を超える値(たとえば2147483648)を指定した場合、レスポンスのエラーメッセージで、問題点に気づきにくい。
2147483648
エラーメッセージは下記の通りで、「Listを期待していたが''1,2147483648,8''だった」のようになっている。 正確に言えば「List<Int>を期待していたが〜」なのだが、ジェネリクスは残っていないのでこういうメッセージになっている。 Listではあるので、一見して問題に気づきにくい。
List<Int>
Argument type mismatch: Invalid value for parameter 'types'. Expected List, but got '1,2147483648,8'.
ちなみにレスポンスなどの生成を行っているのはMethodArgumentTypeMismatchExceptionの例外ハンドラー。
MethodArgumentTypeMismatchException
大前提として、費目にIntの範囲を超える数値が設定されるケースはほとんど考えられないため、対応の優先度はかなり低い。
ただ、簡単に対応できるならどこかで対応したいので、忘れないようにIssueを残しておく。 ちなみにジェネリクスに@Max(Int.MAX_VALUE.toLong())を付与するのは試してみたが、機能してくれなかった。
@Max(Int.MAX_VALUE.toLong())
返すメッセージを「費目コードがおかしい」などに変える方向性でもいいのだが、スローされている例外は型の不一致(MethodArgumentTypeMismatchException)なので、単純には対応できない。
現状と課題
一覧検索の費目指定で、Intの範囲を超える値(たとえば
2147483648
)を指定した場合、レスポンスのエラーメッセージで、問題点に気づきにくい。エラーメッセージは下記の通りで、「Listを期待していたが''1,2147483648,8''だった」のようになっている。 正確に言えば「
List<Int>
を期待していたが〜」なのだが、ジェネリクスは残っていないのでこういうメッセージになっている。 Listではあるので、一見して問題に気づきにくい。ちなみにレスポンスなどの生成を行っているのは
MethodArgumentTypeMismatchException
の例外ハンドラー。対応方針
大前提として、費目にIntの範囲を超える数値が設定されるケースはほとんど考えられないため、対応の優先度はかなり低い。
ただ、簡単に対応できるならどこかで対応したいので、忘れないようにIssueを残しておく。 ちなみにジェネリクスに
@Max(Int.MAX_VALUE.toLong())
を付与するのは試してみたが、機能してくれなかった。返すメッセージを「費目コードがおかしい」などに変える方向性でもいいのだが、スローされている例外は型の不一致(
MethodArgumentTypeMismatchException
)なので、単純には対応できない。