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 2009/12/21 19:57:49 UTC

svn commit: r892928 - in /myfaces/extensions/scripting/trunk/core/core/src: main/java/org/apache/myfaces/scripting/core/dependencyScan/ test/java/org/apache/myfaces/extensions/scripting/dependencyScan/

Author: werpu
Date: Mon Dec 21 18:57:48 2009
New Revision: 892928

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

making the scanner thread save so that it can be used as singleton from multiple threads

Modified:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassLogUtils.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java
    myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassLogUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassLogUtils.java?rev=892928&r1=892927&r2=892928&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassLogUtils.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassLogUtils.java Mon Dec 21 18:57:48 2009
@@ -35,6 +35,11 @@
     private static final String DOMAIN_COM_SUN = "com.sun";
     private static final String DOMAIN_APACHE = "org.apache.";
     private static final String DOMAIN_MYFACES = "org.apache.myfaces";
+    private static final String DOMAIN_JBOSS = "org.jboss";
+    private static final String DOMAIN_SPRING = "org.springframework";
+    private static final String DOMAIN_JUNIT = "org.junit";
+    private static final String DOMAIN_ECLIPSE = "org.eclipse";
+    private static final String DOMAIN_NETBEANS = "org.netbeans";
 
 
     /**
@@ -49,10 +54,21 @@
         //We dont use a regexp here, because an test has shown that direct startsWith is 5 times as fast as applying
         //a precompiled regexp with match
 
-        return in.startsWith(DOMAIN_JAVA) || in.startsWith(DOMAIN_JAVAX) || in.startsWith(DOMAIN_COM_SUN) ||
+        //shortcuts for a faster killing of the add before going into the heavier
+        //whitelist check, this one kills off classes which belong to standard
+        //and semi standard namespaces before whitelisting the rest
+        return in.startsWith(DOMAIN_JAVA) ||
+                in.startsWith(DOMAIN_JAVAX) ||
+                in.startsWith(DOMAIN_COM_SUN) ||
+                in.startsWith(DOMAIN_JBOSS) ||
+                in.startsWith(DOMAIN_SPRING) ||
+                in.startsWith(DOMAIN_JUNIT)  ||
+                in.startsWith(DOMAIN_ECLIPSE) ||
+                in.startsWith(DOMAIN_NETBEANS) ||
                 //apache domain has to be treated specially myfaces can be referenced due to our tests and demos, otherwise this one
                 //is also treated as taboo zone
-                ((in.startsWith(DOMAIN_APACHE) && !in.startsWith(DOMAIN_MYFACES)));
+                ((in.startsWith(DOMAIN_APACHE) &&
+                        !in.startsWith(DOMAIN_MYFACES)));
     }
 
     /**

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java?rev=892928&r1=892927&r2=892928&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DefaultDependencyScanner.java Mon Dec 21 18:57:48 2009
@@ -32,22 +32,26 @@
  *          <p/>
  *          A dependency scanner for
  *          our classes
+ *          <p /> this class is thread save on object level
+ *          and can be used as a singleton
+ *          <p/>
  */
 public class DefaultDependencyScanner implements DependencyScanner {
 
     final ClassScanVisitor cp = new ClassScanVisitor();
     Set<String> whiteList;
     String className;
+
     /**
      * @param className
      * @return
      */
-    public final Set<String> fetchDependencies(String className, Set<String> whiteList) {
+    public synchronized final Set<String> fetchDependencies(String className, final Set<String> whiteList) {
         Set<String> retVal = new HashSet<String>();
         this.whiteList = whiteList;
         this.className = className;
         investigateInheritanceHierarchy(retVal);
-      return retVal;
+        return retVal;
     }
 
 
@@ -75,13 +79,13 @@
             }
 
         } catch (ClassNotFoundException e) {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            e.printStackTrace(); 
         }
     }
 
     /**
      * scans one level of the inheritance hierarchy
-     * 
+     *
      * @param retVal
      * @param currentClassName
      */
@@ -99,5 +103,4 @@
     }
 
 
-
 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java?rev=892928&r1=892927&r2=892928&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java Mon Dec 21 18:57:48 2009
@@ -41,12 +41,12 @@
         whiteList.add("org.apache.xxx");
         whiteList.add("org.apache.myfaces.extensions.scripting");
 
-        //long before = System.currentTimeMillis();
+        long before = System.currentTimeMillis();
 
         Set<String> retVal = (new DefaultDependencyScanner()).fetchDependencies("org.apache.myfaces.extensions.scripting.dependencyScan.probes.Probe", whiteList);
-        //long after = System.currentTimeMillis();
+        long after = System.currentTimeMillis();
 
-        //System.out.println(after-before);
+        System.out.println(after-before);
 
         assertTrue(retVal.size() > 0);