[jboss-cvs] JBossAS SVN: r106694 - in projects/jboss-cl/trunk/classloading-vfs/src: test/java/org/jboss/test/classloading/vfs/metadata/test and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 14 08:10:46 EDT 2010


Author: alesj
Date: 2010-07-14 08:10:45 -0400 (Wed, 14 Jul 2010)
New Revision: 106694

Added:
   projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Wildcard.xml
Modified:
   projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
   projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java
   projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSResourceVisitorUnitTestCase.java
Log:
[JBCL-173]; allow for wildcards in roots.

Modified: projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java	2010-07-14 06:17:05 UTC (rev 106693)
+++ projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java	2010-07-14 12:10:45 UTC (rev 106694)
@@ -23,8 +23,9 @@
 
 import java.io.IOException;
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
-import java.net.URISyntaxException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -44,12 +45,14 @@
 import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
 import org.jboss.vfs.VFS;
 import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.VirtualFileFilter;
 import org.jboss.vfs.util.automount.Automounter;
 
 /**
  * VFSClassLoaderPolicyModule.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  * @version $Revision: 1.1 $
  */
 public class VFSClassLoaderPolicyModule extends ClassLoaderPolicyModule implements KernelControllerContextAware
@@ -165,23 +168,55 @@
       }
       else
       {
-         VirtualFile[] vfsRoots = new VirtualFile[roots.size()];
-         for (int i = 0; i < roots.size(); ++i)
+         List<VirtualFile> vfsRoots = new ArrayList<VirtualFile>();
+         for (String root : roots)
          {
-            String root = roots.get(i);
-            try
+            int wc = root.lastIndexOf("*"); // is it wildcard?
+            if (wc >= 0)
             {
-               URI uri = new URI(root);
-               vfsRoots[i] = VFS.getChild(uri);
+               final String wcString = root.substring(wc + 1);
+               VirtualFile start;
+               if (wc > 0) // some more path before
+               {
+                  start = VFS.getChild(root.substring(0, wc));
+               }
+               else
+               {
+                  start = VFS.getRootVirtualFile();
+               }
+               try
+               {
+                  List<VirtualFile> children = start.getChildren(new VirtualFileFilter()
+                  {
+                     public boolean accepts(VirtualFile file)
+                     {
+                        String name = file.getName();
+                        return name.endsWith(wcString);
+                     }
+                  });
+                  vfsRoots.addAll(children);
+               }
+               catch (IOException e)
+               {
+                  throw new RuntimeException("Error creating VFS files for " + root, e);
+               }
             }
-            catch (URISyntaxException e)
+            else
             {
-               throw new RuntimeException("Error creating VFS file for " + root, e);
+               try
+               {
+                  URI uri = new URI(root);
+                  vfsRoots.add(VFS.getChild(uri));
+               }
+               catch (URISyntaxException e)
+               {
+                  throw new RuntimeException("Error creating VFS file for " + root, e);
+               }
             }
          }
-         this.vfsRoots = vfsRoots;
+         this.vfsRoots = vfsRoots.toArray(new VirtualFile[vfsRoots.size()]);
       }
-      return vfsRoots;
+      return this.vfsRoots;
    }
 
    @Override

Modified: projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java	2010-07-14 06:17:05 UTC (rev 106693)
+++ projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java	2010-07-14 12:10:45 UTC (rev 106694)
@@ -21,11 +21,19 @@
  */
 package org.jboss.test.classloading.vfs.metadata.test;
 
-import junit.framework.Test;
+import java.io.Closeable;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+import org.jboss.vfs.VFS;
+import org.jboss.vfs.VFSUtils;
+import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.VirtualFileAssembly;
 
+import junit.framework.Test;
+
 /**
  * VFSClassLoaderFactoryUnitTestCase.
  * 
@@ -208,4 +216,44 @@
       validate();
       assertNoClassLoader("a", "1.0.0");
    }
+
+   public void testWildcard() throws Exception
+   {
+      String testDir = "test";
+      List<Closeable> closeables = new ArrayList<Closeable>();
+      try
+      {
+         VirtualFile root = VFS.getRootVirtualFile();
+         VirtualFile test = root.getChild(testDir);
+         closeables.add(VFS.mountAssembly(new VirtualFileAssembly(), test));
+         VirtualFile jar1 = test.getChild("j1.jar");
+         closeables.add(VFS.mountAssembly(new VirtualFileAssembly(), jar1));
+         VirtualFile jar2 = test.getChild("j2.jar");
+         closeables.add(VFS.mountAssembly(new VirtualFileAssembly(), jar2));
+
+         System.setProperty("test.dir", testDir);
+         try
+         {
+            KernelDeployment wc = deploy("Wildcard.xml");
+            try
+            {
+               validate();
+               ClassLoader cl = assertClassLoader("wc", "0.0.0");
+               assertLoadClassFail("org.acme.FooBar", cl);
+            }
+            finally
+            {
+               undeploy(wc);
+            }
+         }
+         finally
+         {
+            System.clearProperty("test.dir");
+         }
+      }
+      finally
+      {
+         VFSUtils.safeClose(closeables);
+      }
+   }
 }

Modified: projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSResourceVisitorUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSResourceVisitorUnitTestCase.java	2010-07-14 06:17:05 UTC (rev 106693)
+++ projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSResourceVisitorUnitTestCase.java	2010-07-14 12:10:45 UTC (rev 106694)
@@ -83,6 +83,13 @@
       System.setProperty("test.dir", urlString);
    }
 
+   protected void tearDown() throws Exception
+   {
+      System.clearProperty("test.dir");
+      
+      super.tearDown();
+   }
+
    public void testFromXml() throws Exception
    {
       KernelDeployment deployment = deploy("VFSResourceVisitorTest.xml");

Copied: projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Wildcard.xml (from rev 106302, projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/VFSResourceVisitorTest.xml)
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Wildcard.xml	                        (rev 0)
+++ projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Wildcard.xml	2010-07-14 12:10:45 UTC (rev 106694)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0" xmlns:cl="urn:jboss:classloader:1.0">
+
+  <classloader xmlns="urn:jboss:classloader:1.0" name="wc">
+     <root>${test.dir}/*.jar</root>
+  </classloader>
+
+</deployment>



More information about the jboss-cvs-commits mailing list