[jboss-cvs] JBossAS SVN: r70918 - in projects/jboss-cl/trunk/classloading-vfs/src: resources/tests/classloader and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 17 14:33:53 EDT 2008


Author: adrian at jboss.org
Date: 2008-03-17 14:33:53 -0400 (Mon, 17 Mar 2008)
New Revision: 70918

Added:
   projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/
   projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/package1/
   projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/package1/notempty
   projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/
   projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/notempty
   projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/package2/
   projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/package2/notempty
Modified:
   projects/jboss-cl/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/PackageVisitor.java
   projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/ExportAllUnitTestCase.java
Log:
[JBCL-6] Don't recurse into other roots when determining packages

Modified: projects/jboss-cl/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/PackageVisitor.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/PackageVisitor.java	2008-03-17 18:27:30 UTC (rev 70917)
+++ projects/jboss-cl/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/PackageVisitor.java	2008-03-17 18:33:53 UTC (rev 70918)
@@ -31,6 +31,7 @@
 import org.jboss.virtual.VirtualFile;
 import org.jboss.virtual.VirtualFileVisitor;
 import org.jboss.virtual.VisitorAttributes;
+import org.jboss.virtual.plugins.vfs.helpers.AbstractVirtualFileFilterWithAttributes;
 
 /**
  * Visits a virtual file system recursively
@@ -39,11 +40,17 @@
  * @author <a href="adrian at jboss.org">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
-public class PackageVisitor implements VirtualFileVisitor
+public class PackageVisitor extends AbstractVirtualFileFilterWithAttributes implements VirtualFileVisitor
 {
    /** The packages */
    private Set<String> packages = new HashSet<String>();
+
+   /** The roots */
+   private VirtualFile[] roots;
    
+   /** The current root */
+   private VirtualFile root;
+   
    /** The export all */
    private ExportAll exportAll;
    
