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