[jboss-cvs] JBossAS SVN: r76564 - in projects/jboss-deployers/trunk: deployers-impl/src/tests/org/jboss/test/deployers/classloading/support and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Aug 1 06:23:23 EDT 2008


Author: alesj
Date: 2008-08-01 06:23:22 -0400 (Fri, 01 Aug 2008)
New Revision: 76564

Modified:
   projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java
   projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java
   projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/support/MockDeploymentClassLoaderPolicyModule.java
   projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
Log:
Use Module:visit with urls parameter.

Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java	2008-08-01 09:59:52 UTC (rev 76563)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java	2008-08-01 10:23:22 UTC (rev 76564)
@@ -64,8 +64,6 @@
     * * org.jboss.classloading.spi.visitor.ResourceFilter.resource - plain resource filter
     * * org.jboss.classloading.spi.visitor.ResourceFilter.recurse  - recurse resource filter
     *
-    * @see Module#visit(org.jboss.classloading.spi.visitor.ResourceVisitor, org.jboss.classloading.spi.visitor.ResourceFilter, org.jboss.classloading.spi.visitor.ResourceFilter)
-    *
     * @param unit the deployment unit
     * @param module the underlying module
     * @param visitor the current generic annotation resource visitor
@@ -76,7 +74,7 @@
       if (filter != null)
          filter = visitor.getFilter();
       ResourceFilter recurse = getFilter(unit, ResourceFilter.class, "recurse", recurseFilter);
-      module.visit(visitor, filter, recurse);
+      module.visit(visitor, filter, recurse, getUrls());
    }
 
    /**

Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java	2008-08-01 09:59:52 UTC (rev 76563)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java	2008-08-01 10:23:22 UTC (rev 76564)
@@ -21,6 +21,8 @@
 */
 package org.jboss.deployers.plugins.annotations;
 
+import java.net.URL;
+
 import javassist.ClassPath;
 import javassist.ClassPool;
 import javassist.LoaderClassPath;
@@ -126,9 +128,19 @@
     */
    protected void visitModule(DeploymentUnit unit, Module module, GenericAnnotationResourceVisitor visitor)
    {
-      module.visit(visitor);
+      module.visit(visitor, null, null, getUrls());
    }
 
+   /**
+    * Get the new root urls.
+    *
+    * @return the new root urls
+    */
+   protected URL[] getUrls()
+   {
+      return null;
+   }
+
    public void deploy(DeploymentUnit unit, Module module) throws DeploymentException
    {
       if (log.isTraceEnabled())

Modified: projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/support/MockDeploymentClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/support/MockDeploymentClassLoaderPolicyModule.java	2008-08-01 09:59:52 UTC (rev 76563)
+++ projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/support/MockDeploymentClassLoaderPolicyModule.java	2008-08-01 10:23:22 UTC (rev 76564)
@@ -21,23 +21,24 @@
 */
 package org.jboss.test.deployers.classloading.support;
 
-import java.util.List;
+import java.net.URL;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Arrays;
+import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.net.URL;
 
+import org.jboss.classloader.spi.filter.ClassFilter;
 import org.jboss.classloader.test.support.MockClassLoaderHelper;
 import org.jboss.classloader.test.support.MockClassLoaderPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloading.plugins.visitor.DefaultResourceContext;
 import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
 import org.jboss.classloading.spi.metadata.Capability;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.visitor.ResourceContext;
+import org.jboss.classloading.spi.visitor.ResourceFilter;
 import org.jboss.classloading.spi.visitor.ResourceVisitor;
-import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.classloading.spi.visitor.ResourceContext;
 import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 
@@ -154,7 +155,7 @@
    }
 
    @Override
-   public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter)
+   public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter, URL... urls)
    {
       MockClassLoadingMetaData mclmd = getClassLoadingMetaData();
       String[] paths = mclmd.getPaths();
@@ -180,7 +181,7 @@
             if (excludedFilter != null && excludedFilter.matchesResourcePath(path))
                continue;
 
-            ResourceContext context = new ResourceContext(getURL(path), path, classLoader);
+            ResourceContext context = new DefaultResourceContext(getURL(path), path, classLoader);
             if (filter == null || filter.accepts(context))
                visitor.visit(context);
          }

Modified: projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java	2008-08-01 09:59:52 UTC (rev 76563)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java	2008-08-01 10:23:22 UTC (rev 76564)
@@ -24,6 +24,7 @@
 import java.net.URL;
 import java.util.List;
 import java.util.Set;
+import java.util.ArrayList;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.jboss.classloader.spi.filter.ClassFilter;
@@ -38,6 +39,7 @@
 import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.virtual.VirtualFile;
+import org.jboss.virtual.VFS;
 
 /**
  * VFSDeploymentClassLoaderPolicyModule.
@@ -146,18 +148,74 @@
    }
 
    @Override
-   public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter)
+   public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter, URL... urls)
    {
       ClassLoader classLoader = getClassLoader();
       if (classLoader == null)
          throw new IllegalStateException("ClassLoader has not been constructed for " + getContextName());
 
       VirtualFile[] roots = vfsRoots;
-      if (roots != null)
+      if (roots != null && roots.length > 0)
       {
+         if (urls != null && urls.length > 0)
+            roots = matchUrlsWithRoots(urls, roots);
+         
          ClassFilter included = getIncluded();
          ClassFilter excluded = getExcluded();
          VFSResourceVisitor.visit(roots, excludedRoots, included, excluded, classLoader, visitor, filter, recurseFilter);
       }
    }
+
+   /**
+    * Match urls with roots.
+    *
+    * @param urls the urls
+    * @param roots the old roots
+    * @return new roots
+    */
+   protected static VirtualFile[] matchUrlsWithRoots(URL[] urls, VirtualFile[] roots)
+   {
+      try
+      {
+         String[] rootURLStrings = new String[urls.length];
+         List<VirtualFile> newRoots = new ArrayList<VirtualFile>(urls.length);
+         for (URL url : urls)
+         {
+            String urlString = stripProtocol(url);
+            for(int i=0; i < roots.length; i++)
+            {
+               if (rootURLStrings[i] == null)
+                  rootURLStrings[i] = stripProtocol(roots[i].toURL());
+
+               if (urlString.startsWith(rootURLStrings[i]))
+               {
+                  VirtualFile newRoot = VFS.getRoot(url);
+                  newRoots.add(newRoot);
+                  break;
+               }
+            }
+         }
+         return newRoots.toArray(new VirtualFile[newRoots.size()]);
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException("Cannot match urls to roots.", e);
+      }
+   }
+
+   /**
+    * Strip the url protocol.
+    *
+    * @param url the url
+    * @return url external form w/o protocol
+    */
+   protected static String stripProtocol(URL url)
+   {
+      if (url == null)
+         throw new IllegalArgumentException("Null url");
+
+      String urlString = url.toExternalForm();
+      int p = urlString.indexOf(":/");
+      return urlString.substring(p + 2);
+   }
 }




More information about the jboss-cvs-commits mailing list