diff options
author | Tomas Ljunggren <tomas.ljunggren@tieto.com> | 2012-01-09 18:37:34 +0100 |
---|---|---|
committer | Tomas Ljunggren <tomas.ljunggren@tieto.com> | 2012-01-09 18:45:54 +0100 |
commit | f1d4b8b86b8914689fee6b145c71290bd01677ca (patch) | |
tree | 5a5893922b5eafb963f938e03004c93cb7da5a25 | |
parent | cdbe958a25a5afa61bcf1912bdaddc884ff3a96a (diff) |
Added a check to prevent NumberFormatException
Since some parameters like review category will not be available
at all time the boolean expression evaluator will evaluate
expression containing these as false.
Task-number: QTQAINFRA-220
Change-Id: Ic0471e52496c3ad74f51321d8a3bc721cdf1aaa1
Reviewed-by: Tomas Ljunggren <tomas.ljunggren@tieto.com>
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/util/BooleanExpression.java | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/util/BooleanExpression.java b/gerrit-server/src/main/java/com/google/gerrit/server/util/BooleanExpression.java index cee3b1cc6d..8b986cdb3c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/util/BooleanExpression.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/util/BooleanExpression.java @@ -86,22 +86,20 @@ public class BooleanExpression { stack[spos++] = Boolean.toString(!a.equals(b)); } else { // Only integer numbers can be compared - if (!isNumber(a)) { - throw new IllegalArgumentException(a + " is not a integer number"); - } - if (!isNumber(b)) { - throw new IllegalArgumentException(b + " is not a integer number"); - } - int ai = Integer.parseInt(a); - int bi = Integer.parseInt(b); - if (o == O_GT) { - stack[spos++] = Boolean.toString(ai > bi); - } else if (o == O_GTOREQUAL) { - stack[spos++] = Boolean.toString(ai >= bi); - } else if (o == O_LT) { - stack[spos++] = Boolean.toString(ai < bi); - } else if (o == O_LTOREQUAL) { - stack[spos++] = Boolean.toString(ai <= bi); + if (!isNumber(a) || !isNumber(b)) { + stack[spos++] = "false"; + } else { + int ai = Integer.parseInt(a); + int bi = Integer.parseInt(b); + if (o == O_GT) { + stack[spos++] = Boolean.toString(ai > bi); + } else if (o == O_GTOREQUAL) { + stack[spos++] = Boolean.toString(ai >= bi); + } else if (o == O_LT) { + stack[spos++] = Boolean.toString(ai < bi); + } else if (o == O_LTOREQUAL) { + stack[spos++] = Boolean.toString(ai <= bi); + } } } } else if (o == O_TRUE) { |