Author: ravn
Date: Sun Dec 21 21:30:58 2008
New Revision: 1259

Added:
   slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/instrumentation/
   
slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/instrumentation/ToStringHelperTest.java
Modified:
   
slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java

Log:
added improved rendering of arrays of arrays, and primitive elements.


Modified: 
slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java
==============================================================================
--- 
slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java
   (original)
+++ 
slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java
   Sun Dec 21 21:30:58 2008
@@ -14,7 +14,90 @@
                Class objectClass = o.getClass();
                if (unrenderableClasses.containsKey(objectClass) == false) {
                        try {
-                               return o.toString();
+                               if (objectClass.isArray()) {
+                                       Class componentType = 
objectClass.getComponentType();
+                                       StringBuffer sb = new StringBuffer("[");
+                                       if (componentType.isPrimitive() == 
true) {
+                                               if 
(Boolean.TYPE.equals(componentType)) {
+                                                       boolean[] ba = 
(boolean[]) o;
+                                                       for (int i = 0; i < 
ba.length; i++) {
+                                                               if (i > 0) {
+                                                                       
sb.append(", ");
+                                                               }
+                                                               
sb.append(ba[i]);
+                                                       }
+                                               } else if 
(Integer.TYPE.equals(componentType)) {
+                                                       int[] ia = (int[]) o;
+                                                       for (int i = 0; i < 
ia.length; i++) {
+                                                               if (i > 0) {
+                                                                       
sb.append(", ");
+                                                               }
+                                                               
sb.append(ia[i]);
+                                                       }
+
+                                               } else if 
(Long.TYPE.equals(componentType)) {
+                                                       long[] ia = (long[]) o;
+                                                       for (int i = 0; i < 
ia.length; i++) {
+                                                               if (i > 0) {
+                                                                       
sb.append(", ");
+                                                               }
+                                                               
sb.append(ia[i]);
+                                                       }
+                                               } else if 
(Double.TYPE.equals(componentType)) {
+                                                       double[] ia = 
(double[]) o;
+                                                       for (int i = 0; i < 
ia.length; i++) {
+                                                               if (i > 0) {
+                                                                       
sb.append(", ");
+                                                               }
+                                                               
sb.append(ia[i]);
+                                                       }
+                                               } else if 
(Float.TYPE.equals(componentType)) {
+                                                       float[] ia = (float[]) 
o;
+                                                       for (int i = 0; i < 
ia.length; i++) {
+                                                               if (i > 0) {
+                                                                       
sb.append(", ");
+                                                               }
+                                                               
sb.append(ia[i]);
+                                                       }
+                                               } else if 
(Character.TYPE.equals(componentType)) {
+                                                       char[] ia = (char[]) o;
+                                                       for (int i = 0; i < 
ia.length; i++) {
+                                                               if (i > 0) {
+                                                                       
sb.append(", ");
+                                                               }
+                                                               
sb.append(ia[i]);
+                                                       }
+                                               } else if 
(Short.TYPE.equals(componentType)) {
+                                                       short[] ia = (short[]) 
o;
+                                                       for (int i = 0; i < 
ia.length; i++) {
+                                                               if (i > 0) {
+                                                                       
sb.append(", ");
+                                                               }
+                                                               
sb.append(ia[i]);
+                                                       }
+                                               } else if 
(Byte.TYPE.equals(componentType)) {
+                                                       byte[] ia = (byte[]) o;
+                                                       for (int i = 0; i < 
ia.length; i++) {
+                                                               if (i > 0) {
+                                                                       
sb.append(", ");
+                                                               }
+                                                               
sb.append(ia[i]);
+                                                       }
+                                               }
+                                       } else {
+                                               Object[] oa = (Object[]) o;
+                                               for (int i = 0; i < oa.length; 
i++) {
+                                                       if (i > 0) {
+                                                               sb.append(", ");
+                                                       }
+                                                       
sb.append(render(oa[i]));
+                                               }
+                                       }
+                                       sb.append("]");
+                                       return sb.toString();
+                               } else {
+                                       return o.toString();
+                               }
                        } catch (Exception e) {
                                Long now = new Long(System.currentTimeMillis());
                                unrenderableClasses.put(objectClass, now);

Added: 
slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/instrumentation/ToStringHelperTest.java
==============================================================================
--- (empty file)
+++ 
slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/instrumentation/ToStringHelperTest.java
       Sun Dec 21 21:30:58 2008
@@ -0,0 +1,38 @@
+package org.slf4j.instrumentation;
+
+import junit.framework.TestCase;
+
+public class ToStringHelperTest extends TestCase {
+
+       public void testRenderer() {
+               assertEquals("", "null", ToStringHelper.render(null));
+               assertEquals("", "a", ToStringHelper.render("a"));
+               assertEquals("", "[]", ToStringHelper.render(new String[0]));
+               assertEquals("", "[a]", ToStringHelper.render(new String[] { 
"a" }));
+               assertEquals("", "[a, b]", ToStringHelper.render(new String[] { 
"a",
+                               "b" }));
+               assertEquals("", "[a, b, c]", ToStringHelper.render(new 
String[] { "a",
+                               "b", "c" }));
+               assertEquals("", "[[a], [b, c]]", ToStringHelper.render(new 
String[][] {
+                               { "a" }, { "b", "c" } }));
+               assertEquals("", "[1]", ToStringHelper.render(new int[] { 1 }));
+               assertEquals("", "[1, 2, 3]", ToStringHelper
+                               .render(new int[] { 1, 2, 3 }));
+               assertEquals("", "[1, 2, 3]", ToStringHelper.render(new long[] 
{ 1, 2,
+                               3 }));
+               assertEquals("", "[1, 2, 3]", ToStringHelper.render(new short[] 
{ 1, 2,
+                               3 }));
+               assertEquals("", "[[1, 2], [], [3, 4]]", ToStringHelper
+                               .render(new byte[][] { { 1, 2 }, {}, { 3, 4 } 
}));
+               assertEquals("", "[1.0, 2.0, 3.0]", ToStringHelper.render(new 
float[] {
+                               1, 2, 3 }));
+               assertEquals("", "[1.0, 2.0, 3.0]", ToStringHelper.render(new 
double[] {
+                               1, 2, 3 }));
+               assertEquals("", "[true, false, true]", ToStringHelper
+                               .render(new boolean[] { true, false, true }));
+               assertEquals("", "null", ToStringHelper.render(null));
+               assertEquals("", "null", ToStringHelper.render(null));
+               assertEquals("", "null", ToStringHelper.render(null));
+       }
+
+}
_______________________________________________
dev mailing list
dev@slf4j.org
http://www.slf4j.org/mailman/listinfo/dev

Reply via email to