java-callgraph

Details

diff --git a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java
index 8673eaf..fe804ae 100644
--- a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java
+++ b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java
@@ -47,65 +47,75 @@ public class Instrumenter implements ClassFileTransformer {
     static List<Pattern> pkgIncl = new ArrayList<Pattern>();
     static List<Pattern> pkgExcl = new ArrayList<Pattern>();
 
-    public static void premain(String argument,
-            Instrumentation instrumentation) {
-        
-        //incl=com.foo.*,gr.bar.foo;excl=com.bar.foo.*
-        
+    public static void premain(String argument, Instrumentation instrumentation) {
+
+        // incl=com.foo.*,gr.bar.foo;excl=com.bar.foo.*
+
+        if (argument == null) {
+            err("Missing configuration argument");
+            return;
+        }
+
+        err("Argument is: " + argument);
+
         String[] tokens = argument.split(";");
-        
+
         if (tokens.length <= 1) {
-            System.err.print("Missing delimeter ; from argument:" + tokens);
+            err("Missing delimeter ;");
             return;
         }
-        
+
         for (String token : tokens) {
-            String[] args = token.split("="); 
-            if (args.length <= 2) {
-                System.err.print("Missing argument delimeter =:" + token);
+            String[] args = token.split("=");
+            if (args.length < 2) {
+                err("Missing argument delimeter =:" + token);
                 return;
             }
-            
+
             String argtype = args[0];
-            
-            if (!argtype.equals("inc") || !argtype.equals("excl")) {
-                System.err.print("wrong argument:" + argtype);
+
+            if (!argtype.equals("incl") && !argtype.equals("excl")) {
+                err("Wrong argument: " + argtype);
                 return;
             }
-            
+
             String[] patterns = args[1].split(",");
-            
+
             for (String pattern : patterns) {
                 Pattern p = null;
+                err("Compiling " + argtype + " pattern:" + pattern);
                 try {
                     p = Pattern.compile(pattern);
                 } catch (PatternSyntaxException pse) {
-                    System.err.print("pattern: " + pattern + " not valid, ignoring");
+                    err("pattern: " + pattern + " not valid, ignoring");
                 }
                 if (argtype.equals("inc"))
                     pkgIncl.add(p);
-                else 
+                else
                     pkgExcl.add(p);
             }
         }
-        
+
         instrumentation.addTransformer(new Instrumenter());
     }
 
     public byte[] transform(ClassLoader loader, String className, Class clazz,
             java.security.ProtectionDomain domain, byte[] bytes) {
         boolean enhanceClass = false;
-        
+
+        String name = className.replace("/", ".");
+        err("Examining class: " + name);
+
         for (Pattern p : pkgIncl) {
-            Matcher m = p.matcher(clazz.getCanonicalName());
+            Matcher m = p.matcher(name);
             if (m.matches()) {
                 enhanceClass = true;
                 break;
             }
         }
-        
+
         for (Pattern p : pkgExcl) {
-            Matcher m = p.matcher(clazz.getCanonicalName());
+            Matcher m = p.matcher(name);
             if (m.matches()) {
                 enhanceClass = false;
                 break;
@@ -115,6 +125,7 @@ public class Instrumenter implements ClassFileTransformer {
         if (enhanceClass) {
             return enhanceClass(className, bytes);
         } else {
+            err("Examining class: " + name);
             return bytes;
         }
     }
@@ -151,4 +162,8 @@ public class Instrumenter implements ClassFileTransformer {
                 + "\",\"" + method.getName() + "\");");
         method.insertAfter("gr.gousiosg.javacg.dyn.pop();");
     }
+
+    private static void err(String msg) {
+        System.err.println("[JAVACG-DYN] " + msg);
+    }
 }
\ No newline at end of file