When timeoutString is "-2", DefaultTransactionDefinition#setTimeout method will throw IllegalArgumentException(it extends RuntimeException), we will get the error message: Invalid timeoutString value "-2" - cannot parse into int.
But actually "-2" can parse into int.
In other words, the error message cannot parse into int is just right for Integer#parseInt, so I change RuntimeException to NumberFormatException. So:
- When timeoutString is "1", just ok.
- When timeoutString is "-2", we will get: Timeout must be a positive integer or TIMEOUT_DEFAULT.
- When timeoutString is "foo", we will get: Invalid timeoutString value "foo" - cannot parse into int.
try {
setTimeout(Integer.parseInt(timeoutString));
}
catch (RuntimeException ex) {
throw new IllegalArgumentException(
"Invalid timeoutString value \"" + timeoutString + "\" - cannot parse into int");
}
Comment From: remeio
Thanks, I agree with you.
Comment From: simonbasle
(marking as type: bug on @jhoeller suggestion, albeit a mild one: the original exception should percolate through to the user one way or another but here it is entirely swallowed / masked)