summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Ljunggren <tomas.ljunggren@tieto.com>2012-01-09 18:37:34 +0100
committerTomas Ljunggren <tomas.ljunggren@tieto.com>2012-01-09 18:45:54 +0100
commitf1d4b8b86b8914689fee6b145c71290bd01677ca (patch)
tree5a5893922b5eafb963f938e03004c93cb7da5a25
parentcdbe958a25a5afa61bcf1912bdaddc884ff3a96a (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.java30
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) {