Author: ggregory
Date: Wed May 28 03:48:26 2014
New Revision: 1597922

URL: http://svn.apache.org/r1597922
Log:
Add type converters for char[] and byte[].

Modified:
    
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/TypeConverters.java
    
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/TypeConvertersTest.java

Modified: 
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/TypeConverters.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/TypeConverters.java?rev=1597922&r1=1597921&r2=1597922&view=diff
==============================================================================
--- 
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/TypeConverters.java
 (original)
+++ 
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/TypeConverters.java
 Wed May 28 03:48:26 2014
@@ -54,6 +54,8 @@ public final class TypeConverters {
      */
     private TypeConverters() {
         registry.put(String.class, new StringConverter());
+        registry.put(char[].class, new CharArrayConverter());
+        registry.put(byte[].class, new ByteArrayConverter());
         registry.put(Boolean.class, new BooleanConverter());
         registry.put(boolean.class, registry.get(Boolean.class));
         registry.put(Integer.class, new IntegerConverter());
@@ -155,6 +157,26 @@ public final class TypeConverters {
     }
 
     /**
+     * Parses Strings into char[]s.
+     */
+    private static class CharArrayConverter implements TypeConverter<char[]> {
+        @Override
+        public char[] convert(final String s) {
+            return s.toCharArray();
+        }
+    }
+
+    /**
+     * Parses Strings into byte[]s.
+     */
+    private static class ByteArrayConverter implements TypeConverter<byte[]> {
+        @Override
+        public byte[] convert(final String s) {
+            return s.getBytes(Charset.defaultCharset());
+        }
+    }
+
+    /**
      * Parses strings into booleans.
      */
     private static class BooleanConverter implements TypeConverter<Boolean> {

Modified: 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/TypeConvertersTest.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/TypeConvertersTest.java?rev=1597922&r1=1597921&r2=1597922&view=diff
==============================================================================
--- 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/TypeConvertersTest.java
 (original)
+++ 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/util/TypeConvertersTest.java
 Wed May 28 03:48:26 2014
@@ -113,6 +113,9 @@ public class TypeConvertersTest {
                 { "Cron", Facility.CRON, null, Facility.class },
                 { "not a real facility", Facility.AUTH, "auth", Facility.class 
},
                 { null, null, null, Facility.class },
+                // arrays
+                { "123", "123".toCharArray(), null, char[].class },
+                { "123", "123".getBytes(Charset.defaultCharset()), null, 
byte[].class },
             }
         );
     }
@@ -133,6 +136,11 @@ public class TypeConvertersTest {
     public void testConvert() throws Exception {
         final Object actual = TypeConverters.convert(value, clazz, 
defaultValue);
         final String assertionMessage = "\nGiven: " + value + "\nDefault: " + 
defaultValue;
-        assertEquals(assertionMessage, expected, actual);
-    }
+        if (expected != null && expected instanceof char[]) {
+            assertArrayEquals(assertionMessage, (char[]) expected, (char[]) 
actual);
+        } else if (expected != null && expected instanceof byte[]) {
+            assertArrayEquals(assertionMessage, (byte[]) expected, (byte[]) 
actual);
+        } else {
+            assertEquals(assertionMessage, expected, actual);
+        }}
 }


Reply via email to