Author: ravn Date: Sat Dec 27 22:35:01 2008 New Revision: 1262 Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/agent/AgentPremain.java slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java
Log: accidentially used MessageFormatter in agent, that code is not visible there Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/agent/AgentPremain.java ============================================================================== --- slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/agent/AgentPremain.java (original) +++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/agent/AgentPremain.java Sat Dec 27 22:35:01 2008 @@ -1,7 +1,5 @@ package org.slf4j.agent; -import static org.slf4j.helpers.MessageFormatter.format; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.lang.instrument.Instrumentation; @@ -16,92 +14,94 @@ */ public class AgentPremain { - private static final String START_MSG = "Start at {}"; - private static final String STOP_MSG = "Stop at {}, execution time = {} ms"; - - /** - * JavaAgent premain entry point as specified in the MANIFEST.MF file. See - * {...@link http://java.sun.com/javase/6/docs/api/java/lang/instrument/package-summary.html} - * for details. - * - * @param agentArgument - * string provided after "=" up to first space - * @param instrumentation - * instrumentation environment provided by the JVM - */ - public static void premain(String agentArgument, - Instrumentation instrumentation) { - - LogTransformer.Builder builder = new LogTransformer.Builder(); - builder = builder.addEntryExit(true); - - if (agentArgument != null) { - Properties args = parseArguments(agentArgument, ","); - - if (args.containsKey(AgentOptions.VERBOSE)) { - builder = builder.verbose(true); - } - - if (args.containsKey(AgentOptions.TIME)) { - printStartStopTimes(); - } - - if (args.containsKey(AgentOptions.IGNORE)) { - String ignore = args.getProperty(AgentOptions.IGNORE); - builder = builder.ignore(ignore.split(":")); - } - - if (args.containsKey(AgentOptions.LEVEL)) { - builder = builder.level(args.getProperty(AgentOptions.LEVEL)); - } - } - - instrumentation.addTransformer(builder.build()); - } - - /** - * Consider the argument string to be a property file (by converting the - * splitter character to line feeds), and then reading it like any other - * property file. - * - * - * @param agentArgument - * string given by instrumentation framework - * @param separator - * String to convert to line feeds - * @return argument converted to properties - */ - private static Properties parseArguments(String agentArgument, - String separator) { - Properties p = new Properties(); - try { - String argumentAsLines = agentArgument.replaceAll(separator, "\n"); - p.load(new ByteArrayInputStream(argumentAsLines.getBytes())); - } catch (IOException e) { - String s = "Could not load arguments as properties"; - throw new RuntimeException(s, e); - } - return p; - } - - /** - * Print the start message to System.err with the time NOW, and register a - * shutdown hook which will print the stop message to System.err with the time - * then and the number of milliseconds passed since. - * - */ - private static void printStartStopTimes() { - final long start = System.currentTimeMillis(); - System.err.println(format(START_MSG, new Date())); - - Thread hook = new Thread() { - @Override - public void run() { - long timePassed = System.currentTimeMillis() - start; - String message = format(STOP_MSG, new Date(), timePassed); - System.err.println(message); - } - }; - Runtime.getRuntime().addShutdownHook(hook); - } + /** + * JavaAgent premain entry point as specified in the MANIFEST.MF file. See + * {...@link http + * ://java.sun.com/javase/6/docs/api/java/lang/instrument/package- + * summary.html} for details. + * + * @param agentArgument + * string provided after "=" up to first space + * @param instrumentation + * instrumentation environment provided by the JVM + */ + public static void premain(String agentArgument, + Instrumentation instrumentation) { + + // We cannot do sanity checks for slf4j here as the jars loaded + // by the application are not visible here. + + LogTransformer.Builder builder = new LogTransformer.Builder(); + builder = builder.addEntryExit(true); + + if (agentArgument != null) { + Properties args = parseArguments(agentArgument, ","); + + if (args.containsKey(AgentOptions.VERBOSE)) { + builder = builder.verbose(true); + } + + if (args.containsKey(AgentOptions.TIME)) { + printStartStopTimes(); + } + + if (args.containsKey(AgentOptions.IGNORE)) { + String ignore = args.getProperty(AgentOptions.IGNORE); + builder = builder.ignore(ignore.split(":")); + } + + if (args.containsKey(AgentOptions.LEVEL)) { + builder = builder.level(args.getProperty(AgentOptions.LEVEL)); + } + } + + instrumentation.addTransformer(builder.build()); + } + + /** + * Consider the argument string to be a property file (by converting the + * splitter character to line feeds), and then reading it like any other + * property file. + * + * + * @param agentArgument + * string given by instrumentation framework + * @param separator + * String to convert to line feeds + * @return argument converted to properties + */ + private static Properties parseArguments(String agentArgument, + String separator) { + Properties p = new Properties(); + try { + String argumentAsLines = agentArgument.replaceAll(separator, "\n"); + p.load(new ByteArrayInputStream(argumentAsLines.getBytes())); + } catch (IOException e) { + String s = "Could not load arguments as properties"; + throw new RuntimeException(s, e); + } + return p; + } + + /** + * Print the start message to System.err with the time NOW, and register a + * shutdown hook which will print the stop message to System.err with the + * time then and the number of milliseconds passed since. + * + */ + private static void printStartStopTimes() { + final long start = System.currentTimeMillis(); + + System.err.println("Start at " + new Date()); + + Thread hook = new Thread() { + @Override + public void run() { + long timePassed = System.currentTimeMillis() - start; + System.err.println("Stop at " + new Date() + + ", execution time = " + timePassed + " ms"); + } + }; + Runtime.getRuntime().addShutdownHook(hook); + } } \ No newline at end of file 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 Sat Dec 27 22:35:01 2008 @@ -32,7 +32,7 @@ * System.currentTimeMilis when an instance of the class failed to render. */ - final static Map<Class, Object> unrenderableClasses = new WeakHashMap<Class, Object>(); + final static Map<Class<?>, Object> unrenderableClasses = new WeakHashMap<Class<?>, Object>(); /** * Returns o.toString() unless it throws an exception (which causes it to be @@ -48,7 +48,7 @@ if (o == null) { return String.valueOf(o); } - Class objectClass = o.getClass(); + Class<?> objectClass = o.getClass(); if (unrenderableClasses.containsKey(objectClass) == false) { try { if (objectClass.isArray()) { @@ -58,6 +58,8 @@ } } catch (Exception e) { Long now = new Long(System.currentTimeMillis()); + System.err.println("Disabling exception throwing class " + + objectClass.getName() + ", " + e.getMessage()); unrenderableClasses.put(objectClass, now); } } @@ -74,8 +76,8 @@ * @param objectClass * @return */ - private static StringBuffer renderArray(Object o, Class objectClass) { - Class componentType = objectClass.getComponentType(); + private static StringBuffer renderArray(Object o, Class<?> objectClass) { + Class<?> componentType = objectClass.getComponentType(); StringBuffer sb = new StringBuffer(ARRAY_PREFIX); if (componentType.isPrimitive() == false) { _______________________________________________ dev mailing list dev@slf4j.org http://www.slf4j.org/mailman/listinfo/dev