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

Author: ceki Date: Tue Dec 30 12:48:16 2008 New Revision: 2116 Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java Log: - LoggerContext reset, registered turbo filters are first stopped before being unregistered. This fixes LBCLASSIC-89. Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java Tue Dec 30 12:48:16 2008 @@ -54,7 +54,8 @@ // We want loggerCache to be synchronized so Hashtable is a good choice. In // practice, it performs a little faster than the map returned by - // Collections.synchronizedMap at the cost of a very slightly higher memory footprint. + // Collections.synchronizedMap at the cost of a very slightly higher memory + // footprint. private Hashtable<String, Logger> loggerCache; private LoggerContextRemoteView loggerContextRemoteView; @@ -193,13 +194,12 @@ */ public void reset() { root.recursiveReset(); - clearAllTurboFilters(); + resetTurboFilterList(); fireOnReset(); resetListenersExceptResetResistant(); resetStatusListeners(); } - private void resetStatusListeners() { StatusManager sm = getStatusManager(); for (StatusListener sl : sm.getCopyOfStatusListenerList()) { @@ -215,7 +215,14 @@ turboFilterList.add(newFilter); } - public void clearAllTurboFilters() { + /** + * First stop all registered turbo filters and then clear the registration + * list. + */ + public void resetTurboFilterList() { + for (TurboFilter tf : turboFilterList) { + tf.stop(); + } turboFilterList.clear(); } Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java Tue Dec 30 12:48:16 2008 @@ -9,11 +9,17 @@ */ package ch.qos.logback.classic; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import org.junit.Before; import org.junit.Test; +import ch.qos.logback.classic.turbo.NOPTurboFilter; import ch.qos.logback.core.status.StatusManager; public class LoggerContextTest { @@ -170,6 +176,16 @@ assertEquals(Level.DEBUG, root.getLevel()); assertNull(a.getLevel()); assertNull(ab.getLevel()); - + } + + // http://jira.qos.ch/browse/LBCLASSIC-89 + @Test + public void turboFilterStopOnReset() { + NOPTurboFilter nopTF = new NOPTurboFilter(); + nopTF.start(); + lc.addTurboFilter(nopTF); + assertTrue(nopTF.isStarted()); + lc.reset(); + assertFalse(nopTF.isStarted()); } } \ No newline at end of file
participants (1)
-
noreply.ceki@qos.ch