
Author: ceki Date: Fri Dec 19 19:24:52 2008 New Revision: 2093 Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactoryBase.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTracker.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTrackerImpl.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/AppenderTrackerTest.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/Simulator.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/AppenderTrackerTImpl.java Log: - The key parameter used as a sifting discriminator is now of type String instead of a generic K. This simplifies the code without real loss of generality. :-) Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java Fri Dec 19 19:24:52 2008 @@ -17,7 +17,7 @@ import ch.qos.logback.core.sift.AppenderFactoryBase; import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase; -public class AppenderFactory extends AppenderFactoryBase<LoggingEvent, String>{ +public class AppenderFactory extends AppenderFactoryBase<LoggingEvent>{ String mdcKey; Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java Fri Dec 19 19:24:52 2008 @@ -26,7 +26,7 @@ * * @author Ceki Gulcu */ -public class SiftingAppender extends SiftingAppenderBase<LoggingEvent, String> { +public class SiftingAppender extends SiftingAppenderBase<LoggingEvent> { String mdcKey; @@ -59,7 +59,7 @@ } } - AppenderTracker<LoggingEvent, String> getAppenderTracker() { + AppenderTracker<LoggingEvent> getAppenderTracker() { return appenderTracker; } Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactoryBase.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactoryBase.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactoryBase.java Fri Dec 19 19:24:52 2008 @@ -17,7 +17,7 @@ import ch.qos.logback.core.joran.event.SaxEvent; import ch.qos.logback.core.joran.spi.JoranException; -public abstract class AppenderFactoryBase<E, K> { +public abstract class AppenderFactoryBase<E> { final List<SaxEvent> eventList; Context context; @@ -35,9 +35,9 @@ System.out.println(eventList); } - public abstract SiftingJoranConfiguratorBase<E> getSiftingJoranConfigurator(K k); + public abstract SiftingJoranConfiguratorBase<E> getSiftingJoranConfigurator(String k); - Appender<E> buildAppender(Context context, K k) throws JoranException { + Appender<E> buildAppender(Context context, String k) throws JoranException { SiftingJoranConfiguratorBase<E> sjc = getSiftingJoranConfigurator(k); sjc.setContext(context); sjc.doConfigure(eventList); Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTracker.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTracker.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTracker.java Fri Dec 19 19:24:52 2008 @@ -13,15 +13,15 @@ import ch.qos.logback.core.Appender; -public interface AppenderTracker<E, K> { +public interface AppenderTracker<E> { static int MILLIS_IN_ONE_SECOND = 1000; static int THRESHOLD = 30 * 60 * MILLIS_IN_ONE_SECOND; // 30 minutes - void put(K key, Appender<E> value, long timestamp); - Appender<E> get(K key, long timestamp); + void put(String key, Appender<E> value, long timestamp); + Appender<E> get(String key, long timestamp); void stopStaleAppenders(long timestamp); - List<K> keyList(); + List<String> keyList(); List<Appender<E>> valueList(); Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTrackerImpl.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTrackerImpl.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTrackerImpl.java Fri Dec 19 19:24:52 2008 @@ -21,9 +21,9 @@ * longer than THRESHOLD, stop it. * @author Ceki Gulcu */ -public class AppenderTrackerImpl<E, K> implements AppenderTracker<E, K> { +public class AppenderTrackerImpl<E> implements AppenderTracker<E> { - Map<K, Entry> map = new HashMap<K, Entry>(); + Map<String, Entry> map = new HashMap<String, Entry>(); Entry head; // least recently used entries are towards the head Entry tail; // most recently used entries are towards the tail @@ -36,7 +36,7 @@ } - public synchronized void put(K key, Appender<E> value, long timestamp) { + public synchronized void put(String key, Appender<E> value, long timestamp) { Entry entry = map.get(key); if (entry == null) { entry = new Entry(key, value, timestamp); @@ -45,7 +45,7 @@ moveToTail(entry); } - public synchronized Appender<E> get(K key, long timestamp) { + public synchronized Appender<E> get(String key, long timestamp) { Entry existing = map.get(key); if (existing == null) { return null; @@ -70,8 +70,8 @@ } } - public List<K> keyList() { - List<K> result = new LinkedList<K>(); + public List<String> keyList() { + List<String> result = new LinkedList<String>(); Entry e = head; while (e != tail) { result.add(e.key); @@ -151,11 +151,11 @@ Entry next; Entry prev; - K key; + String key; Appender<E> value; long timestamp; - Entry(K k, Appender<E> v, long timestamp) { + Entry(String k, Appender<E> v, long timestamp) { this.key = k; this.value = v; this.timestamp = timestamp; Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java Fri Dec 19 19:24:52 2008 @@ -12,7 +12,6 @@ import ch.qos.logback.core.Appender; import ch.qos.logback.core.UnsynchronizedAppenderBase; import ch.qos.logback.core.joran.spi.JoranException; -import ch.qos.logback.core.util.OptionHelper; /** * This appender can contains other appenders which it can build dynamically @@ -24,13 +23,13 @@ * * @author Ceki Gulcu */ -public abstract class SiftingAppenderBase<E, K> extends +public abstract class SiftingAppenderBase<E> extends UnsynchronizedAppenderBase<E> { - protected AppenderTracker<E, K> appenderTracker = new AppenderTrackerImpl<E, K>(); - AppenderFactoryBase<E, K> appenderFactory; + protected AppenderTracker<E> appenderTracker = new AppenderTrackerImpl<E>(); + AppenderFactoryBase<E> appenderFactory; - public void setAppenderFactory(AppenderFactoryBase<E, K> appenderFactory) { + public void setAppenderFactory(AppenderFactoryBase<E> appenderFactory) { this.appenderFactory = appenderFactory; } @@ -46,7 +45,7 @@ } } - abstract protected K getDiscriminatingValue(E event); + abstract protected String getDiscriminatingValue(E event); abstract protected long getTimestamp(E event); @Override @@ -55,7 +54,7 @@ return; } - K value = getDiscriminatingValue(event); + String value = getDiscriminatingValue(event); long timestamp = getTimestamp(event); Appender<E> appender = appenderTracker.get(value, timestamp); Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/AppenderTrackerTest.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/AppenderTrackerTest.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/AppenderTrackerTest.java Fri Dec 19 19:24:52 2008 @@ -16,7 +16,7 @@ Context context = new ContextBase(); - AppenderTracker<Object, String> appenderTracker = new AppenderTrackerImpl<Object, String>(); + AppenderTracker<Object> appenderTracker = new AppenderTrackerImpl<Object>(); ListAppender<Object> la = new ListAppender<Object>(); @Before Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/Simulator.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/Simulator.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/Simulator.java Fri Dec 19 19:24:52 2008 @@ -28,7 +28,7 @@ */ public class Simulator { - AppenderTrackerImpl<Object, String> appenderTracker = new AppenderTrackerImpl<Object, String>(); + AppenderTrackerImpl<Object> appenderTracker = new AppenderTrackerImpl<Object>(); AppenderTrackerTImpl t_appenderTracker = new AppenderTrackerTImpl(); List<String> keySpace = new ArrayList<String>(); @@ -79,7 +79,7 @@ } void play(SimulationEvent simulationEvent, - AppenderTracker<Object, String> appenderTracker) { + AppenderTracker<Object> appenderTracker) { String mdcValue = simulationEvent.key; long timestamp = simulationEvent.timestamp; Appender<Object> appender = appenderTracker.get(mdcValue, timestamp); Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/AppenderTrackerTImpl.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/AppenderTrackerTImpl.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/AppenderTrackerTImpl.java Fri Dec 19 19:24:52 2008 @@ -23,7 +23,7 @@ * * @author Ceki Gulcu */ -public class AppenderTrackerTImpl implements AppenderTracker<Object, String> { +public class AppenderTrackerTImpl implements AppenderTracker<Object> { List<TEntry> entryList = new LinkedList<TEntry>(); long lastCheck = 0;