[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