Repository: logging-log4j2
Updated Branches:
  refs/heads/master 6b2cbc2db -> 3d409c10a


LOG4J2-1120 Implement AppenderControl.equals/hashCode so LoggerConfig
can manage AppenderControls in a Set in while preserving Map semantics.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5f4c598e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5f4c598e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5f4c598e

Branch: refs/heads/master
Commit: 5f4c598ec8314b4b730e8fffc6dafb7d718b9ce5
Parents: 6b2cbc2
Author: rpopma <[email protected]>
Authored: Sun Sep 13 21:21:22 2015 +0900
Committer: rpopma <[email protected]>
Committed: Sun Sep 13 21:21:22 2015 +0900

----------------------------------------------------------------------
 .../log4j/core/config/AppenderControl.java      | 38 +++++++++++++++++---
 1 file changed, 34 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5f4c598e/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
index 7445afb..01b97ce 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.core.config;
 
+import java.util.Objects;
+
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.Filter;
@@ -28,16 +30,13 @@ import org.apache.logging.log4j.core.filter.Filterable;
  * Wraps an {@link Appender} with details an appender implementation shouldn't 
need to know about.
  */
 public class AppenderControl extends AbstractFilterable {
-
     private static final long serialVersionUID = 1L;
 
     private final ThreadLocal<AppenderControl> recursive = new ThreadLocal<>();
-
     private final Appender appender;
-
     private final Level level;
-
     private final int intLevel;
+    private final String appenderName;
 
     /**
      * Constructor.
@@ -48,10 +47,19 @@ public class AppenderControl extends AbstractFilterable {
     public AppenderControl(final Appender appender, final Level level, final 
Filter filter) {
         super(filter);
         this.appender = appender;
+        this.appenderName = appender.getName();
         this.level = level;
         this.intLevel = level == null ? Level.ALL.intLevel() : 
level.intLevel();
         start();
     }
+    
+    /**
+     * Returns the name the appender had when this AppenderControl was 
constructed.
+     * @return the appender name
+     */
+    public String getAppenderName() {
+        return appenderName;
+    }
 
     /**
      * Returns the Appender.
@@ -151,4 +159,26 @@ public class AppenderControl extends AbstractFilterable {
             throw ex;
         }
     }
+    
+    // AppenderControl is a helper object whose purpose is to make it
+    // easier for LoggerConfig to manage and invoke Appenders.
+    // LoggerConfig manages Appenders by their name. To facilitate this,
+    // two AppenderControl objects are considered equal if and only
+    // if they have the same appender name.
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj == this) {
+            return true;
+        }
+        if (!(obj instanceof AppenderControl)) {
+            return false;
+        }
+        final AppenderControl other = (AppenderControl) obj;
+        return Objects.equals(appenderName, other.appenderName);
+    }
+    
+    @Override
+    public int hashCode() {
+        return appenderName.hashCode();
+    }
 }

Reply via email to