You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/09/08 22:00:20 UTC

git commit: Convert to builder with serialization proxy.

Repository: logging-log4j2
Updated Branches:
  refs/heads/master 43bb30186 -> 249adfb58


Convert to builder with serialization proxy.


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

Branch: refs/heads/master
Commit: 249adfb587181cac2e0eca1ceff0951c43f4ec6e
Parents: 43bb301
Author: Matt Sicker <ma...@apache.org>
Authored: Mon Sep 8 15:00:10 2014 -0500
Committer: Matt Sicker <ma...@apache.org>
Committed: Mon Sep 8 15:00:10 2014 -0500

----------------------------------------------------------------------
 .../logging/log4j/core/util/KeyValuePair.java   | 59 +++++++++++++++-----
 1 file changed, 46 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/249adfb5/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java
index d1e44db..665d2b5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java
@@ -14,13 +14,17 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
+
 package org.apache.logging.log4j.core.util;
 
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.io.ObjectStreamException;
 import java.io.Serializable;
 
 import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 
 /**
  * Key/Value pair configuration item.
@@ -67,18 +71,47 @@ public final class KeyValuePair implements Serializable {
         return key + '=' + value;
     }
 
-    /**
-     * Create a Key/Value pair.
-     * @param key The key.
-     * @param value The value.
-     * @return A KeyValuePair.
-     */
-    @PluginFactory
-    public static KeyValuePair createPair(
-            @PluginAttribute("key") final String key,
-            @PluginAttribute("value") final  String value) {
+    @PluginBuilderFactory
+    public static Builder newBuilder() {
+        return new Builder();
+    }
+
+    protected Object writeReplace() throws ObjectStreamException {
+        return newBuilder().setKey(this.key).setValue(this.value);
+    }
+
+    private void readObject(final ObjectInputStream stream) throws InvalidObjectException {
+        throw new InvalidObjectException("Builder proxy required");
+    }
+
+    public static class Builder implements org.apache.logging.log4j.core.util.Builder<KeyValuePair>, Serializable {
 
-        return new KeyValuePair(key, value);
+        private static final long serialVersionUID = 1L;
+
+        @PluginBuilderAttribute
+        private String key;
+
+        @PluginBuilderAttribute
+        private String value;
+
+        public Builder setKey(final String key) {
+            this.key = key;
+            return this;
+        }
+
+        public Builder setValue(final String value) {
+            this.value = value;
+            return this;
+        }
+
+        @Override
+        public KeyValuePair build() {
+            return new KeyValuePair(key, value);
+        }
+
+        protected Object readResolve() throws ObjectStreamException {
+            return new KeyValuePair(key, value);
+        }
     }
 
     @Override