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 &lt;className&gt;
+     * @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;