package restx.common; /** * Date: 29/11/13 * Time: 11:13 */ public class MoreObjects { public static String toString(Class clazz) { if (clazz == null) { return "null"; } return clazz.getName() + "[" + toString(clazz.getClassLoader()) + "]"; } public static String toString(ClassLoader classLoader) { if (classLoader == null) { return ""; } if (classLoader.getClass().getName().equals("sun.misc.Launcher$AppClassLoader")) { return "AppClassLoader"; } else { String classloaderStr = classLoader.toString(); // some classloaders have very detailed toString implementation and usually have new lines inside in // that cases (eg Tomcat WebappClassLoader). This breaks the layout when used in RESTX cases, // so we keep only the data before the new line classloaderStr = cutAfter(classloaderStr, '\r'); classloaderStr = cutAfter(classloaderStr, '\n'); return classloaderStr; } } private static String cutAfter(String str, char c) { int index = str.indexOf(c); if (index != -1) { return str.substring(0, index); } else { return str; } } }