[slf4j-dev] svn commit: r1217 - in slf4j/trunk/slf4j-ext/src/main/java/org/slf4j: agent instrumentation

ravn at slf4j.org ravn at slf4j.org
Sun Oct 26 14:33:48 CET 2008


Author: ravn
Date: Sun Oct 26 14:33:48 2008
New Revision: 1217

Modified:
   slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/agent/AgentPremain.java
   slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/JavassistHelper.java

Log:
added javadoc

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	Sun Oct 26 14:33:48 2008
@@ -29,14 +29,11 @@
   public static void premain(String agentArgument,
       Instrumentation instrumentation) {
 
-    System.err.println("THIS JAVAAGENT IS NOT RELEASED YET.  "
-        + "DO NOT USE IN PRODUCTION ENVIRONMENTS.");
-
     LogTransformer.Builder builder = new LogTransformer.Builder();
     builder = builder.addEntryExit(true);
 
     if (agentArgument != null) {
-      Properties args = parseArguments(agentArgument);
+      Properties args = parseArguments(agentArgument, ";");
 
       if (args.containsKey("verbose")) {
         builder = builder.verbose(true);
@@ -60,11 +57,24 @@
     instrumentation.addTransformer(builder.build());
   }
 
-  private static Properties parseArguments(String agentArgument) {
+  /**
+   * 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 {
-      byte[] bytes = agentArgument.replaceAll(";", "\n").getBytes();
-      p.load(new ByteArrayInputStream(bytes));
+      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);
@@ -73,9 +83,9 @@
   }
 
   /**
-   * Print the start message with the time NOW, and register a shutdown hook
-   * which will print the stop message with the time then and the number of
-   * milliseconds passed since.
+   * 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() {

Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/JavassistHelper.java
==============================================================================
--- slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/JavassistHelper.java	(original)
+++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/JavassistHelper.java	Sun Oct 26 14:33:48 2008
@@ -10,7 +10,7 @@
 
 /**
  * Helper methods for Javassist functionality.
- *
+ * 
  */
 public class JavassistHelper {
 
@@ -84,15 +84,16 @@
     StringBuffer sb = new StringBuffer(methodName + "(\" ");
     for (int i = 0; i < parameterTypes.length; i++) {
       if (i > 0) {
+        // add a comma and a space between printed values
         sb.append(" + \", \" ");
       }
 
       CtClass parameterType = parameterTypes[i];
       boolean isArray = parameterType.isArray();
-      CtClass arrayOf = parameterType.getComponentType();
+      CtClass arrayType = parameterType.getComponentType();
       if (isArray) {
-        while (arrayOf.isArray()) {
-          arrayOf = arrayOf.getComponentType();
+        while (arrayType.isArray()) {
+          arrayType = arrayType.getComponentType();
         }
       }
 
@@ -101,7 +102,7 @@
       sb.append("\" + \"=");
 
       // use Arrays.asList() to render array of objects.
-      if (isArray && !arrayOf.isPrimitive()) {
+      if (isArray && !arrayType.isPrimitive()) {
         sb.append("\"+ java.util.Arrays.asList($" + (i + 1) + ")");
       } else {
         sb.append("\"+ $" + (i + 1));
@@ -115,15 +116,17 @@
 
   /**
    * Determine the name of parameter with index i in the given method. Use the
-   * locals attributes about local variables from the classfile.
+   * locals attributes about local variables from the classfile. Note: This is
+   * still work in progress.
    * 
    * @param method
    * @param locals
    * @param i
-   * @return
+   * @return the name of the parameter if available or a number if not.
    */
   static String parameterNameFor(CtBehavior method,
       LocalVariableAttribute locals, int i) {
+
     if (locals == null) {
       return Integer.toString(i + 1);
     }
@@ -144,7 +147,7 @@
     }
     String variableName = locals.variableName(j);
     if (variableName.equals("this")) {
-      System.err.println("this returned as a parameter name for "
+      System.err.println("'this' returned as a parameter name for "
           + method.getName() + " index " + j + ", names are probably shifted.");
     }
     return variableName;



More information about the slf4j-dev mailing list