You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2010/01/26 20:17:22 UTC

svn commit: r903374 - in /myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting: core/dependencyScan/ClassScanVisitor.java core/dependencyScan/MethodScanVisitor.java loaders/java/JavaDependencyScanner.java

Author: werpu
Date: Tue Jan 26 19:17:21 2010
New Revision: 903374

URL: http://svn.apache.org/viewvc?rev=903374&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-53

Modified:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanVisitor.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/MethodScanVisitor.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaDependencyScanner.java

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanVisitor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanVisitor.java?rev=903374&r1=903373&r2=903374&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanVisitor.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanVisitor.java Tue Jan 26 19:17:21 2010
@@ -20,18 +20,19 @@
 
 import org.objectweb.asm.*;
 
-import java.util.*;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
-
 class ClassScanVisitor implements ClassVisitor {
 
     Set<String> dependencies;
     Set<String> whiteList;
-    //static final Logger log = Logger.getLogger("ClassScanVisitor");
+    static final Logger log = Logger.getLogger("ClassScanVisitor");
 
     public ClassScanVisitor() {
 

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/MethodScanVisitor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/MethodScanVisitor.java?rev=903374&r1=903373&r2=903374&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/MethodScanVisitor.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/MethodScanVisitor.java Tue Jan 26 19:17:21 2010
@@ -24,6 +24,8 @@
 import org.objectweb.asm.Label;
 
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * @author Werner Punz (latest modification by $Author$)
@@ -32,6 +34,9 @@
 
 class MethodScanVisitor implements MethodVisitor {
 
+   // static final Logger log = Logger.getLogger("ClassScanVisitor");
+    
+
     final Set<String> dependencies;
     final Set<String> whiteList;
 
@@ -75,19 +80,27 @@
 
     public void visitTypeInsn(int i, String castType) {
         //cast
-        //log.log(Level.INFO, "TypeInsn: {0} ", new String[]{castType});
+       // log.log(Level.INFO, "TypeInsn: {0} ", new String[]{castType});
         ClassScanUtils.logParmList(dependencies, whiteList, castType);
     }
 
     public void visitFieldInsn(int i, String s, String s1, String s2) {
-        //log.log(Level.INFO, "visitFieldInsn {0} {1} {2}", new Object[]{s, s1, s2});
+    //    log.log(Level.INFO, "visitFieldInsn {0} {1} {2}", new Object[]{s, s1, s2});
         //ClassScanUtils.logParmList(dependencies, castType);
-        ClassScanUtils.logParmList(dependencies, whiteList, s2);
+        //we have to deal with static imports as special case of field insertions
+       if(s1 != null && s1.length() > 6 && s1.startsWith("class$")) {
+            //special fallback for groovy static imports which are added as fields
+            s1 = "L"+s1.substring(6).replaceAll("\\$",".")+";";
+            ClassScanUtils.logParmList(dependencies, whiteList,s1, s2);
+       } else {
+            ClassScanUtils.logParmList(dependencies, whiteList, s2);
+        }
     }
 
     public void visitMethodInsn(int i, String s, String s1, String s2) {
-        //log.log(Level.INFO, "visitMethodIsn {0} {1} {2}", new Object[]{s, s1, s2});
-        ClassScanUtils.logParmList(dependencies, whiteList, s2);
+
+     //   log.log(Level.INFO, "visitMethodIsn {0} {1} {2}", new Object[]{s, s1, s2});
+        ClassScanUtils.logParmList(dependencies, whiteList,"L"+s+";", s2);
     }
 
     public void visitJumpInsn(int i, Label label) {

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaDependencyScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaDependencyScanner.java?rev=903374&r1=903373&r2=903374&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaDependencyScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaDependencyScanner.java Tue Jan 26 19:17:21 2010
@@ -85,15 +85,13 @@
     }
 
     private final void runScan(final Set<String> possibleDynamicClasses, final ClassLoader loader, String dynamicClass) {
-
-        Set<String> referrers = _dependecyScanner.fetchDependencies(loader, dynamicClass, possibleDynamicClasses);
+        Set<String> referencedClasses = _dependecyScanner.fetchDependencies(loader, dynamicClass, possibleDynamicClasses);
         //we make it in two ops because if we do the self dependency
         //removal in the scanner itself the code  should not break
-        referrers.remove(dynamicClass);
-        if (!referrers.isEmpty()) {
-            WeavingContext.getFileChangedDaemon().getDependencyMap().addDependencies(dynamicClass, referrers);
+        referencedClasses.remove(dynamicClass);
+        if (!referencedClasses.isEmpty()) {
+            WeavingContext.getFileChangedDaemon().getDependencyMap().addDependencies(dynamicClass, referencedClasses);
         }
-
     }