sdeboy 2003/10/23 02:32:23 Modified: src/java/org/apache/log4j/chainsaw/rule ExpressionRule.java src/java/org/apache/log4j/chainsaw LoggingEventFieldResolver.java Log: Simplified expressionrule, referencing constants in fieldresolver Revision Changes Path 1.2 +6 -37 jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ExpressionRule.java Index: ExpressionRule.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ExpressionRule.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ExpressionRule.java 23 Oct 2003 09:18:12 -0000 1.1 +++ ExpressionRule.java 23 Oct 2003 09:32:23 -0000 1.2 @@ -52,9 +52,6 @@ import org.apache.log4j.spi.LoggingEvent; import java.util.Enumeration; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; import java.util.Stack; import java.util.StringTokenizer; @@ -72,11 +69,11 @@ private static InFixToPostFix convertor = new InFixToPostFix(); private static PostFixExpressionCompiler compiler = new PostFixExpressionCompiler(); - List list = null; + Rule rule = null; Stack stack = new Stack(); - private ExpressionRule(List list) { - this.list = list; + private ExpressionRule(Rule rule) { + this.rule = rule; } static Rule getRule(String expression, boolean isPostFix) { @@ -88,30 +85,7 @@ } public boolean evaluate(LoggingEvent event) { - stack.clear(); - - boolean result = false; - Iterator iter = list.iterator(); - - while (iter.hasNext()) { - //examine each token - Object nextItem = iter.next(); - - //if a symbol is found, pop 2 off the stack, evaluate and push the result - if (nextItem instanceof Rule) { - Rule r = (Rule) nextItem; - stack.push(new Boolean(r.evaluate(event))); - } else { - //variables or constants are pushed onto the stack - stack.push(nextItem); - } - } - - if (stack.size() > 0) { - result = new Boolean(stack.pop().toString()).booleanValue(); - } - - return result; + return rule.evaluate(event); } } @@ -122,10 +96,9 @@ */ class PostFixExpressionCompiler { - List compileExpression(String expression) { + Rule compileExpression(String expression) { System.out.println("compiling expression: " + expression); - List list = new LinkedList(); Stack stack = new Stack(); Enumeration tokenizer = new StringTokenizer(expression); @@ -146,10 +119,6 @@ } } - while (!stack.isEmpty()) { - list.add(stack.pop()); - } - - return list; + return (Rule)stack.pop(); } } 1.5 +54 -25 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LoggingEventFieldResolver.java Index: LoggingEventFieldResolver.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LoggingEventFieldResolver.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- LoggingEventFieldResolver.java 17 Sep 2003 06:24:38 -0000 1.4 +++ LoggingEventFieldResolver.java 23 Oct 2003 09:32:23 -0000 1.5 @@ -49,6 +49,9 @@ package org.apache.log4j.chainsaw; +import java.util.ArrayList; +import java.util.List; + import org.apache.log4j.spi.LoggingEvent; @@ -93,62 +96,88 @@ * */ public final class LoggingEventFieldResolver { + private static final List keywordList = new ArrayList(); + + private static final String LOGGER_FIELD = "LOGGER"; + private static final String LEVEL_FIELD = "LEVEL"; + private static final String CLASS_FIELD = "CLASS"; + private static final String FILE_FIELD = "FILE"; + private static final String LINE_FIELD = "LINE"; + private static final String METHOD_FIELD = "METHOD"; + private static final String MSG_FIELD = "MSG"; + private static final String NDC_FIELD = "NDC"; + private static final String EXCEPTION_FIELD = "EXCEPTION"; + private static final String TIMESTAMP_FIELD = "TIMESTAMP"; + private static final String THREAD_FIELD = "THREAD"; + private static final String MDC_FIELD = "MDC."; + private static final String PROP_FIELD = "PROP."; + + private static final String EMPTY_STRING = ""; + private static final LoggingEventFieldResolver resolver = new LoggingEventFieldResolver(); - + private LoggingEventFieldResolver() { + keywordList.add(LOGGER_FIELD); + keywordList.add(LEVEL_FIELD); + keywordList.add(CLASS_FIELD); + keywordList.add(FILE_FIELD); + keywordList.add(LINE_FIELD); + keywordList.add(METHOD_FIELD); + keywordList.add(MSG_FIELD); + keywordList.add(NDC_FIELD); + keywordList.add(EXCEPTION_FIELD); + keywordList.add(TIMESTAMP_FIELD); + keywordList.add(THREAD_FIELD); + keywordList.add(MDC_FIELD); + keywordList.add(PROP_FIELD); } public static LoggingEventFieldResolver getInstance() { return resolver; } + public List getKeywords() { + return keywordList; + } + public boolean isField(String fieldName) { - if (fieldName == null) { - return false; - } - String upperField = fieldName.toUpperCase(); - - return (upperField != null && ("LOGGER".equals(upperField) || "LEVEL".equals(upperField) || - "CLASS".equals(upperField) || "FILE".equals(upperField) || "LINE".equals(upperField) || - "METHOD".equals(upperField) || "MSG".equals(upperField) || "NDC".equals(upperField) || - "EXCEPTION".equals(upperField) || "TIMESTAMP".equals(upperField) || "THREAD".equals(upperField) || - upperField.startsWith("MDC.") || upperField.startsWith("PROP."))); + return keywordList.contains(fieldName); } public Object getValue(String fieldName, LoggingEvent event) { if (fieldName == null) { - return ""; + return EMPTY_STRING; } String upperField = fieldName.toUpperCase(); - if ("LOGGER".equals(upperField)) { + if (LOGGER_FIELD.equals(upperField)) { return event.getLoggerName(); - } else if ("LEVEL".equals(upperField)) { + } else if (LEVEL_FIELD.equals(upperField)) { return event.getLevel(); - } else if ("CLASS".equals(upperField)) { + } else if (CLASS_FIELD.equals(upperField)) { return event.getLocationInformation().getClassName(); - } else if ("FILE".equals(upperField)) { + } else if (FILE_FIELD.equals(upperField)) { return event.getLocationInformation().getFileName(); - } else if ("LINE".equals(upperField)) { + } else if (LINE_FIELD.equals(upperField)) { return event.getLocationInformation().getLineNumber(); - } else if ("METHOD".equals(upperField)) { + } else if (METHOD_FIELD.equals(upperField)) { return event.getLocationInformation().getMethodName(); - } else if ("MSG".equals(upperField)) { + } else if (MSG_FIELD.equals(upperField)) { return event.getMessage(); - } else if ("NDC".equals(upperField)) { + } else if (NDC_FIELD.equals(upperField)) { return event.getNDC(); - } else if ("EXCEPTION".equals(upperField)) { + } else if (EXCEPTION_FIELD.equals(upperField)) { return event.getThrowableInformation(); - } else if ("TIMESTAMP".equals(upperField)) { + } else if (TIMESTAMP_FIELD.equals(upperField)) { return new Long(event.timeStamp); - } else if ("THREAD".equals(upperField)) { + } else if (THREAD_FIELD.equals(upperField)) { return event.getThreadName(); - } else if (upperField.startsWith("MDC.")) { + } else if (upperField.startsWith(MDC_FIELD)) { //note: need to use actual fieldname since case matters return event.getMDC(fieldName.substring(4)); - } else if (upperField.startsWith("PROP.")) { + } else if (upperField.startsWith(PROP_FIELD)) { //note: need to use actual fieldname since case matters return event.getProperty(fieldName.substring(5)); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]