[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