[jboss-cvs] JBossAS SVN: r106756 - 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
Thu Jul 15 11:17:03 EDT 2010


Author: alesj
Date: 2010-07-15 11:17:02 -0400 (Thu, 15 Jul 2010)
New Revision: 106756

Added:
   projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Pattern.xml
Removed:
   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
Log:
[JBCL-173]; allow for regexp 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-15 14:59:03 UTC (rev 106755)
+++ projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java	2010-07-15 15:17:02 UTC (rev 106756)
@@ -29,6 +29,7 @@
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.regex.Pattern;
 
 import org.jboss.classloader.spi.filter.ClassFilter;
 import org.jboss.classloading.plugins.vfs.PackageVisitor;
@@ -66,8 +67,12 @@
    /** Our cached vfs roots */
    private VirtualFile[] vfsRoots;
 
+   /** The empty roots */
    private static final VirtualFile[] NO_VIRTUAL_FILES = new VirtualFile[0];
 
+   /** The root reg-exp pattern key */
+   private static final String RE_KEY = "?root-re-pattern=";
+
    /**
     * Create a new VFSClassLoaderPolicyModule.
     * 
@@ -171,14 +176,15 @@
          List<VirtualFile> vfsRoots = new ArrayList<VirtualFile>();
          for (String root : roots)
          {
-            int wc = root.lastIndexOf("*"); // is it wildcard?
-            if (wc >= 0)
+            int re = root.lastIndexOf(RE_KEY); // is it reg-exp?
+            if (re >= 0)
             {
-               final String wcString = root.substring(wc + 1);
+               String reString = root.substring(re + RE_KEY.length());
+               final Pattern pattern = Pattern.compile(reString);
                VirtualFile start;
-               if (wc > 0) // some more path before
+               if (re > 0) // some more path before
                {
-                  start = VFS.getChild(root.substring(0, wc));
+                  start = VFS.getChild(root.substring(0, re));
                }
                else
                {
@@ -191,7 +197,7 @@
                      public boolean accepts(VirtualFile file)
                      {
                         String name = file.getName();
-                        return name.endsWith(wcString);
+                        return pattern.matcher(name).matches();
                      }
                   });
                   vfsRoots.addAll(children);

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-15 14:59:03 UTC (rev 106755)
+++ projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java	2010-07-15 15:17:02 UTC (rev 106756)
@@ -22,6 +22,8 @@
 package org.jboss.test.classloading.vfs.metadata.test;
 
 import java.io.Closeable;
+import java.io.File;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -217,7 +219,7 @@
       assertNoClassLoader("a", "1.0.0");
    }
 
-   public void testWildcard() throws Exception
+   public void testRePattern() throws Exception
    {
       String testDir = "test";
       List<Closeable> closeables = new ArrayList<Closeable>();
@@ -230,16 +232,22 @@
          closeables.add(VFS.mountAssembly(new VirtualFileAssembly(), jar1));
          VirtualFile jar2 = test.getChild("j2.jar");
          closeables.add(VFS.mountAssembly(new VirtualFileAssembly(), jar2));
+         VirtualFile clazz = jar2.getChild("Dummy.txt");
+         URL xml = getResource("Pattern.xml");
+         File file = new File(xml.toURI());
+         closeables.add(VFS.mountReal(file, clazz));
 
          System.setProperty("test.dir", testDir);
          try
          {
-            KernelDeployment wc = deploy("Wildcard.xml");
+            KernelDeployment wc = deploy("Pattern.xml");
             try
             {
                validate();
                ClassLoader cl = assertClassLoader("wc", "0.0.0");
-               assertLoadClassFail("org.acme.FooBar", cl);
+               URL url = cl.getResource("Dummy.txt");
+               assertNotNull(url);
+               assertNotNull(url.openStream());
             }
             finally
             {

Copied: projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Pattern.xml (from rev 106694, projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Wildcard.xml)
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Pattern.xml	                        (rev 0)
+++ projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Pattern.xml	2010-07-15 15:17:02 UTC (rev 106756)
@@ -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}/?root-re-pattern=[a-z0-9]+\.jar</root>
+  </classloader>
+
+</deployment>

Deleted: projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Wildcard.xml
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Wildcard.xml	2010-07-15 14:59:03 UTC (rev 106755)
+++ projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/test/Wildcard.xml	2010-07-15 15:17:02 UTC (rev 106756)
@@ -1,9 +0,0 @@
-<?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