I added a comment to LOG4J2-1300. The main idea is that there are a lot of
fake serializable classes in log4j-core, and I was working on normalizing
that.

On 29 February 2016 at 01:31, Ralph Goers <[email protected]>
wrote:

> Why are you doing this?
>
> Ralph
>
> On Feb 28, 2016, at 10:33 PM, Matt Sicker <[email protected]> wrote:
>
> Not yet, but that's an important part of this to at least determine which
> ones are even possible to serialize.
>
> On 28 February 2016 at 23:30, Gary Gregory <[email protected]> wrote:
>
>> Wait a sec. I've been guilty in the past of stamping classes with
>> Serializable in haste... and my lesson there is that you need unit tests to
>> make sure that the class is indeed serializable AND deserializable. Do we
>> have such tests?
>>
>> Gary
>>
>> ---------- Forwarded message ----------
>> From: <[email protected]>
>> Date: Sun, Feb 28, 2016 at 8:23 PM
>> Subject: [1/2] logging-log4j2 git commit: [LOG4J2-1300] Make appender
>> managers and dependencies serializable.
>> To: [email protected]
>>
>>
>> Repository: logging-log4j2
>> Updated Branches:
>>   refs/heads/master 17aa30354 -> 026d27940
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
>> index ba593a3..f60d0f9 100644
>> ---
>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
>> +++
>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
>> @@ -49,6 +49,7 @@ public class OnStartupTriggeringPolicyTest {
>>      }
>>
>>      private class MyRollingManager extends RollingFileManager {
>> +        private static final long serialVersionUID = 1L;
>>
>>          private long timestamp;
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/CountingCondition.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/CountingCondition.java
>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/CountingCondition.java
>> index 9355582..7b4f570 100644
>> ---
>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/CountingCondition.java
>> +++
>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/CountingCondition.java
>> @@ -17,15 +17,15 @@
>>
>>  package org.apache.logging.log4j.core.appender.rolling.action;
>>
>> +import java.io.Serializable;
>>  import java.nio.file.Path;
>>  import java.nio.file.attribute.BasicFileAttributes;
>>
>> -import
>> org.apache.logging.log4j.core.appender.rolling.action.PathCondition;
>> -
>>  /**
>>   * Test helper class.
>>   */
>> -public class CountingCondition implements PathCondition {
>> +public class CountingCondition implements PathCondition, Serializable {
>> +    private static final long serialVersionUID = 1L;
>>
>>      private final boolean accept;
>>      private int acceptCount;
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
>> b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
>> index 9b483a6..206a395 100644
>> ---
>> a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
>> +++
>> b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
>> @@ -42,6 +42,7 @@ public class InMemoryAppender extends
>> AbstractOutputStreamAppender<InMemoryAppen
>>      }
>>
>>      static class InMemoryManager extends OutputStreamManager {
>> +        private static final long serialVersionUID = 1L;
>>
>>          public InMemoryManager(final String name, final Layout<? extends
>> Serializable> layout,
>>                  final boolean writeHeader) {
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java
>> index 55fb858..4a3a065 100644
>> ---
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java
>> +++
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/AbstractFlumeManager.java
>> @@ -23,6 +23,7 @@ import
>> org.apache.logging.log4j.core.appender.AbstractManager;
>>   *
>>   */
>>  public abstract class AbstractFlumeManager extends AbstractManager {
>> +    private static final long serialVersionUID = 1L;
>>
>>      public AbstractFlumeManager(final String name) {
>>          super(name);
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/Agent.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/Agent.java
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/Agent.java
>> index e8cf2ea..b2e8760 100644
>> ---
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/Agent.java
>> +++
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/Agent.java
>> @@ -16,6 +16,8 @@
>>   */
>>  package org.apache.logging.log4j.flume.appender;
>>
>> +import java.io.Serializable;
>> +
>>  import org.apache.logging.log4j.Logger;
>>  import org.apache.logging.log4j.core.config.plugins.Plugin;
>>  import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
>> @@ -27,7 +29,8 @@ import org.apache.logging.log4j.status.StatusLogger;
>>   * Agent Specification for FlumeAvroAppender.
>>   */
>>  @Plugin(name = "Agent", category = "Core", printObject = true)
>> -public final class Agent {
>> +public final class Agent implements Serializable {
>> +    private static final long serialVersionUID = 1L;
>>
>>      private static final String DEFAULT_HOST = "localhost";
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/BatchEvent.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/BatchEvent.java
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/BatchEvent.java
>> index 41af4fa..9da9e9e 100644
>> ---
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/BatchEvent.java
>> +++
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/BatchEvent.java
>> @@ -16,6 +16,7 @@
>>   */
>>  package org.apache.logging.log4j.flume.appender;
>>
>> +import java.io.Serializable;
>>  import java.util.ArrayList;
>>  import java.util.List;
>>
>> @@ -24,7 +25,8 @@ import org.apache.flume.Event;
>>  /**
>>   *
>>   */
>> -public class BatchEvent {
>> +public class BatchEvent implements Serializable {
>> +    private static final long serialVersionUID = 1L;
>>
>>      private final List<Event> events = new ArrayList<>();
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
>> index dd5dd96..1d39185 100644
>> ---
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
>> +++
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
>> @@ -16,6 +16,8 @@
>>   */
>>  package org.apache.logging.log4j.flume.appender;
>>
>> +import java.io.IOException;
>> +import java.io.ObjectInputStream;
>>  import java.util.Properties;
>>  import java.util.concurrent.TimeUnit;
>>
>> @@ -29,6 +31,7 @@ import
>> org.apache.logging.log4j.core.appender.ManagerFactory;
>>   * Manager for FlumeAvroAppenders.
>>   */
>>  public class FlumeAvroManager extends AbstractFlumeManager {
>> +    private static final long serialVersionUID = 1L;
>>
>>      private static final int MAX_RECONNECTS = 3;
>>      private static final int MINIMUM_TIMEOUT = 1000;
>> @@ -50,7 +53,7 @@ public class FlumeAvroManager extends
>> AbstractFlumeManager {
>>
>>      private final int current = 0;
>>
>> -    private RpcClient rpcClient = null;
>> +    private transient RpcClient rpcClient = null;
>>
>>      private BatchEvent batchEvent = new BatchEvent();
>>      private long nextSend = 0;
>> @@ -78,6 +81,11 @@ public class FlumeAvroManager extends
>> AbstractFlumeManager {
>>          this.rpcClient = connect(agents, retries, connectTimeout,
>> requestTimeout);
>>      }
>>
>> +    private void readObject(final ObjectInputStream in) throws
>> IOException, ClassNotFoundException {
>> +        in.defaultReadObject();
>> +        this.rpcClient = connect(this.agents, this.retries,
>> this.connectTimeoutMillis, this.requestTimeoutMillis);
>> +    }
>> +
>>      /**
>>       * Returns a FlumeAvroManager.
>>       * @param name The name of the manager.
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java
>> index a23c2ed..a4f45f1 100644
>> ---
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java
>> +++
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java
>> @@ -35,6 +35,7 @@ import org.apache.logging.log4j.util.Strings;
>>   *
>>   */
>>  public class FlumeEmbeddedManager extends AbstractFlumeManager {
>> +    private static final long serialVersionUID = 1L;
>>
>>      private static final String FILE_SEP =
>> PropertiesUtil.getProperties().getStringProperty("file.separator");
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
>> index 4134671..e846ae2 100644
>> ---
>> a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
>> +++
>> b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
>> @@ -66,6 +66,7 @@ import com.sleepycat.je.Transaction;
>>   * Manager that persists data to Berkeley DB before passing it on to
>> Flume.
>>   */
>>  public class FlumePersistentManager extends FlumeAvroManager {
>> +    private static final long serialVersionUID = 1L;
>>
>>      /** Attribute name for the key provider. */
>>      public static final String KEY_PROVIDER = "keyProvider";
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/AbstractNoSqlConnection.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/AbstractNoSqlConnection.java
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/AbstractNoSqlConnection.java
>> index ac52eba..2291e08 100644
>> ---
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/AbstractNoSqlConnection.java
>> +++
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/AbstractNoSqlConnection.java
>> @@ -17,6 +17,7 @@
>>
>>  package org.apache.logging.log4j.nosql.appender;
>>
>> +import java.io.Serializable;
>>  import java.util.concurrent.atomic.AtomicBoolean;
>>
>>  /**
>> @@ -27,7 +28,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
>>   * @param <T>See
>>   *            {@link NoSqlConnection}.
>>   */
>> -public abstract class AbstractNoSqlConnection<W, T extends
>> NoSqlObject<W>> implements NoSqlConnection<W, T> {
>> +public abstract class AbstractNoSqlConnection<W, T extends
>> NoSqlObject<W>>
>> +    implements NoSqlConnection<W, T>, Serializable {
>> +    private static final long serialVersionUID = 1L;
>>
>>      private final AtomicBoolean closed = new AtomicBoolean(false);
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
>> index d879b07..3a005fa 100644
>> ---
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
>> +++
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
>> @@ -32,6 +32,7 @@ import org.apache.logging.log4j.core.util.Closer;
>>   * @param <W> A type parameter for reassuring the compiler that all
>> operations are using the same {@link NoSqlObject}.
>>   */
>>  public final class NoSqlDatabaseManager<W> extends
>> AbstractDatabaseManager {
>> +    private static final long serialVersionUID = 1L;
>>      private static final NoSQLDatabaseManagerFactory FACTORY = new
>> NoSQLDatabaseManagerFactory();
>>
>>      private final NoSqlProvider<NoSqlConnection<W, ? extends
>> NoSqlObject<W>>> provider;
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java
>> index 2494a5c..7ed5ec8 100644
>> ---
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java
>> +++
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java
>> @@ -31,6 +31,7 @@ import org.lightcouch.Response;
>>   * The Apache CouchDB implementation of {@link NoSqlConnection}.
>>   */
>>  public final class CouchDbConnection extends
>> AbstractNoSqlConnection<Map<String, Object>, DefaultNoSqlObject> {
>> +    private static final long serialVersionUID = 1L;
>>      private final CouchDbClient client;
>>
>>      public CouchDbConnection(final CouchDbClient client) {
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java
>> index 1f9f0e7..591d839 100644
>> ---
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java
>> +++
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java
>> @@ -16,6 +16,7 @@
>>   */
>>  package org.apache.logging.log4j.nosql.appender.couchdb;
>>
>> +import java.io.Serializable;
>>  import java.lang.reflect.Method;
>>
>>  import org.apache.logging.log4j.Logger;
>> @@ -35,7 +36,8 @@ import org.lightcouch.CouchDbProperties;
>>   * The Apache CouchDB implementation of {@link NoSqlProvider}.
>>   */
>>  @Plugin(name = "CouchDB", category = "Core", printObject = true)
>> -public final class CouchDbProvider implements
>> NoSqlProvider<CouchDbConnection> {
>> +public final class CouchDbProvider implements
>> NoSqlProvider<CouchDbConnection>, Serializable {
>> +    private static final long serialVersionUID = 1L;
>>      private static final int HTTP = 80;
>>      private static final int HTTPS = 443;
>>      private static final Logger LOGGER = StatusLogger.getLogger();
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java
>> index 577adea..4dfe588 100644
>> ---
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java
>> +++
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java
>> @@ -36,6 +36,7 @@ import com.mongodb.WriteConcern;
>>   * The MongoDB implementation of {@link NoSqlConnection}.
>>   */
>>  public final class MongoDbConnection extends
>> AbstractNoSqlConnection<BasicDBObject, MongoDbObject> {
>> +    private static final long serialVersionUID = 1L;
>>
>>      private static final Logger LOGGER = StatusLogger.getLogger();
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/026d2794/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java
>> index be9d9f4..cacb784 100644
>> ---
>> a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java
>> +++
>> b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java
>> @@ -16,6 +16,7 @@
>>   */
>>  package org.apache.logging.log4j.nosql.appender.mongodb;
>>
>> +import java.io.Serializable;
>>  import java.lang.reflect.Field;
>>  import java.lang.reflect.Method;
>>  import java.util.ArrayList;
>> @@ -42,7 +43,8 @@ import com.mongodb.WriteConcern;
>>   * The MongoDB implementation of {@link NoSqlProvider}.
>>   */
>>  @Plugin(name = "MongoDb", category = "Core", printObject = true)
>> -public final class MongoDbProvider implements
>> NoSqlProvider<MongoDbConnection> {
>> +public final class MongoDbProvider implements
>> NoSqlProvider<MongoDbConnection>, Serializable {
>> +    private static final long serialVersionUID = 1L;
>>
>>      private static final WriteConcern DEFAULT_WRITE_CONCERN =
>> WriteConcern.ACKNOWLEDGED;
>>      private static final Logger LOGGER = StatusLogger.getLogger();
>>
>>
>>
>>
>> --
>> E-Mail: [email protected] | [email protected]
>> Java Persistence with Hibernate, Second Edition
>> <http://www.manning.com/bauer3/>
>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>> Spring Batch in Action <http://www.manning.com/templier/>
>> Blog: http://garygregory.wordpress.com
>> Home: http://garygregory.com/
>> Tweet! http://twitter.com/GaryGregory
>>
>
>
>
> --
> Matt Sicker <[email protected]>
>
>


-- 
Matt Sicker <[email protected]>

Reply via email to