From 0dc4418fd25fa975bf2f120c7134061ec76eba07 Mon Sep 17 00:00:00 2001 From: "ray.j.greenwell" Date: Fri, 17 Sep 2010 20:44:22 +0000 Subject: [PATCH] Do not use StringUtil.toString() to log any arguments. As detailed in my last checkin. git-svn-id: https://samskivert.googlecode.com/svn/trunk@2885 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- .../java/com/samskivert/util/LogBuilder.java | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/samskivert/util/LogBuilder.java b/src/main/java/com/samskivert/util/LogBuilder.java index cd5476e7..78569a38 100644 --- a/src/main/java/com/samskivert/util/LogBuilder.java +++ b/src/main/java/com/samskivert/util/LogBuilder.java @@ -50,7 +50,7 @@ public class LogBuilder public LogBuilder append (Object... args) { if (args != null && args.length > 1) { - for (int ii = 0, nn = args.length / 2; ii < nn; ii++) { + for (int ii = 0, nn = args.length - (args.length % 2); ii < nn; ii += 2) { if (_hasArgs) { _log.append(", "); } else { @@ -61,9 +61,10 @@ public class LogBuilder _log.append('['); _hasArgs = true; } - _log.append(args[2 * ii]).append("="); + _log.append(args[ii]).append("="); try { - StringUtil.toString(_log, args[2 * ii + 1]); + Object arg = args[ii + 1]; + _log.append(((arg == null) || !arg.getClass().isArray()) ? arg : arrayStr(arg)); } catch (Throwable t) { _log.append(""); } @@ -88,6 +89,41 @@ public class LogBuilder return _log.toString(); } + /** + * Return the String representation of the specified Object, which must be an array. + */ + protected String arrayStr (Object arg) + { + if (arg instanceof Object[]) { + return Arrays.deepToString((Object[])arg); // go deep, baby + + } else if (arg instanceof int[]) { + return Arrays.toString((int[])arg); + + } else if (arg instanceof byte[]) { + return Arrays.toString((byte[])arg); + + } else if (arg instanceof char[]) { + return Arrays.toString((char[])arg); + + } else if (arg instanceof short[]) { + return Arrays.toString((short[])arg); + + } else if (arg instanceof long[]) { + return Arrays.toString((long[])arg); + + } else if (arg instanceof float[]) { + return Arrays.toString((float[])arg); + + } else if (arg instanceof double[]) { + return Arrays.toString((double[])arg); + + } else if (arg instanceof boolean[]) { + return Arrays.toString((boolean[])arg); + } + throw new AssertionError("Not an array: " + arg); + } + protected boolean _hasArgs; protected StringBuilder _log; }