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/03/01 13:12:06 UTC
svn commit: r917483 - in /myfaces/extensions/scripting/trunk/core/core/src:
main/java/org/apache/myfaces/scripting/core/dependencyScan/
main/java/org/apache/myfaces/scripting/core/dependencyScan/api/
main/java/org/apache/myfaces/scripting/core/dependen...
Author: werpu
Date: Mon Mar 1 12:12:05 2010
New Revision: 917483
URL: http://svn.apache.org/viewvc?rev=917483&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-74
namespace refactoring of the scanner submodule for the next parts
Added:
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/ClassFilter.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassFilter.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyRegistry.java (with props)
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyScanner.java
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassDependencies.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassDependencies.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanStrategy.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanStrategy.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanUtils.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanVisitor.java (contents, props changed)
- copied, changed from r916620, 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/core/ExtendedClassReader.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ExtendedClassReader.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/MethodScanVisitor.java (contents, props changed)
- copied, changed from r916620, 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/core/dependencyScan/filter/
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/StandardNamespaceFilter.java (with props)
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/WhitelistFilter.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/WhitelistFilter.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyMapRegistrationStrategy.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyMapRegistrationStrategy.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyRegistryImpl.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistryImpl.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/ExternalFilterDependencyRegistry.java (contents, props changed)
- copied, changed from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistry.java
Removed:
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassDependencies.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassFilter.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanStrategy.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java
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/DependencyMapRegistrationStrategy.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistry.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistryImpl.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ExtendedClassReader.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/core/dependencyScan/RegistryBasedDependencyScanner.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/StandardNamespaceFilter.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/WhitelistFilter.java
Modified:
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/GroovyDependencyScanner.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaDependencyScanner.java
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java
myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/DependencyScannerTest.java
myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/FilterTest.java
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java?rev=917483&r1=917482&r2=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java Mon Mar 1 12:12:05 2010
@@ -18,7 +18,17 @@
*/
package org.apache.myfaces.scripting.core.dependencyScan;
+import org.apache.myfaces.scripting.core.dependencyScan.core.ClassScanUtils;
+import org.apache.myfaces.scripting.core.dependencyScan.core.ClassScanVisitor;
+import org.apache.myfaces.scripting.core.dependencyScan.core.ExtendedClassReader;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.ExternalFilterDependencyRegistry;
+import org.objectweb.asm.ClassReader;
+
+import java.io.IOException;
+import java.util.HashSet;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* @author Werner Punz (latest modification by $Author$)
@@ -26,35 +36,163 @@
* <p/>
* A dependency scanner for
* our classes
+ * <p /> this class is thread save on object level
+ * and can be used as a singleton
* <p/>
- * The idea beind it is that a dependency scanner
- * should scan loaded classes for their dependencies
- * into a whitelist of packages, a dynamically loaded class
- * then now can taint other classes if altered
- * which are in the whitelist so that those artefacts get reloaded
- * <p/>
- * The whitelist itself for now should only be
- * classes from dynamically loaded packages
*/
-public interface DependencyScanner {
+public class DependencyScanner {
+ final ClassScanVisitor _cp = new ClassScanVisitor();
+ Logger _log = Logger.getLogger(this.getClass().getName());
+
+ public DependencyScanner() {
+
+ }
+
+ public synchronized final void fetchDependencies(ClassLoader loader, String scanIdentifier, String className, ExternalFilterDependencyRegistry registry) {
+ Set<String> retVal = new HashSet<String>();
+ _cp.setScanIdentifier(scanIdentifier);
+
+ investigateInheritanceHierarchy(loader, className, registry);
+ registry.flush(scanIdentifier);
+ }
+
+ /**
+ * @param className the class name of the class which has to be investigated for the code dependencies
+ * @return a set of dependencies as string representation of their class names
+ * @deprecated
+ */
+ public synchronized final Set<String> fetchDependencies(ClassLoader loader, String className, final Set<String> whiteList) {
+ return null;
+ }
/**
- * fetch the dependencies from a given classname and
- * register them in a registry
+ * this investigates the classes inheritance hierarchy for
+ * more dependencies, for now annotations and interfaces
+ * are omitted since they are not vital to our jsf dependency checks
+ * (maybe in the long run we will add interfaces and annotations as well
+ * but for now we will leave them away for speed reasons)
*
- * @param loader the classloader responsible for serving the infrastructure
- * @param className the classname from which the dependencies have to be fetched
- * @param registry our registry which should store the dependencies
+ * @param loader the classLoader which should be used for the hierarchy scanning
+ * @param className the className which has to be investigated
+ * @param registry the dependency registry
*/
- public void fetchDependencies(ClassLoader loader, String className, DependencyRegistry registry);
+ private void investigateInheritanceHierarchy(ClassLoader loader, String className, ExternalFilterDependencyRegistry registry) {
+ //we now have to fetch the parent hierarchy
+
+ try {
+ Class toCheck = loader.loadClass(className);
+ if (toCheck == null) {
+ return;
+ }
+ scanCurrentClass(loader, className, registry);
+
+ //we scan the hierarchy because we might have compiled-uncompiled-compiled connections, the same goes for the interfaces
+ //the basic stuff can be covered by our class scanning but for more advanced usecase we have to walk the entire hierarchy per class!
+ scanHierarchy(loader, toCheck, registry, true);
+ //our asm code normally covers this but since the scanner has to work outside of asm we do it twice, the same goes for the hierarchy
+ scanInterfaces(loader, toCheck, registry);
+ } catch (ClassNotFoundException e) {
+ _log.log(Level.SEVERE, "DefaultDependencyScanner.investigateInheritanceHierarchy() ", e);
+ }
+ }
+
+ private void scanInterfaces(ClassLoader loader, Class toCheck, ExternalFilterDependencyRegistry registry) {
+ Class[] interfaces = toCheck.getInterfaces();
+ if (interfaces == null || interfaces.length == 0) {
+ return;
+ }
+
+ for (Class currentInterface : interfaces) {
+ if (ClassScanUtils.isStandardNamespace(currentInterface.getName())) {
+ continue;
+ }
+ scanCurrentClass(loader, currentInterface.getName(), registry);
+
+ //We scan also our parent interfaces to get a full coverage
+ //but since interfaces do not implement anything we can cover
+ //the parents
+ scanHierarchy(loader, currentInterface, registry, false);
+ }
+ }
/**
- * soon to be deprecated, fetch dependencies working on an existing whitelist system
+ * Scans the interface hierarchy of our class
+ * the normal interface scan is processed already on class level
+ * this method is needed to process our parent interface relationships
+ * before triggering the ASM bytecode processing
*
- * @param loader
- * @param className
- * @param whiteList
- * @return a list of dependencies from the class <className>
+ * @param loader the infrastructural classloader
+ * @param toCheck the class which needs to be checked
+ * @param registry the dependency registry
+ * @param interfaceCheck if true also interfaces within the hierarchy will be processed, false if not
*/
- public Set<String> fetchDependencies(ClassLoader loader, String className, Set<String> whiteList);
+ private void scanInterfaces(ClassLoader loader, Class toCheck, ExternalFilterDependencyRegistry registry, boolean interfaceCheck) {
+ Class parent = toCheck.getSuperclass();
+
+ while (parent != null && !ClassScanUtils.isStandardNamespace(parent.getName())) {
+ if (interfaceCheck) {
+ //we recursively descend into our interfaces
+ scanInterfaces(loader, parent, registry);
+ }
+
+ scanCurrentClass(loader, parent.getName(), registry);
+ parent = parent.getSuperclass();
+
+ }
+ }
+
+ /**
+ * scans the parent child relationship hierarchy
+ * We have to go through the entire hierarchy except for standard
+ * namespaces due to the fact that we have to cover source <->binary<->source
+ * dependencies with binary being binary classes never to be refreshed
+ * <p/>
+ * Note we can optionally do some interface checks here
+ * for now annotations are only processed by the class scanner itself
+ * so we do not process any annotation inheritance on this level
+ * we will add the feature later
+ *
+ * @param loader the infrastructural classloader
+ * @param toCheck the class which needs to be checked
+ * @param registry the dependency registry
+ * @param interfaceCheck if true also interfaces within the hierarchy will be processed, false if not
+ */
+ private void scanHierarchy(ClassLoader loader, Class toCheck, ExternalFilterDependencyRegistry registry, boolean interfaceCheck) {
+ Class parent = toCheck.getSuperclass();
+
+ while (parent != null && !ClassScanUtils.isStandardNamespace(parent.getName())) {
+ if (interfaceCheck) {
+ //we recursively descend into our interfaces, it should not
+ //get any cyclic calls the tainting mechanism should prevent that
+ //and also the descension into parents, determinism should be
+ //enabled by both measures
+ //scanInterfaces(loader, retVal, whiteList, parent);
+ }
+
+ scanCurrentClass(loader, parent.getName(), registry);
+ parent = parent.getSuperclass();
+
+ }
+ }
+
+ /**
+ * scans one level of the inheritance hierarchy
+ *
+ * @param loader the classLoader which should be used for the hierarchy scanning
+ * @param currentClassName the className which has to be investigated
+ * @param registry the dependency registry
+ */
+ private void scanCurrentClass(ClassLoader loader, String currentClassName, ExternalFilterDependencyRegistry registry) {
+ _cp.setDependencyRegistry(registry);
+
+ ClassReader cr;
+
+ try {
+ cr = new ExtendedClassReader(loader, currentClassName);
+ cr.accept(_cp, 0);
+ } catch (IOException e) {
+ _log.log(Level.SEVERE, "scanCurrentClass() ", e);
+ }
+ }
+
}
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/ClassFilter.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassFilter.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/ClassFilter.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/ClassFilter.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassFilter.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassFilter.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/ClassFilter.java Mon Mar 1 12:12:05 2010
@@ -1,4 +1,4 @@
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.api;
/**
* Generic filter pattern interface
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/ClassFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/ClassFilter.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyRegistry.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyRegistry.java?rev=917483&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyRegistry.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyRegistry.java Mon Mar 1 12:12:05 2010
@@ -0,0 +1,21 @@
+package org.apache.myfaces.scripting.core.dependencyScan.api;
+
+/**
+ * General contractual interface for a dependency registry
+ * The dependency registry is a class which stores dependencies
+ * according to an internal whitelisting system.
+ * <p/>
+ * Only classes which pass the whitelisting check will be processed
+ */
+public interface DependencyRegistry {
+ /**
+ * adds a source dependency if it is able to pass the
+ * filters
+ * A dependency is only allowed to pass if it is able
+ * to pass the internal filter list
+ *
+ * @param source the source which includes or casts the dependencies
+ * @param dependency the dependency to be added
+ */
+ void addDependency(String scanIdentifier, String source, String dependency);
+}
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyRegistry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyRegistry.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyScanner.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyScanner.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyScanner.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/api/DependencyScanner.java Mon Mar 1 12:12:05 2010
@@ -16,7 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.api;
+
+import org.apache.myfaces.scripting.core.dependencyScan.registry.ExternalFilterDependencyRegistry;
import java.util.Set;
@@ -46,7 +48,7 @@
* @param className the classname from which the dependencies have to be fetched
* @param registry our registry which should store the dependencies
*/
- public void fetchDependencies(ClassLoader loader, String className, DependencyRegistry registry);
+ public void fetchDependencies(ClassLoader loader, String className, ExternalFilterDependencyRegistry registry);
/**
* soon to be deprecated, fetch dependencies working on an existing whitelist system
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassDependencies.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassDependencies.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassDependencies.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassDependencies.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassDependencies.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassDependencies.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassDependencies.java Mon Mar 1 12:12:05 2010
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.core;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassDependencies.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassDependencies.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanStrategy.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanStrategy.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanStrategy.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanStrategy.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanStrategy.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanStrategy.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanStrategy.java Mon Mar 1 12:12:05 2010
@@ -16,8 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.core;
+import org.apache.myfaces.scripting.core.dependencyScan.api.DependencyScanner;
import org.apache.myfaces.scripting.core.util.ClassUtils;
import org.apache.myfaces.scripting.core.util.Strategy;
import org.apache.myfaces.scripting.core.util.WeavingContext;
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanStrategy.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanUtils.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanUtils.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanUtils.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanUtils.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanUtils.java Mon Mar 1 12:12:05 2010
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.core;
import java.util.Collection;
import java.util.Set;
@@ -27,7 +27,7 @@
* <p/>
* Utils which store the shared code
*/
-class ClassScanUtils {
+public class ClassScanUtils {
public static final String BINARY_PACKAGE = "\\/";
private static final String DOMAIN_JAVA = "java.";
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanUtils.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanVisitor.java (from r916620, 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/core/ClassScanVisitor.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanVisitor.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ClassScanVisitor.java&r1=916620&r2=917483&rev=917483&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/core/ClassScanVisitor.java Mon Mar 1 12:12:05 2010
@@ -16,11 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.core;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.ExternalFilterDependencyRegistry;
import org.objectweb.asm.*;
-import java.util.Set;
import java.util.logging.Logger;
/**
@@ -33,17 +33,19 @@
* @author Werner Punz (latest modification by $Author$)
* @version $Revision$ $Date$
*/
-class ClassScanVisitor implements ClassVisitor {
+public class ClassScanVisitor implements ClassVisitor {
- DependencyRegistry _dependencyRegistry;
+ ExternalFilterDependencyRegistry _dependencyRegistry;
String _currentlyVistedClass;
+ String _scanIdentifier;
static final Logger _log = Logger.getLogger(ClassScanVisitor.class.getName());
public ClassScanVisitor() {
}
- public ClassScanVisitor(DependencyRegistry registry) {
+ public ClassScanVisitor(String _scanIdentifier, ExternalFilterDependencyRegistry registry) {
_dependencyRegistry = registry;
+ _scanIdentifier = _scanIdentifier;
}
public void visit(int version, int access, String name,
@@ -98,7 +100,7 @@
}
if (_dependencyRegistry != null) {
- _dependencyRegistry.addDependency(_currentlyVistedClass, className);
+ _dependencyRegistry.addDependency(_scanIdentifier, _currentlyVistedClass, className);
}
}
@@ -111,16 +113,19 @@
for (Type argumentType : Type.getArgumentTypes(description)) {
registerDependency(argumentType, "Argument type of the method [" + name + "]");
}
- return new MethodScanVisitor(_currentlyVistedClass, _dependencyRegistry);
+ return new MethodScanVisitor(_scanIdentifier, _currentlyVistedClass, _dependencyRegistry);
}
public void visitEnd() {
//_log.info("}");
}
- public void setDependencyRegistry(DependencyRegistry dependencyRegistry) {
+ public void setDependencyRegistry(ExternalFilterDependencyRegistry dependencyRegistry) {
_dependencyRegistry = dependencyRegistry;
}
+ public void setScanIdentifier(String scanIdentifier) {
+ _scanIdentifier = scanIdentifier;
+ }
}
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanVisitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ClassScanVisitor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ExtendedClassReader.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ExtendedClassReader.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ExtendedClassReader.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ExtendedClassReader.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ExtendedClassReader.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/ExtendedClassReader.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ExtendedClassReader.java Mon Mar 1 12:12:05 2010
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.core;
import org.objectweb.asm.ClassReader;
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ExtendedClassReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/ExtendedClassReader.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/MethodScanVisitor.java (from r916620, 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/core/MethodScanVisitor.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/MethodScanVisitor.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/MethodScanVisitor.java&r1=916620&r2=917483&rev=917483&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/core/MethodScanVisitor.java Mon Mar 1 12:12:05 2010
@@ -16,12 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.core;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.ExternalFilterDependencyRegistry;
import org.objectweb.asm.*;
-import java.util.Set;
-
/**
* @author Werner Punz (latest modification by $Author$)
* @version $Revision$ $Date$
@@ -32,13 +31,15 @@
// static final Logger log = Logger.getLogger("ClassScanVisitor");
String _currentlyVisitedClass = null;
- DependencyRegistry _dependencyRegistry = null;
+ String _scanIdentifier = null;
+ ExternalFilterDependencyRegistry _dependencyRegistry = null;
- public MethodScanVisitor(String currentlyVisitedClass, DependencyRegistry registry) {
+ public MethodScanVisitor(String scanIdentifier, String currentlyVisitedClass, ExternalFilterDependencyRegistry registry) {
_currentlyVisitedClass = currentlyVisitedClass;
_dependencyRegistry = registry;
+ _scanIdentifier = scanIdentifier;
}
public AnnotationVisitor visitAnnotationDefault() {
@@ -92,7 +93,7 @@
}
if (_dependencyRegistry != null) {
- _dependencyRegistry.addDependency(_currentlyVisitedClass, className);
+ _dependencyRegistry.addDependency(_scanIdentifier, _currentlyVisitedClass, className);
}
}
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/MethodScanVisitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/core/MethodScanVisitor.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/StandardNamespaceFilter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/StandardNamespaceFilter.java?rev=917483&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/StandardNamespaceFilter.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/StandardNamespaceFilter.java Mon Mar 1 12:12:05 2010
@@ -0,0 +1,14 @@
+package org.apache.myfaces.scripting.core.dependencyScan.filter;
+
+import org.apache.myfaces.scripting.core.dependencyScan.ClassScanUtils;
+import org.apache.myfaces.scripting.core.dependencyScan.api.ClassFilter;
+
+/**
+ * Filter facade for our standard namespace check
+ */
+public class StandardNamespaceFilter implements ClassFilter {
+
+ public boolean isAllowed(String clazz) {
+ return !ClassScanUtils.isStandardNamespace(clazz);
+ }
+}
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/StandardNamespaceFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/StandardNamespaceFilter.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/WhitelistFilter.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/WhitelistFilter.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/WhitelistFilter.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/WhitelistFilter.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/WhitelistFilter.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/WhitelistFilter.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/WhitelistFilter.java Mon Mar 1 12:12:05 2010
@@ -16,7 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.filter;
+
+import org.apache.myfaces.scripting.core.dependencyScan.api.ClassFilter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/WhitelistFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/filter/WhitelistFilter.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyMapRegistrationStrategy.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyMapRegistrationStrategy.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyMapRegistrationStrategy.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyMapRegistrationStrategy.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyMapRegistrationStrategy.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyMapRegistrationStrategy.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyMapRegistrationStrategy.java Mon Mar 1 12:12:05 2010
@@ -1,5 +1,6 @@
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.registry;
+import org.apache.myfaces.scripting.core.dependencyScan.core.ClassDependencies;
import org.apache.myfaces.scripting.core.util.Strategy;
import java.util.Map;
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyMapRegistrationStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyMapRegistrationStrategy.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyRegistryImpl.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistryImpl.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyRegistryImpl.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyRegistryImpl.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistryImpl.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistryImpl.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyRegistryImpl.java Mon Mar 1 12:12:05 2010
@@ -1,21 +1,21 @@
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.registry;
+import org.apache.myfaces.scripting.core.dependencyScan.api.ClassFilter;
+import org.apache.myfaces.scripting.core.dependencyScan.filter.StandardNamespaceFilter;
import org.apache.myfaces.scripting.core.util.Strategy;
-import org.objectweb.asm.*;
import java.util.*;
/**
- * Registry facade which is used to track our dependencies
+ * registry facade which is used to track our dependencies
*/
-public class DependencyRegistryImpl implements DependencyRegistry {
+public class DependencyRegistryImpl implements ExternalFilterDependencyRegistry {
List<ClassFilter> _filters = new LinkedList<ClassFilter>();
Map<String, Set<String>> _dependencies = new HashMap<String, Set<String>>();
Strategy _dependencyTarget = null;
-
public DependencyRegistryImpl(Strategy dependencyTarget) {
_filters.add(new StandardNamespaceFilter());
_dependencyTarget = dependencyTarget;
@@ -30,7 +30,7 @@
_filters.add(filter);
}
- public boolean isAllowed(String className) {
+ public boolean isAllowed(String scanIdentifier, String className) {
for (ClassFilter filter : _filters) {
if (!filter.isAllowed(className)) {
return false;
@@ -39,7 +39,7 @@
return true;
}
- public void addDependency(String source, String dependency) {
+ public void addDependency(String scanIdentifier, String source, String dependency) {
if (source.equals(dependency)) {
return;
}
@@ -48,7 +48,7 @@
return;
}
- if (!isAllowed(dependency)) {
+ if (!isAllowed(scanIdentifier, dependency)) {
return;
}
//for now we code it into a list like we used to do before
@@ -59,14 +59,13 @@
private Set<String> getDependencySet(String key) {
Set<String> retVal = _dependencies.get(key);
- if(retVal == null) {
+ if (retVal == null) {
retVal = new HashSet<String>();
_dependencies.put(key, retVal);
}
return retVal;
}
-
public Map<String, Set<String>> getDependencies() {
return _dependencies;
}
@@ -74,7 +73,7 @@
/**
* flush to flush down our stored dependencies into our final map
*/
- public void flush() {
+ public void flush(String scanIdentifier) {
_dependencyTarget.apply(_dependencies);
}
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyRegistryImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/DependencyRegistryImpl.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/ExternalFilterDependencyRegistry.java (from r916620, myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistry.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/ExternalFilterDependencyRegistry.java?p2=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/ExternalFilterDependencyRegistry.java&p1=myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistry.java&r1=916620&r2=917483&rev=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/DependencyRegistry.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/ExternalFilterDependencyRegistry.java Mon Mar 1 12:12:05 2010
@@ -1,13 +1,18 @@
-package org.apache.myfaces.scripting.core.dependencyScan;
+package org.apache.myfaces.scripting.core.dependencyScan.registry;
+
+import org.apache.myfaces.scripting.core.dependencyScan.api.DependencyRegistry;
+import org.apache.myfaces.scripting.core.dependencyScan.api.ClassFilter;
/**
- * General contractual interface for a dependency registry
+ * General contractual interface for a dependency registry with external filters
+ * being settable
+ * <p/>
* The dependency registry is a class which stores dependencies
* according to an internal whitelisting system.
* <p/>
* Only classes which pass the whitelisting check will be processed
*/
-public interface DependencyRegistry {
+public interface ExternalFilterDependencyRegistry extends DependencyRegistry {
/**
* Clears the internal filters
@@ -23,25 +28,15 @@
void addFilter(ClassFilter filter);
/**
- * adds a source dependency if it is able to pass the
- * filters
- * A dependency is only allowed to pass if it is able
- * to pass the internal filter list
- *
- * @param source the source which includes or casts the dependencies
- * @param dependency the dependency to be added
- */
- void addDependency(String source, String dependency);
-
- /**
* Allowance check for external shortcutting
* This check triggers into the internal filters
* to pre-check if a class is allowed to pass or not
*
- * @param className the classname to be checked
+ * @param className the classname to be checked
+ * @param scanIdentifier an identifier for the current scan type (jsf java scan for instance)
* @return true if it is false otherwise
*/
- public boolean isAllowed(String className);
+ public boolean isAllowed(String scanIdentifier, String className);
/**
* Flush operation to batch sync
@@ -50,5 +45,5 @@
* (will be removed later once we have all the code transitioned
* to the registry system)
*/
- void flush();
+ void flush(String scanIdentifier);
}
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/ExternalFilterDependencyRegistry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/dependencyScan/registry/ExternalFilterDependencyRegistry.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/GroovyDependencyScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/GroovyDependencyScanner.java?rev=917483&r1=917482&r2=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/GroovyDependencyScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/groovy/GroovyDependencyScanner.java Mon Mar 1 12:12:05 2010
@@ -29,6 +29,10 @@
@Override
public void scanPaths() {
- super.scanPaths(); //To change body of overridden methods use File | Settings | File Templates.
+ super.scanPaths();
+ }
+
+ protected String getScanIdentifier() {
+ return ScriptingConst.ENGINE_TYPE_GROOVY + "_Scan";
}
}
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=917483&r1=917482&r2=917483&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 Mon Mar 1 12:12:05 2010
@@ -22,7 +22,11 @@
import org.apache.myfaces.scripting.api.ClassScanner;
import org.apache.myfaces.scripting.api.ScriptingConst;
import org.apache.myfaces.scripting.api.ScriptingWeaver;
-import org.apache.myfaces.scripting.core.dependencyScan.*;
+import org.apache.myfaces.scripting.core.dependencyScan.DependencyScanner;
+import org.apache.myfaces.scripting.core.dependencyScan.filter.WhitelistFilter;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.DependencyMapRegistrationStrategy;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.DependencyRegistryImpl;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.ExternalFilterDependencyRegistry;
import org.apache.myfaces.scripting.core.util.Strategy;
import org.apache.myfaces.scripting.core.util.WeavingContext;
import org.apache.myfaces.scripting.refresh.ReloadingMetadata;
@@ -42,7 +46,7 @@
List<String> _scanPaths = new LinkedList<String>();
- RegistryBasedDependencyScanner _dependecyScanner = new RegistryBasedDependencyScanner();
+ DependencyScanner _dependecyScanner = new DependencyScanner();
ScriptingWeaver _weaver;
Logger log = Logger.getLogger(JavaDependencyScanner.class.getName());
@@ -84,9 +88,13 @@
private final void runScan(final Set<String> possibleDynamicClasses, final ClassLoader loader, String dynamicClass) {
Strategy registrationStrategy = new DependencyMapRegistrationStrategy(dynamicClass, WeavingContext.getFileChangedDaemon().getDependencyMap());
- DependencyRegistry scanRegistry = new DependencyRegistryImpl(registrationStrategy);
+ ExternalFilterDependencyRegistry scanRegistry = new DependencyRegistryImpl(registrationStrategy);
scanRegistry.addFilter(new WhitelistFilter(possibleDynamicClasses));
- _dependecyScanner.fetchDependencies(loader, dynamicClass, scanRegistry);
+ _dependecyScanner.fetchDependencies(loader, getScanIdentifier(), dynamicClass, scanRegistry);
+ }
+
+ protected String getScanIdentifier() {
+ return ScriptingConst.ENGINE_TYPE_JAVA+"_Scan";
}
protected ClassLoader getClassLoader() {
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java?rev=917483&r1=917482&r2=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java Mon Mar 1 12:12:05 2010
@@ -20,7 +20,7 @@
import org.apache.myfaces.scripting.api.ScriptingConst;
import org.apache.myfaces.scripting.api.ScriptingWeaver;
-import org.apache.myfaces.scripting.core.dependencyScan.ClassDependencies;
+import org.apache.myfaces.scripting.core.dependencyScan.core.ClassDependencies;
import org.apache.myfaces.scripting.core.util.WeavingContext;
import javax.servlet.ServletContext;
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=917483&r1=917482&r2=917483&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 Mar 1 12:12:05 2010
@@ -18,11 +18,14 @@
*/
package org.apache.myfaces.extensions.scripting.dependencyScan;
-import org.apache.myfaces.scripting.core.dependencyScan.*;
+import org.apache.myfaces.scripting.core.dependencyScan.DependencyScanner;
+import org.apache.myfaces.scripting.core.dependencyScan.core.ClassDependencies;
+import org.apache.myfaces.scripting.core.dependencyScan.filter.WhitelistFilter;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.DependencyMapRegistrationStrategy;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.DependencyRegistryImpl;
+import org.apache.myfaces.scripting.core.dependencyScan.registry.ExternalFilterDependencyRegistry;
import org.junit.Test;
-import java.util.HashSet;
-import java.util.Set;
import java.util.logging.Logger;
import static org.junit.Assert.assertFalse;
@@ -48,10 +51,10 @@
@Test
public void testClassDependencies2() {
ClassDependencies dependencyMap = new ClassDependencies();
- DependencyRegistry testRegistry = new DependencyRegistryImpl(new DependencyMapRegistrationStrategy(PROBE1, dependencyMap));
+ ExternalFilterDependencyRegistry testRegistry = new DependencyRegistryImpl(new DependencyMapRegistrationStrategy(PROBE1, dependencyMap));
testRegistry.addFilter(new WhitelistFilter(DUMMY, PROBE_NAMESPACE));
long before = System.currentTimeMillis();
- (new RegistryBasedDependencyScanner()).fetchDependencies(Thread.currentThread().getContextClassLoader(), PROBE1, testRegistry);
+ (new DependencyScanner()).fetchDependencies(Thread.currentThread().getContextClassLoader(), PROBE1, testRegistry);
long after = System.currentTimeMillis();
log.info("Execution time registry based scan" + (after - before));
Modified: myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/FilterTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/FilterTest.java?rev=917483&r1=917482&r2=917483&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/FilterTest.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/extensions/scripting/dependencyScan/FilterTest.java Mon Mar 1 12:12:05 2010
@@ -1,7 +1,7 @@
package org.apache.myfaces.extensions.scripting.dependencyScan;
-import org.apache.myfaces.scripting.core.dependencyScan.StandardNamespaceFilter;
-import org.apache.myfaces.scripting.core.dependencyScan.WhitelistFilter;
+import org.apache.myfaces.scripting.core.dependencyScan.filter.StandardNamespaceFilter;
+import org.apache.myfaces.scripting.core.dependencyScan.filter.WhitelistFilter;
import org.junit.Test;
import java.util.LinkedList;