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);