svn commit: r2065 - in logback/trunk/logback-classic/src: main/java/ch/qos/logback/classic test/java/ch/qos/logback/classic

Author: ceki Date: Fri Dec 5 11:00:48 2008 New Revision: 2065 Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java Log: Fix LBCLASSIC-91 An NPE would be thrown when setting the level of a logger to null, if the logger in question had children. Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java Fri Dec 5 11:00:48 2008 @@ -163,12 +163,13 @@ } else { effectiveLevelInt = newLevel.levelInt; } + if (childrenList != null) { int len = childrenList.size(); for (int i = 0; i < len; i++) { Logger child = (Logger) childrenList.get(i); // tell child to handle parent levelInt change - child.handleParentLevelChange(newLevel); + child.handleParentLevelChange(effectiveLevelInt); } } } @@ -179,18 +180,18 @@ * * @param newParentLevel */ - private synchronized void handleParentLevelChange(Level newParentLevel) { + private synchronized void handleParentLevelChange(int newParentLevelInt) { // changes in the parent levelInt affect children only if their levelInt is // null if (level == null) { - effectiveLevelInt = newParentLevel.levelInt; + effectiveLevelInt = newParentLevelInt; // propagate the parent levelInt change to this logger's children if (childrenList != null) { int len = childrenList.size(); for (int i = 0; i < len; i++) { Logger child = (Logger) childrenList.get(i); - child.handleParentLevelChange(newParentLevel); + child.handleParentLevelChange(newParentLevelInt); } } } Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java Fri Dec 5 11:00:48 2008 @@ -189,4 +189,13 @@ loggerTest.setLevel(null); assertEquals(root.getEffectiveLevel(), loggerTest.getEffectiveLevel()); } + + @Test + public void setLevelToNull_LBCLASSIC_91() { + loggerTest.setLevel(Level.DEBUG); + lc.getLogger(loggerTest.getName() + ".child"); + loggerTest.setLevel(null); + assertEquals(root.getEffectiveLevel(), loggerTest.getEffectiveLevel()); + } + }
participants (1)
-
noreply.ceki@qos.ch