svn commit: r2171 - in logback/trunk: logback-access/src/main/java/ch/qos/logback/access/net logback-classic/src/main/java/ch/qos/logback/classic/net logback-classic/src/main/java/ch/qos/logback/classic/spi logback-classic/src/test/java/ch/qos/logback/classic/net logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders logback-classic/src/test/java/ch/qos/logback/classic/spi logback-core/src/main/java/ch/qos/logback/core/net logback-core/src/main/java/ch/qos/logback/core/spi

Author: ceki Date: Thu Feb 26 11:53:17 2009 New Revision: 2171 Added: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/AccessEventPreSerializationTransformer.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/PreSerializationTransformer.java Removed: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/SDOAware.java Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SocketAppender.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventSDO.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventBuilder.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/JMSAppenderBase.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java Log: SDOAware interface has been removed. ILoggerEvent interface no longer extends SDOAware. Appenders which rely on serialization invoke the appropriate PreSerializationTransformer to obtain a serializable representation of the event they are processing. Added: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/AccessEventPreSerializationTransformer.java ============================================================================== --- (empty file) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/AccessEventPreSerializationTransformer.java Thu Feb 26 11:53:17 2009 @@ -0,0 +1,24 @@ +/** + * Logback: the generic, reliable, fast and flexible logging framework. + * + * Copyright (C) 2000-2009, QOS.ch + * + * This library is free software, you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation. + */ +package ch.qos.logback.access.net; + +import java.io.Serializable; + +import ch.qos.logback.access.spi.AccessEvent; +import ch.qos.logback.core.spi.PreSerializationTransformer; + +public class AccessEventPreSerializationTransformer implements + PreSerializationTransformer<AccessEvent> { + + public Serializable transform(AccessEvent event) { + return event; + } + +} Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SocketAppender.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SocketAppender.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SocketAppender.java Thu Feb 26 11:53:17 2009 @@ -15,6 +15,7 @@ import ch.qos.logback.access.spi.AccessEvent; import ch.qos.logback.core.net.SocketAppenderBase; +import ch.qos.logback.core.spi.PreSerializationTransformer; /** * Sends {@link AccessEvent} objects to a remote a log server, usually a @@ -30,6 +31,8 @@ public class SocketAppender extends SocketAppenderBase<AccessEvent> { + PreSerializationTransformer<AccessEvent> pst = new AccessEventPreSerializationTransformer(); + public SocketAppender() { } @@ -57,4 +60,7 @@ ae.prepareForDeferredProcessing(); } + public PreSerializationTransformer<AccessEvent> getPST() { + return pst; + } } Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java Thu Feb 26 11:53:17 2009 @@ -10,6 +10,8 @@ package ch.qos.logback.classic.net; +import java.io.Serializable; + import javax.jms.ObjectMessage; import javax.jms.Queue; import javax.jms.QueueConnection; @@ -22,6 +24,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.net.JMSAppenderBase; +import ch.qos.logback.core.spi.PreSerializationTransformer; /** * A simple appender that publishes events to a JMS Queue. The events are @@ -45,6 +48,8 @@ int successiveFailureCount = 0; + private PreSerializationTransformer<ILoggingEvent> pst = new LoggingEventPreSerializationTransformer(); + public JMSQueueAppender() { } @@ -166,7 +171,8 @@ try { ObjectMessage msg = queueSession.createObjectMessage(); - msg.setObject(event.getSDO()); + Serializable so = pst.transform(event); + msg.setObject(so); queueSender.send(msg); successiveFailureCount = 0; } catch (Exception e) { Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java Thu Feb 26 11:53:17 2009 @@ -10,6 +10,8 @@ package ch.qos.logback.classic.net; +import java.io.Serializable; + import javax.jms.ObjectMessage; import javax.jms.Session; import javax.jms.Topic; @@ -22,6 +24,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.net.JMSAppenderBase; +import ch.qos.logback.core.spi.PreSerializationTransformer; /** * A simple appender that publishes events to a JMS Topic. The events are @@ -44,7 +47,9 @@ TopicPublisher topicPublisher; int successiveFailureCount = 0; - + + private PreSerializationTransformer<ILoggingEvent> pst = new LoggingEventPreSerializationTransformer(); + public JMSTopicAppender() { } @@ -167,8 +172,8 @@ try { ObjectMessage msg = topicSession.createObjectMessage(); - - msg.setObject(event.getSDO()); + Serializable so = pst.transform(event); + msg.setObject(so); topicPublisher.publish(msg); successiveFailureCount = 0; } catch (Exception e) { Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java Thu Feb 26 11:53:17 2009 @@ -0,0 +1,35 @@ +/** + * Logback: the generic, reliable, fast and flexible logging framework. + * + * Copyright (C) 2000-2009, QOS.ch + * + * This library is free software, you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation. + */ +package ch.qos.logback.classic.net; + +import java.io.Serializable; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.classic.spi.LoggingEvent; +import ch.qos.logback.classic.spi.LoggingEventSDO; +import ch.qos.logback.core.spi.PreSerializationTransformer; + +public class LoggingEventPreSerializationTransformer implements + PreSerializationTransformer<ILoggingEvent> { + + public Serializable transform(ILoggingEvent event) { + if(event == null) { + return null; + } + if (event instanceof LoggingEvent) { + return LoggingEventSDO.build(event); + } else if (event instanceof LoggingEventSDO) { + return (LoggingEventSDO) event; + } else { + throw new IllegalArgumentException("Unsupported type "+event.getClass().getName()); + } + } + +} Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java Thu Feb 26 11:53:17 2009 @@ -15,6 +15,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.net.SocketAppenderBase; +import ch.qos.logback.core.spi.PreSerializationTransformer; /** * Sends {@link ILoggingEvent} objects to a remote a log server, usually a @@ -31,6 +32,8 @@ boolean includeCallerData = false; + PreSerializationTransformer<ILoggingEvent> pst = new LoggingEventPreSerializationTransformer(); + public SocketAppender() { } @@ -62,5 +65,9 @@ public void setIncludeCallerData(boolean includeCallerData) { this.includeCallerData = includeCallerData; } - + + public PreSerializationTransformer<ILoggingEvent> getPST() { + return pst; + } + } Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java Thu Feb 26 11:53:17 2009 @@ -5,21 +5,21 @@ import org.slf4j.Marker; import ch.qos.logback.classic.Level; -import ch.qos.logback.core.spi.SDOAware; -public interface ILoggingEvent extends SDOAware { +/** + * The core interface in logback-classic. + * + * @author Ceki Gülcü + */ +public interface ILoggingEvent { public String getThreadName(); - public Level getLevel(); - public String getMessage(); - - public LoggerRemoteView getLoggerRemoteView(); - + public Object[] getArgumentArray(); public String getFormattedMessage(); - public Object[] getArgumentArray(); + public LoggerRemoteView getLoggerRemoteView(); public ThrowableProxy getThrowableProxy(); Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java Thu Feb 26 11:53:17 2009 @@ -10,10 +10,6 @@ package ch.qos.logback.classic.spi; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; import java.util.HashMap; import java.util.Map; @@ -41,11 +37,6 @@ */ public class LoggingEvent implements ILoggingEvent { - private static final long serialVersionUID = 3075964498087694229L; - - private static final int NULL_ARGUMENT_ARRAY = -1; - private static final String NULL_ARGUMENT_ARRAY_ELEMENT = "NULL_ARGUMENT_ARRAY_ELEMENT"; - /** * Fully qualified name of the calling Logger class. This field does not * survive serialization. @@ -91,8 +82,6 @@ * created. */ private long timeStamp; - - private LoggingEventSDO loggingEventSDO; public LoggingEvent() { } @@ -283,43 +272,6 @@ return mdcPropertyMap; } - private void writeObject(ObjectOutputStream out) throws IOException { - out.defaultWriteObject(); - out.writeInt(level.levelInt); - if (argumentArray != null) { - int len = argumentArray.length; - out.writeInt(len); - for (int i = 0; i < argumentArray.length; i++) { - if (argumentArray[i] != null) { - out.writeObject(argumentArray[i].toString()); - } else { - out.writeObject(NULL_ARGUMENT_ARRAY_ELEMENT); - } - } - } else { - out.writeInt(NULL_ARGUMENT_ARRAY); - } - - } - - private void readObject(ObjectInputStream in) throws IOException, - ClassNotFoundException { - in.defaultReadObject(); - int levelInt = in.readInt(); - level = Level.toLevel(levelInt); - - int argArrayLen = in.readInt(); - if (argArrayLen != NULL_ARGUMENT_ARRAY) { - argumentArray = new String[argArrayLen]; - for (int i = 0; i < argArrayLen; i++) { - Object val = in.readObject(); - if (!NULL_ARGUMENT_ARRAY_ELEMENT.equals(val)) { - argumentArray[i] = val; - } - } - } - } - @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -329,10 +281,4 @@ return sb.toString(); } - public Serializable getSDO() { - if(loggingEventSDO == null) { - loggingEventSDO = LoggingEventSDO.build(this); - } - return loggingEventSDO; - } } Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventSDO.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventSDO.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventSDO.java Thu Feb 26 11:53:17 2009 @@ -36,8 +36,7 @@ private LoggerRemoteView lrv; private long timeStamp; - static LoggingEventSDO build(ILoggingEvent le) { - + public static LoggingEventSDO build(ILoggingEvent le) { LoggingEventSDO ledo = new LoggingEventSDO(); ledo.lrv = le.getLoggerRemoteView(); ledo.threadName = le.getThreadName(); @@ -153,11 +152,53 @@ public void prepareForDeferredProcessing() { } - /** - * LoggerEventSDO is its own SDO - */ - public Serializable getSDO() { - return this; + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((message == null) ? 0 : message.hashCode()); + result = prime * result + + ((threadName == null) ? 0 : threadName.hashCode()); + result = prime * result + (int) (timeStamp ^ (timeStamp >>> 32)); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final LoggingEventSDO other = (LoggingEventSDO) obj; + if (message == null) { + if (other.message != null) + return false; + } else if (!message.equals(other.message)) + return false; + + if (threadName == null) { + if (other.threadName != null) + return false; + } else if (!threadName.equals(other.threadName)) + return false; + if (timeStamp != other.timeStamp) + return false; + + if (marker == null) { + if (other.marker != null) + return false; + } else if (!marker.equals(other.marker)) + return false; + + if (mdcPropertyMap == null) { + if (other.mdcPropertyMap != null) + return false; + } else if (!mdcPropertyMap.equals(other.mdcPropertyMap)) + return false; + return true; } + } Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java Thu Feb 26 11:53:17 2009 @@ -1,5 +1,7 @@ package ch.qos.logback.classic.net; +import java.io.Serializable; + import javax.jms.ObjectMessage; import junit.framework.TestCase; @@ -12,12 +14,14 @@ import ch.qos.logback.classic.util.MockInitialContext; import ch.qos.logback.classic.util.MockInitialContextFactory; import ch.qos.logback.core.ContextBase; +import ch.qos.logback.core.spi.PreSerializationTransformer; public class JMSQueueAppenderTest extends TestCase { ch.qos.logback.core.Context context; JMSQueueAppender appender; - + PreSerializationTransformer<ILoggingEvent> pst = new LoggingEventPreSerializationTransformer(); + @Override protected void setUp() throws Exception { context = new ContextBase(); @@ -53,7 +57,8 @@ assertEquals(1, qs.getMessageList().size()); ObjectMessage message = (ObjectMessage) qs.getMessageList().get(0); try { - assertEquals(le.getSDO(), message.getObject()); + Serializable witness = pst.transform(le); + assertEquals(witness, message.getObject()); } catch (Exception e) { fail(); } Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java Thu Feb 26 11:53:17 2009 @@ -5,6 +5,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import java.io.Serializable; import java.util.Properties; import javax.jms.ObjectMessage; @@ -23,12 +24,14 @@ import ch.qos.logback.classic.util.MockInitialContext; import ch.qos.logback.classic.util.MockInitialContextFactory; import ch.qos.logback.core.ContextBase; +import ch.qos.logback.core.spi.PreSerializationTransformer; public class JMSTopicAppenderTest { ch.qos.logback.core.Context context; JMSTopicAppender appender; - + PreSerializationTransformer<ILoggingEvent> pst = new LoggingEventPreSerializationTransformer(); + @Before public void setUp() throws Exception { @@ -65,7 +68,8 @@ assertEquals(1, tp.getMessageList().size()); ObjectMessage message = (ObjectMessage) tp.getMessageList().get(0); try { - assertEquals(le.getSDO(), message.getObject()); + Serializable witness = pst.transform(le); + assertEquals(witness, message.getObject()); } catch (Exception e) { fail(); } Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventBuilder.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventBuilder.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventBuilder.java Thu Feb 26 11:53:17 2009 @@ -27,5 +27,5 @@ le.setMessage(MSG_PREFIX); le.setThreadName("threadName"); return le; - } + } } Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java Thu Feb 26 11:53:17 2009 @@ -14,7 +14,7 @@ import ch.qos.logback.classic.net.NOPOutputStream; import ch.qos.logback.classic.net.testObjectBuilders.Builder; import ch.qos.logback.classic.net.testObjectBuilders.LoggingEventWithParametersBuilder; -import ch.qos.logback.classic.net.testObjectBuilders.TrivialLoggingEventBuilder; +import ch.qos.logback.classic.net.testObjectBuilders.TrivialLoggingEventBuilder; import ch.qos.logback.core.CoreConstants; import ch.qos.logback.core.testUtil.Env; Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java Thu Feb 26 11:53:17 2009 @@ -9,6 +9,7 @@ import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.io.Serializable; import java.util.Map; import org.junit.After; @@ -19,6 +20,8 @@ import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.net.LoggingEventPreSerializationTransformer; +import ch.qos.logback.core.spi.PreSerializationTransformer; public class LoggingEventSerializationTest { @@ -28,6 +31,7 @@ ByteArrayOutputStream bos; ObjectOutputStream oos; ObjectInputStream inputStream; + PreSerializationTransformer<ILoggingEvent> pst = new LoggingEventPreSerializationTransformer(); @Before public void setUp() throws Exception { @@ -87,11 +91,13 @@ public void updatedMDC() throws Exception { MDC.put("key", "testValue"); ILoggingEvent event1 = createLoggingEvent(); - oos.writeObject(event1.getSDO()); + Serializable s1 = pst.transform(event1); + oos.writeObject(s1); MDC.put("key", "updatedTestValue"); ILoggingEvent event2 = createLoggingEvent(); - oos.writeObject(event2.getSDO()); + Serializable s2 = pst.transform(event2); + oos.writeObject(s2); // create the input stream based on the ouput stream ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); @@ -190,7 +196,8 @@ private ILoggingEvent writeAndRead(ILoggingEvent event) throws IOException, ClassNotFoundException { - oos.writeObject(event.getSDO()); + Serializable ser = pst.transform(event); + oos.writeObject(ser); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); inputStream = new ObjectInputStream(bis); Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/JMSAppenderBase.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/JMSAppenderBase.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/JMSAppenderBase.java Thu Feb 26 11:53:17 2009 @@ -160,7 +160,5 @@ this.password = password; } - - } Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java Thu Feb 26 11:53:17 2009 @@ -13,12 +13,13 @@ import java.io.IOException; import java.io.ObjectOutputStream; +import java.io.Serializable; import java.net.InetAddress; import java.net.Socket; import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.CoreConstants; -import ch.qos.logback.core.spi.SDOAware; +import ch.qos.logback.core.spi.PreSerializationTransformer; /** * @@ -152,12 +153,8 @@ if (oos != null) { try { postProcessEvent(event); - // if an object is SDOAware, then its SDO has preference - if(event instanceof SDOAware) { - oos.writeObject(((SDOAware)event).getSDO()); - } else { - oos.writeObject(event); - } + Serializable serEvent = getPST().transform(event); + oos.writeObject(serEvent); // addInfo("=========Flushing."); oos.flush(); if (++counter >= CoreConstants.OOS_RESET_FREQUENCY) { @@ -185,6 +182,7 @@ } protected abstract void postProcessEvent(E event); + protected abstract PreSerializationTransformer<E> getPST(); void fireConnector() { if (connector == null) { @@ -256,6 +254,7 @@ return reconnectionDelay; } + /** * The Connector will reconnect when the server becomes available again. It * does this by attempting to open a new connection every Added: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/PreSerializationTransformer.java ============================================================================== --- (empty file) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/PreSerializationTransformer.java Thu Feb 26 11:53:17 2009 @@ -0,0 +1,15 @@ +package ch.qos.logback.core.spi; + +import java.io.Serializable; + +/** + * PreSerializationTransformer instances have the responsibility to transform + * object into a presumably equivalent serializable representation. + * + * @author Ceki Gülcü + * + * @param <E> + */ +public interface PreSerializationTransformer<E> { + Serializable transform(E event); +}
participants (1)
-
noreply.ceki@qos.ch