Author: ceki
Date: Tue Feb 26 18:31:16 2008
New Revision: 991

Added:
   slf4j/trunk/jcl104-over-slf4j/src/test/java/org/apache/commons/logging/impl/
   
slf4j/trunk/jcl104-over-slf4j/src/test/java/org/apache/commons/logging/impl/SerializationTest.java
Modified:
   
slf4j/trunk/jcl104-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLocationAwareLog.java
   
slf4j/trunk/jcl104-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLog.java

Log:
- SLF4JLog and SLF4JLocationAwareLog classes are now serializable. This 
corrects bug 71.

Note that the logger references in both classes now have to be transient. This 
is similar
to the support provided in the original JCL (see Log4jLogger Jdk14Logger 
classes)

http://bugzilla.slf4j.org/show_bug.cgi?id=71

Modified: 
slf4j/trunk/jcl104-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLocationAwareLog.java
==============================================================================
--- 
slf4j/trunk/jcl104-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLocationAwareLog.java
      (original)
+++ 
slf4j/trunk/jcl104-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLocationAwareLog.java
      Tue Feb 26 18:31:16 2008
@@ -2,6 +2,8 @@
  
 package org.apache.commons.logging.impl;
 
+import java.io.Serializable;
+
 import org.apache.commons.logging.Log;
 import org.slf4j.Logger;
 import org.slf4j.spi.LocationAwareLogger;
@@ -14,9 +16,14 @@
  * 
  * @author Ceki Gülcü
  */
-public class SLF4JLocationAwareLog implements Log {
+public class SLF4JLocationAwareLog implements Log, Serializable {
+
+  private static final long serialVersionUID = -2379157579039314822L;
+  
+  // in both Log4jLogger and Jdk14Logger classes in the original JCL, the 
+  // logger instance is transient
+  private transient LocationAwareLogger logger;
 
-  private LocationAwareLogger logger;
   private static final String FQCN = SLF4JLocationAwareLog.class.getName();
   
   SLF4JLocationAwareLog(LocationAwareLogger logger) {

Modified: 
slf4j/trunk/jcl104-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLog.java
==============================================================================
--- 
slf4j/trunk/jcl104-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLog.java
   (original)
+++ 
slf4j/trunk/jcl104-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLog.java
   Tue Feb 26 18:31:16 2008
@@ -2,6 +2,8 @@
 
 package org.apache.commons.logging.impl;
 
+import java.io.Serializable;
+
 import org.apache.commons.logging.Log;
 import org.slf4j.Logger;
 
@@ -14,9 +16,13 @@
  * 
  * @author Ceki Gülcü
  */
-public class SLF4JLog implements Log {
+public class SLF4JLog implements Log, Serializable {
+
+  private static final long serialVersionUID = 680728617011167209L;
 
-  private Logger logger;
+  // in both Log4jLogger and Jdk14Logger classes in the original JCL, the 
+  // logger instance is transient
+  private transient Logger logger;
 
   SLF4JLog(Logger logger) {
     this.logger = logger;

Added: 
slf4j/trunk/jcl104-over-slf4j/src/test/java/org/apache/commons/logging/impl/SerializationTest.java
==============================================================================
--- (empty file)
+++ 
slf4j/trunk/jcl104-over-slf4j/src/test/java/org/apache/commons/logging/impl/SerializationTest.java
  Tue Feb 26 18:31:16 2008
@@ -0,0 +1,41 @@
+package org.apache.commons.logging.impl;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class SerializationTest extends TestCase {
+
+  ObjectOutputStream oos;
+  
+  public SerializationTest(String name) {
+    super(name);
+  }
+
+  protected void setUp() throws Exception {
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    oos = new ObjectOutputStream(baos);
+    super.setUp();
+  }
+
+  protected void tearDown() throws Exception {
+    super.tearDown();
+    oos.close();
+  }
+
+  
+  public void testSmokeSimple() throws IOException {
+    Log log = LogFactory.getLog("testing");
+    oos.writeObject(log);
+  }
+  
+  public void testSmokeLocationAware() throws IOException {
+    SLF4JLocationAwareLog log = new SLF4JLocationAwareLog(null);
+    oos.writeObject(log);
+  }
+}
_______________________________________________
dev mailing list
dev@slf4j.org
http://www.slf4j.org/mailman/listinfo/dev

Reply via email to