@@ -74,7 +81,7 @@
     */
    public static Set<String> determineAllPackages(VirtualFile[] roots, ExportAll exportAll, ClassFilter included, ClassFilter excluded, ClassFilter excludedExport)
    {
-      PackageVisitor visitor = new PackageVisitor(exportAll, included, excluded, excludedExport);
+      PackageVisitor visitor = new PackageVisitor(roots, exportAll, included, excluded, excludedExport);
       for (VirtualFile root : roots)
       {
          try
@@ -99,10 +106,11 @@
     * @param excludedExport the excluded export packages
     * @throws IllegalArgumentException for a null exportAll policy
     */
-   PackageVisitor(ExportAll exportAll, ClassFilter included, ClassFilter excluded, ClassFilter excludedExport)
+   PackageVisitor(VirtualFile[] roots, ExportAll exportAll, ClassFilter included, ClassFilter excluded, ClassFilter excludedExport)
    {
       if (exportAll == null)
          throw new IllegalArgumentException("Null export policy");
+      this.roots = roots;
       this.exportAll = exportAll;
       this.included = included;
       this.excluded = excluded;
@@ -119,6 +127,7 @@
    {
       if (root == null)
          throw new IllegalArgumentException("Null root");
+      this.root = root;
       rootPath = root.getPathName();
       rootPathWithSlash = rootPath + "/";
    }
@@ -137,16 +146,33 @@
    {
       VisitorAttributes attributes = new VisitorAttributes();
       attributes.setIncludeRoot(true);
-      attributes.setRecurseFilter(VisitorAttributes.RECURSE_ALL);
+      attributes.setRecurseFilter(this);
       return attributes;
    }
    
+   public boolean accepts(VirtualFile file)
+   {
+      // This is our current root
+      if (file.equals(root))
+         return true;
+
+      // Some other root, it will be handled later
+      for (VirtualFile other : roots)
+      {
+         if (file.equals(other))
+            return false;
+      }
+      
+      // Ok
+      return true;
+   }
+   
    public void visit(VirtualFile file)
    {
       try
       {
          // We only want only directories
-         if (file.isLeaf() == false)
+         if (accepts(file) && file.isLeaf() == false)
          {
             boolean empty = true;
             // Include empty directories?

Added: projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/package1/notempty
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/package1/notempty	                        (rev 0)
+++ projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/package1/notempty	2008-03-17 18:33:53 UTC (rev 70918)
@@ -0,0 +1 @@
+testjar3.package1
\ No newline at end of file

Added: projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/notempty
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/notempty	                        (rev 0)
+++ projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/notempty	2008-03-17 18:33:53 UTC (rev 70918)
@@ -0,0 +1 @@
+testjar3.
\ No newline at end of file

Added: projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/package2/notempty
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/package2/notempty	                        (rev 0)
+++ projects/jboss-cl/trunk/classloading-vfs/src/resources/tests/classloader/testjar3/subjar1.jar/package2/notempty	2008-03-17 18:33:53 UTC (rev 70918)
@@ -0,0 +1 @@
+testjar3.package2
\ No newline at end of file

Modified: projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/ExportAllUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/ExportAllUnitTestCase.java	2008-03-17 18:27:30 UTC (rev 70917)
+++ projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/ExportAllUnitTestCase.java	2008-03-17 18:33:53 UTC (rev 70918)
@@ -21,6 +21,7 @@
 */
 package org.jboss.test.classloading.vfs.policy.test;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
@@ -96,7 +97,27 @@
       VirtualFile base = VFS.getRoot(baseURL);
       VirtualFile[] files = new VirtualFile[urls.length];
       for (int i = 0; i < urls.length; ++i)
-         files[i] = base.findChild(urls[i]);
+      {
+         try
+         {
+            files[i] = base.getChild(urls[i]);
+         }
+         catch (IOException ignored)
+         {
+         }
+         if (files[i] == null && i > 0)
+         {
+            try
+            {
+               files[i] = files[0].getChild(urls[i]);
+            }
+            catch (IOException ignored)
+            {
+            }
+         }
+         if (files[i] == null)
+            fail("Can't find " + urls[i]);
+      }
       
       testExportAllCommon(exportAll, expected, empty, files);
    }
@@ -108,8 +129,17 @@
       {
          String urlString = "/classloader/" + urls[i];
          URL url = getResource(urlString);
-         assertNotNull("Expected to find resource: " + urlString, url);
-         files[i]= VFS.getRoot(url);
+         if (url != null)
+         {
+            files[i]= VFS.getRoot(url);
+         }
+         else
+         {
+            if (i > 0)
+               files[i] = files[0].getChild(urls[i]);
+            if (files[i] == null)
+               fail("Expected to find resource: " + urlString);
+         }
       }
       
       testExportAllCommon(exportAll, expected, empty, files);
@@ -248,7 +278,37 @@
 
       testExportAll(ExportAll.NON_EMPTY, expected, "testjar2", "testjar1");
    }
+   
+   public void testExportAllJar3() throws Exception
+   {
+      Map<String,String> expected = makeSimpleMap("testjar3",
+            "",
+            "package1",
+            "package2"
+      );
 
+      testExportAll(ExportAll.ALL, expected, "testjar3", "subjar1.jar");
+   }
+   public void testJar3Resources()
+      throws Exception
+   {
+      URL testjar3URL = getResource("/classloader/testjar3");
+      VirtualFile testjar3 = VFS.getRoot(testjar3URL);
+      VirtualFile testjar3subjar = testjar3.getChild("subjar1.jar");
+      assertNotNull(testjar3subjar);
+      VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(testjar3, testjar3subjar);
+      policy.setExportAll(ExportAll.NON_EMPTY);
+      
+      ClassLoaderSystem system = new DefaultClassLoaderSystem();
+      ClassLoader classLoader = system.registerClassLoaderPolicy(policy);
+      URL notempty = classLoader.getResource("notempty");
+      assertNotNull(notempty);
+      notempty = classLoader.getResource("package1/notempty");
+      assertNotNull(notempty);
+      notempty = classLoader.getResource("package2/notempty");
+      assertNotNull(notempty);
+   }
+
    protected String getContents(InputStream is) throws Exception
    {
       StringBuilder builder = new StringBuilder();




More information about the jboss-cvs-commits mailing list