ceki 2004/12/29 04:02:33 Modified: src/java/org/apache/log4j/spi LoggingEvent.java Log: Theoretically safer but still quick LoggingEvent.equals Revision Changes Path 1.73 +27 -14 logging-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java Index: LoggingEvent.java =================================================================== RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 --- LoggingEvent.java 28 Dec 2004 20:14:16 -0000 1.72 +++ LoggingEvent.java 29 Dec 2004 12:02:33 -0000 1.73 @@ -111,18 +111,13 @@ */ private transient LoggerRepository loggerRepository; - /** - * <p> - * The logger name. - * </p> - * - * @deprecated This field will be marked as private in future releases. - * Please do not access it directly. Use the [EMAIL PROTECTED] - * #getLoggerName} method instead. - */ - //the 'logger name' variable name ("categoryName") must remain the same as prior versions in order - //to maintain serialization compatibility with log4j 1.2.8 - private String categoryName; + + // The logger name. + // + // the 'logger name' variable name ("categoryName") must remain the same + // as prior versions in order to maintain serialization compatibility with + // log4j 1.2.8 + private String categoryName; /** * Level of logging event. Level cannot be serializable because it is a @@ -309,8 +304,26 @@ return false; } - // If both the timestamp and the sequenceNumber are equal than the objects - // are assumed to be equal. + // at this point, the probability of the two events being equal is + // extremely high. The next few test is optimized to take advantage of + // this knowlege. (We only compare string lengths instead of invoking + // string.equals which is much slower when the two string are equal. + + if(categoryName != null && rEvent.categoryName != null) { + if(categoryName.length() != rEvent.categoryName.length()) { + return false; + } + } else if(categoryName != rEvent.categoryName) { + // of categoryNames is null while the other is not, they can't possibly + // be equal + return false; + } + + + + + // If timestamp, sequenceNumber and categoryName length are equal than the + // events are assumed to be equal. return true; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]