// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package org.slf4j.helpers; import java.io.PrintStream; import java.util.HashMap; import java.util.Map; // Referenced classes of package org.slf4j.helpers: // FormattingTuple public final class MessageFormatter { static final char DELIM_START = 123; static final char DELIM_STOP = 125; static final String DELIM_STR = "{}"; private static final char ESCAPE_CHAR = 92; public MessageFormatter() { } public static final FormattingTuple arrayFormat(String s, Object aobj[]) { Throwable throwable = getThrowableCandidate(aobj); if (s == null) { return new FormattingTuple(null, aobj, throwable); } if (aobj == null) { return new FormattingTuple(s); } int i = 0; StringBuilder stringbuilder = new StringBuilder(s.length() + 50); int j = 0; while (j < aobj.length) { int k = s.indexOf("{}", i); if (k == -1) { if (i == 0) { return new FormattingTuple(s, aobj, throwable); } else { stringbuilder.append(s.substring(i, s.length())); return new FormattingTuple(stringbuilder.toString(), aobj, throwable); } } if (isEscapedDelimeter(s, k)) { if (!isDoubleEscaped(s, k)) { j--; stringbuilder.append(s.substring(i, k - 1)); stringbuilder.append('{'); i = k + 1; } else { stringbuilder.append(s.substring(i, k - 1)); deeplyAppendParameter(stringbuilder, aobj[j], new HashMap()); i = k + 2; } } else { stringbuilder.append(s.substring(i, k)); deeplyAppendParameter(stringbuilder, aobj[j], new HashMap()); i = k + 2; } j++; } stringbuilder.append(s.substring(i, s.length())); if (j < aobj.length - 1) { return new FormattingTuple(stringbuilder.toString(), aobj, throwable); } else { return new FormattingTuple(stringbuilder.toString(), aobj, null); } } private static void booleanArrayAppend(StringBuilder stringbuilder, boolean aflag[]) { stringbuilder.append('['); int j = aflag.length; for (int i = 0; i < j; i++) { stringbuilder.append(aflag[i]); if (i != j - 1) { stringbuilder.append(", "); } } stringbuilder.append(']'); } private static void byteArrayAppend(StringBuilder stringbuilder, byte abyte0[]) { stringbuilder.append('['); int j = abyte0.length; for (int i = 0; i < j; i++) { stringbuilder.append(abyte0[i]); if (i != j - 1) { stringbuilder.append(", "); } } stringbuilder.append(']'); } private static void charArrayAppend(StringBuilder stringbuilder, char ac[]) { stringbuilder.append('['); int j = ac.length; for (int i = 0; i < j; i++) { stringbuilder.append(ac[i]); if (i != j - 1) { stringbuilder.append(", "); } } stringbuilder.append(']'); } private static void deeplyAppendParameter(StringBuilder stringbuilder, Object obj, Map map) { if (obj == null) { stringbuilder.append("null"); return; } if (!obj.getClass().isArray()) { safeObjectAppend(stringbuilder, obj); return; } if (obj instanceof boolean[]) { booleanArrayAppend(stringbuilder, (boolean[])(boolean[])obj); return; } if (obj instanceof byte[]) { byteArrayAppend(stringbuilder, (byte[])(byte[])obj); return; } if (obj instanceof char[]) { charArrayAppend(stringbuilder, (char[])(char[])obj); return; } if (obj instanceof short[]) { shortArrayAppend(stringbuilder, (short[])(short[])obj); return; } if (obj instanceof int[]) { intArrayAppend(stringbuilder, (int[])(int[])obj); return; } if (obj instanceof long[]) { longArrayAppend(stringbuilder, (long[])(long[])obj); return; } if (obj instanceof float[]) { floatArrayAppend(stringbuilder, (float[])(float[])obj); return; } if (obj instanceof double[]) { doubleArrayAppend(stringbuilder, (double[])(double[])obj); return; } else { objectArrayAppend(stringbuilder, (Object[])(Object[])obj, map); return; } } private static void doubleArrayAppend(StringBuilder stringbuilder, double ad[]) { stringbuilder.append('['); int j = ad.length; for (int i = 0; i < j; i++) { stringbuilder.append(ad[i]); if (i != j - 1) { stringbuilder.append(", "); } } stringbuilder.append(']'); } private static void floatArrayAppend(StringBuilder stringbuilder, float af[]) { stringbuilder.append('['); int j = af.length; for (int i = 0; i < j; i++) { stringbuilder.append(af[i]); if (i != j - 1) { stringbuilder.append(", "); } } stringbuilder.append(']'); } public static final FormattingTuple format(String s, Object obj) { return arrayFormat(s, new Object[] { obj }); } public static final FormattingTuple format(String s, Object obj, Object obj1) { return arrayFormat(s, new Object[] { obj, obj1 }); } static final Throwable getThrowableCandidate(Object aobj[]) { if (aobj == null || aobj.length == 0) { return null; } aobj = ((Object []) (aobj[aobj.length - 1])); if (aobj instanceof Throwable) { return (Throwable)aobj; } else { return null; } } private static void intArrayAppend(StringBuilder stringbuilder, int ai[]) { stringbuilder.append('['); int j = ai.length; for (int i = 0; i < j; i++) { stringbuilder.append(ai[i]); if (i != j - 1) { stringbuilder.append(", "); } } stringbuilder.append(']'); } static final boolean isDoubleEscaped(String s, int i) { return i >= 2 && s.charAt(i - 2) == '\\'; } static final boolean isEscapedDelimeter(String s, int i) { while (i == 0 || s.charAt(i - 1) != '\\') { return false; } return true; } private static void longArrayAppend(StringBuilder stringbuilder, long al[]) { stringbuilder.append('['); int j = al.length; for (int i = 0; i < j; i++) { stringbuilder.append(al[i]); if (i != j - 1) { stringbuilder.append(", "); } } stringbuilder.append(']'); } private static void objectArrayAppend(StringBuilder stringbuilder, Object aobj[], Map map) { stringbuilder.append('['); if (!map.containsKey(((Object) (aobj)))) { map.put(((Object) (aobj)), null); int j = aobj.length; for (int i = 0; i < j; i++) { deeplyAppendParameter(stringbuilder, aobj[i], map); if (i != j - 1) { stringbuilder.append(", "); } } map.remove(((Object) (aobj))); } else { stringbuilder.append("..."); } stringbuilder.append(']'); } private static void safeObjectAppend(StringBuilder stringbuilder, Object obj) { try { stringbuilder.append(obj.toString()); return; } catch (Throwable throwable) { System.err.println((new StringBuilder()).append("SLF4J: Failed toString() invocation on an object of type [").append(obj.getClass().getName()).append("]").toString()); throwable.printStackTrace(); stringbuilder.append("[FAILED toString()]"); return; } } private static void shortArrayAppend(StringBuilder stringbuilder, short aword0[]) { stringbuilder.append('['); int j = aword0.length; for (int i = 0; i < j; i++) { stringbuilder.append(aword0[i]); if (i != j - 1) { stringbuilder.append(", "); } } stringbuilder.append(']'); } }