LOG4J2-435 String to Duration converter and unit test

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

Branch: refs/heads/master
Commit: a7df71a13434af812c56190c4b3550cecf958e87
Parents: f14edc2
Author: rpopma <[email protected]>
Authored: Sun Nov 15 04:24:15 2015 +0900
Committer: rpopma <[email protected]>
Committed: Sun Nov 15 04:24:15 2015 +0900

----------------------------------------------------------------------
 .../core/config/plugins/convert/TypeConverters.java   | 14 ++++++++++++++
 .../config/plugins/convert/TypeConvertersTest.java    |  3 +++
 2 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a7df71a1/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
index a28897c..d102294 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
@@ -28,10 +28,12 @@ import java.nio.charset.Charset;
 import java.security.Provider;
 import java.security.Security;
 import java.util.regex.Pattern;
+
 import javax.xml.bind.DatatypeConverter;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.appender.rolling.action.Duration;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.util.Loader;
 import org.apache.logging.log4j.status.StatusLogger;
@@ -188,6 +190,18 @@ public final class TypeConverters {
     }
 
     /**
+     * Converts a {@link String} into a {@link Duration}.
+     * @since 2.5
+     */
+    @Plugin(name = "Duration", category = CATEGORY)
+    public static class DurationConverter implements TypeConverter<Duration> {
+        @Override
+        public Duration convert(final String s) {
+            return Duration.parse(s);
+        }
+    }
+
+    /**
      * Converts a {@link String} into a {@link File}.
      */
     @Plugin(name = "File", category = CATEGORY)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a7df71a1/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConvertersTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConvertersTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConvertersTest.java
index e5b4981..c51a817 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConvertersTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConvertersTest.java
@@ -31,6 +31,7 @@ import java.util.Collection;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.appender.rolling.action.Duration;
 import org.apache.logging.log4j.core.layout.GelfLayout;
 import org.apache.logging.log4j.core.net.Facility;
 import org.junit.Test;
@@ -174,6 +175,8 @@ public class TypeConvertersTest {
                 // JRE Security Provider
                 { Security.getProviders()[0].getName(), 
Security.getProviders()[0], null, Provider.class },
                 { "\n", null, null, Provider.class },
+                // Duration
+                { "P7DT10H", Duration.parse("P7DT10H"), null, Duration.class 
}, 
             }
         );
     }

Reply via email to