sdeboy 2003/12/10 22:30:56 Modified: src/java/org/apache/log4j/chainsaw/rule NotRule.java ExistsRule.java InequalityRule.java LikeRule.java PartialTextMatchRule.java Log: Added assertions to rules to prevent problems during parsing of the stack (used by expressionrule). Note that the 'focus on' textfield's tooltip displays the expression's error. Revision Changes Path 1.5 +10 -3 jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/NotRule.java Index: NotRule.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/NotRule.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- NotRule.java 10 Nov 2003 02:15:24 -0000 1.4 +++ NotRule.java 11 Dec 2003 06:30:56 -0000 1.5 @@ -70,9 +70,16 @@ } public static Rule getRule(Stack stack) { - Rule p1 = (Rule) stack.pop(); - - return new NotRule(p1); + if (stack.size() < 1) { + throw new IllegalArgumentException("Invalid NOT rule - expected one rule but provided " + stack.size()); + } + Object o1 = stack.pop(); + if (o1 instanceof Rule) { + Rule p1 = (Rule)o1; + return new NotRule(p1); + } else { + throw new IllegalArgumentException("Invalid NOT rule: - expected rule but received " + o1); + } } public boolean evaluate(LoggingEvent event) { 1.2 +4 -0 jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ExistsRule.java Index: ExistsRule.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ExistsRule.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ExistsRule.java 10 Nov 2003 02:15:24 -0000 1.1 +++ ExistsRule.java 11 Dec 2003 06:30:56 -0000 1.2 @@ -72,6 +72,10 @@ } public static Rule getRule(Stack stack) { + if (stack.size() < 1) { + throw new IllegalArgumentException("Invalid EXISTS rule - expected one rule but provided " + stack.size()); + } + return new ExistsRule(stack.pop().toString()); } 1.5 +4 -0 jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/InequalityRule.java Index: InequalityRule.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/InequalityRule.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- InequalityRule.java 9 Nov 2003 09:59:27 -0000 1.4 +++ InequalityRule.java 11 Dec 2003 06:30:56 -0000 1.5 @@ -77,6 +77,10 @@ } public static Rule getRule(String inequalitySymbol, Stack stack) { + if (stack.size() < 2) { + throw new IllegalArgumentException("Invalid " + inequalitySymbol + " rule - expected two rules but provided " + stack.size()); + } + String p2 = stack.pop().toString(); String p1 = stack.pop().toString(); return getRule(inequalitySymbol, p1, p2); 1.4 +4 -0 jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/LikeRule.java Index: LikeRule.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/LikeRule.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- LikeRule.java 9 Nov 2003 09:59:27 -0000 1.3 +++ LikeRule.java 11 Dec 2003 06:30:56 -0000 1.4 @@ -76,6 +76,10 @@ } public static Rule getRule(Stack stack) { + if (stack.size() < 2) { + throw new IllegalArgumentException("Invalid LIKE rule - expected two rules but provided " + stack.size()); + } + String p2 = stack.pop().toString(); String p1 = stack.pop().toString(); return getRule(p1, p2); 1.5 +1 -1 jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/PartialTextMatchRule.java Index: PartialTextMatchRule.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/PartialTextMatchRule.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- PartialTextMatchRule.java 8 Dec 2003 06:00:21 -0000 1.4 +++ PartialTextMatchRule.java 11 Dec 2003 06:30:56 -0000 1.5 @@ -75,7 +75,7 @@ public static Rule getRule(Stack stack) { if (stack.size() < 2) { - throw new IllegalArgumentException("partial text rule - expected two entries but " + stack.size() + " were provided"); + throw new IllegalArgumentException("invalid partial text rule - expected two entries but " + stack.size() + " were provided"); } String p2 = stack.pop().toString(); String p1 = stack.pop().toString();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]