[jboss-cvs] JBossAS SVN: r76488 - in projects/jboss-deployers/trunk/deployers-vfs/src: resources/tests/bootstrap and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jul 30 13:33:24 EDT 2008
Author: adrian at jboss.org
Date: 2008-07-30 13:33:24 -0400 (Wed, 30 Jul 2008)
New Revision: 76488
Added:
projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSClassLoaderClassPathDeployer.java
projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/SubDeploymentClassLoaderVisitorUnitTestCase.java
Modified:
projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bootstrap/bootstrap.xml
projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java
projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/InMemoryClasesUnitTestCase.java
projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/ManifestClassLoaderUnitTestCase.java
projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesTest.java
projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java
projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/test/FaceletsUnitTestCase.java
projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/structure/ear/support/MockEarStructureDeployer.java
Log:
[JBDEPLOY-63] [JBDEPLOY-64] - Split out classpath logic into a seperate deployer and add new logic for excluded roots
Added: projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSClassLoaderClassPathDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSClassLoaderClassPathDeployer.java (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSClassLoaderClassPathDeployer.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -0,0 +1,136 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.deployers.vfs.plugins.classloader;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.vfs.spi.deployer.AbstractOptionalVFSRealDeployer;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.deployers.vfs.spi.structure.helpers.ClassPathVisitor;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * VFSClassLoaderClassPathDeployer.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VFSClassLoaderClassPathDeployer extends AbstractOptionalVFSRealDeployer<ClassLoadingMetaData>
+{
+ /** The vfs classpath */
+ public static String VFS_CLASS_PATH = "org.jboss.deployers.vfs.plugins.classloader.VFS_CLASS_PATH";
+
+ /** The vfs excluded */
+ public static String VFS_EXCLUDES = "org.jboss.deployers.vfs.plugins.classloader.VFS_EXCLUDES";
+
+ /**
+ * Create a new VFSClassLoaderClassPathDeployer.
+ */
+ public VFSClassLoaderClassPathDeployer()
+ {
+ super(ClassLoadingMetaData.class);
+ setOutput(ClassLoadingMetaData.class);
+ setStage(DeploymentStages.DESCRIBE);
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public void deploy(VFSDeploymentUnit unit, ClassLoadingMetaData deployment) throws DeploymentException
+ {
+ // We aren't creating a classloader
+ if (unit.isTopLevel() == false && deployment == null)
+ return;
+
+ // Locate the parent class path
+ List<VirtualFile> parentClassPath = null;
+ Set<VirtualFile> parentExcludes = null;
+
+ VFSDeploymentUnit parent = unit.getParent();
+ while (parent != null)
+ {
+ parentClassPath = parent.getAttachment(VFS_CLASS_PATH, List.class);
+ if (parentClassPath != null)
+ {
+ parentExcludes = parent.getAttachment(VFS_EXCLUDES, Set.class);
+ break;
+ }
+ else
+ parent = parent.getParent();
+ }
+
+ // Get our classpath
+ ClassPathVisitor visitor = new ClassPathVisitor(unit);
+ unit.visit(visitor);
+ Set<VirtualFile> rawClassPath = visitor.getClassPath();
+
+ // We're creating the classpath
+ List<VirtualFile> vfsClassPath = new ArrayList<VirtualFile>();
+ unit.addAttachment(VFS_CLASS_PATH, vfsClassPath, List.class);
+ Set<VirtualFile> vfsExcludes = new HashSet<VirtualFile>();
+ unit.addAttachment(VFS_EXCLUDES, vfsExcludes, Set.class);
+
+ // Whether our classloader can see the parent
+ boolean canSeeParent = parentClassPath != null && deployment.getParentDomain() == null;
+
+ // Add all the classpath elements unless we can see the parent and its already in the parent
+ if (rawClassPath != null)
+ {
+ for (VirtualFile file : rawClassPath)
+ {
+ if (vfsClassPath.contains(file) == false)
+ {
+ if (canSeeParent == false || (canSeeParent && parentClassPath.contains(file) == false))
+ vfsClassPath.add(file);
+ }
+ }
+ }
+
+ // Exclude those elements from the parent that it doesn't explicitly have
+ if (parentClassPath != null)
+ {
+ VirtualFile root = unit.getRoot();
+ if (root != null && parentClassPath.contains(root) == false)
+ parentExcludes.add(root);
+
+ for (VirtualFile file : vfsClassPath)
+ {
+ if (parentClassPath.contains(file) == false)
+ {
+ parentExcludes.add(file);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void undeploy(VFSDeploymentUnit unit, ClassLoadingMetaData deployment)
+ {
+ unit.removeAttachment(VFS_CLASS_PATH);
+ unit.removeAttachment(VFS_EXCLUDES);
+ }
+}
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -29,7 +29,6 @@
import org.jboss.classloader.spi.filter.ClassFilter;
import org.jboss.classloading.plugins.vfs.PackageVisitor;
import org.jboss.classloading.plugins.vfs.VFSResourceVisitor;
-import org.jboss.classloading.spi.dependency.Module;
import org.jboss.classloading.spi.metadata.Capability;
import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
import org.jboss.classloading.spi.metadata.ExportAll;
@@ -37,10 +36,7 @@
import org.jboss.classloading.spi.visitor.ResourceFilter;
import org.jboss.classloading.spi.visitor.ResourceVisitor;
import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
-import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.deployers.vfs.spi.structure.helpers.ClassPathVisitor;
-import org.jboss.logging.Logger;
import org.jboss.virtual.VirtualFile;
/**
@@ -53,32 +49,41 @@
{
/** The serialVersionUID */
private static final long serialVersionUID = 1L;
-
- /** The log */
- private static final Logger log = Logger.getLogger(VFSDeploymentClassLoaderPolicyModule.class);
- /** The attachment containing the final classpath */
- public static final String VFS_CLASS_PATH = "VFSClassPath";
+ /** No roots */
+ private static final VirtualFile[] NO_ROOTS = new VirtualFile[0];
/** The cached roots */
private VirtualFile[] vfsRoots;
+ /** The excluded roots */
+ private VirtualFile[] excludedRoots;
+
/**
* Create a new VFSDeploymentClassLoaderPolicyModule.
*
* @param unit the deployment unit
* @throws IllegalArgumentException for a null deployment unit
*/
+ @SuppressWarnings("unchecked")
public VFSDeploymentClassLoaderPolicyModule(DeploymentUnit unit)
{
super(unit);
+ List<VirtualFile> vfsClassPath = unit.getAttachment(VFSClassLoaderClassPathDeployer.VFS_CLASS_PATH, List.class);
+ if (vfsClassPath == null)
+ vfsRoots = NO_ROOTS;
+ else
+ vfsRoots = vfsClassPath.toArray(new VirtualFile[vfsClassPath.size()]);
+ Set<VirtualFile> vfsExcludes = unit.getAttachment(VFSClassLoaderClassPathDeployer.VFS_EXCLUDES, Set.class);
+ if (vfsExcludes != null)
+ excludedRoots = vfsExcludes.toArray(new VirtualFile[vfsExcludes.size()]);
}
@Override
protected List<Capability> determineCapabilities()
{
// While we are here, check the roots
- VirtualFile[] roots = determineVFSRoots();
+ VirtualFile[] roots = vfsRoots;
List<Capability> capabilities = super.determineCapabilities();
if (capabilities != null)
@@ -100,7 +105,7 @@
ExportAll exportAll = getExportAll();
if (exportAll != null)
{
- Set<String> exportedPackages = PackageVisitor.determineAllPackages(roots, exportAll, included, excluded, excludedExport);
+ Set<String> exportedPackages = PackageVisitor.determineAllPackages(roots, excludedRoots, exportAll, included, excluded, excludedExport);
for (String packageName : exportedPackages)
{
capability = factory.createPackage(packageName, version);
@@ -110,74 +115,7 @@
return capabilities;
}
-
- /**
- * Get the virtual file roots
- *
- * @return the roots
- */
- protected VirtualFile[] determineVFSRoots()
- {
- if (vfsRoots != null)
- return vfsRoots;
- DeploymentUnit unit = getDeploymentUnit();
- Set<VirtualFile> classPath = determineClassPath(unit, this);
- vfsRoots = classPath.toArray(new VirtualFile[classPath.size()]);
- return vfsRoots;
- }
-
- /**
- * Determine classpath.
- *
- * @param unit the deployment unit we check
- * @param module the unit's module
- * @return unit's classpath
- */
- protected static Set<VirtualFile> determineClassPath(DeploymentUnit unit, Module module)
- {
- @SuppressWarnings("unchecked")
- Set<VirtualFile> classPath = unit.getAttachment(VFS_CLASS_PATH, Set.class);
- if (classPath != null)
- return classPath;
-
- ClassPathVisitor visitor = new ClassPathVisitor(unit);
- try
- {
- unit.visit(visitor);
- }
- catch (DeploymentException e)
- {
- throw new RuntimeException("Error visiting deployment: " + e);
- }
- classPath = visitor.getClassPath();
-
- // Weed out parent classpaths
- if (module != null && module.getParentDomainName() == null)
- {
- DeploymentUnit parent = unit.getParent();
- while (parent != null)
- {
- Set<VirtualFile> parentClassPath = determineClassPath(parent, parent.getAttachment(Module.class));
- if (parentClassPath != null && parentClassPath.isEmpty() == false)
- {
- if (log.isTraceEnabled())
- {
- for (VirtualFile parentFile : parentClassPath)
- {
- if (classPath.contains(parentFile))
- log.trace(unit + " weeding duplicate entry " + parentFile + " from classpath already in parent " + parent);
- }
- }
- classPath.removeAll(parentClassPath);
- }
- parent = parent.getParent();
- }
- }
- unit.addAttachment(VFS_CLASS_PATH, classPath);
- return classPath;
- }
-
@Override
public VFSClassLoaderPolicy getPolicy()
{
@@ -187,8 +125,7 @@
@Override
protected VFSClassLoaderPolicy determinePolicy()
{
- VirtualFile[] roots = determineVFSRoots();
- VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(getContextName(), roots);
+ VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(getContextName(), vfsRoots, excludedRoots);
String[] packageNames = getPackageNames();
policy.setExportedPackages(packageNames);
policy.setIncluded(getIncluded());
@@ -209,25 +146,18 @@
}
@Override
- public void reset()
- {
- super.reset();
- vfsRoots = null;
- }
-
- @Override
public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter)
{
ClassLoader classLoader = getClassLoader();
if (classLoader == null)
throw new IllegalStateException("ClassLoader has not been constructed for " + getContextName());
- VirtualFile[] roots = determineVFSRoots();
+ VirtualFile[] roots = vfsRoots;
if (roots != null)
{
ClassFilter included = getIncluded();
ClassFilter excluded = getExcluded();
- VFSResourceVisitor.visit(roots, included, excluded, classLoader, visitor, filter, recurseFilter);
+ VFSResourceVisitor.visit(roots, excludedRoots, included, excluded, classLoader, visitor, filter, recurseFilter);
}
}
}
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bootstrap/bootstrap.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bootstrap/bootstrap.xml 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bootstrap/bootstrap.xml 2008-07-30 17:33:24 UTC (rev 76488)
@@ -99,6 +99,7 @@
<classloading xmlns="urn:jboss:classloading:1.0" export-all="NON_EMPTY" import-all="true"/>
</property>
</bean>
+ <bean name="ClassLoaderClassPathDeployer" class="org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer"/>
<bean name="ClassLoaderDescribeDeployer" class="org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer">
<property name="classLoading"><inject bean="ClassLoading"/></property>
</bean>
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -30,6 +30,7 @@
import org.jboss.test.deployers.vfs.classloader.test.ManualDependsOnDeploymentClassLoaderUnitTestCase;
import org.jboss.test.deployers.vfs.classloader.test.NotVFSClassLoaderUnitTestCase;
import org.jboss.test.deployers.vfs.classloader.test.SubDeploymentClassLoaderUnitTestCase;
+import org.jboss.test.deployers.vfs.classloader.test.SubDeploymentClassLoaderVisitorUnitTestCase;
import org.jboss.test.deployers.vfs.classloader.test.VFSClassLoaderDependenciesUnitTestCase;
import org.jboss.test.deployers.vfs.classloader.test.VFSUndeployOrderClassLoaderUnitTestCase;
import org.jboss.test.deployers.vfs.classloader.test.IntegrationDeployerUnitTestCase;
@@ -64,6 +65,7 @@
suite.addTest(DeploymentDependsOnDeploymentClassLoaderUnitTestCase.suite());
suite.addTest(ManagedObjectClassLoadingParserUnitTestCase.suite());
suite.addTest(SubDeploymentClassLoaderUnitTestCase.suite());
+ suite.addTest(SubDeploymentClassLoaderVisitorUnitTestCase.suite());
suite.addTest(NotVFSClassLoaderUnitTestCase.suite());
suite.addTest(ManifestClassLoaderUnitTestCase.suite());
suite.addTest(IntegrationDeployerUnitTestCase.suite());
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/InMemoryClasesUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/InMemoryClasesUnitTestCase.java 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/InMemoryClasesUnitTestCase.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -36,6 +36,7 @@
import org.jboss.deployers.spi.deployer.Deployer;
import org.jboss.deployers.structure.spi.main.MainDeployerStructure;
import org.jboss.deployers.vfs.plugins.classloader.InMemoryClassesDeployer;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer;
import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.test.deployers.vfs.classloader.support.TestLevelClassLoaderSystemDeployer;
@@ -115,6 +116,8 @@
Deployer deployer3 = new InMemoryClassesDeployer();
- return createMainDeployer(deployer1, deployer2, deployer3);
+ Deployer deployer4 = new VFSClassLoaderClassPathDeployer();
+
+ return createMainDeployer(deployer1, deployer2, deployer3, deployer4);
}
}
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/ManifestClassLoaderUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/ManifestClassLoaderUnitTestCase.java 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/ManifestClassLoaderUnitTestCase.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -76,6 +76,7 @@
AssembledDirectory sub = topLevel.mkdir("sub.jar");
addPackage(sub, UseA.class);
addPath(sub, "/classloader/manifest/scoped", "META-INF");
+ enableTrace("org.jboss.deployers");
VFSDeploymentUnit unit = assertDeploy(topLevel);
try
{
Added: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/SubDeploymentClassLoaderVisitorUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/SubDeploymentClassLoaderVisitorUnitTestCase.java (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/SubDeploymentClassLoaderVisitorUnitTestCase.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -0,0 +1,130 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.deployers.vfs.classloader.test;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.classloading.spi.visitor.ResourceContext;
+import org.jboss.classloading.spi.visitor.ResourceFilter;
+import org.jboss.classloading.spi.visitor.ResourceVisitor;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.test.deployers.BootstrapDeployersTest;
+
+/**
+ * DeploymentDependsOnManualClassLoaderUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class SubDeploymentClassLoaderVisitorUnitTestCase extends BootstrapDeployersTest
+{
+ public static Test suite()
+ {
+ return suite(SubDeploymentClassLoaderVisitorUnitTestCase.class);
+ }
+
+ public SubDeploymentClassLoaderVisitorUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testNoSubDeploymentClassLoaderVisit() throws Exception
+ {
+ VFSDeploymentUnit top = assertDeploy("/classloader", "top-sub-no-classloader");
+ try
+ {
+ TestResourceVisitor test = visit(top);
+ test.assertContains("test-resource-top-no-classloader");
+ test.assertContains("test-resource-sub-no-classloader");
+ }
+ finally
+ {
+ undeploy(top);
+ }
+ }
+
+ public void testSubDeploymentClassLoaderVisit() throws Exception
+ {
+ VFSDeploymentUnit top = assertDeploy("/classloader", "top-sub-classloader");
+ try
+ {
+ TestResourceVisitor test = visit(top);
+ test.assertContains("test-resource-top-classloader");
+ test.assertNotContains("sub/test-resource-sub-classloader");
+
+ DeploymentUnit sub = assertChild(top, "sub/");
+ test = visit(sub);
+ test.assertNotContains("test-resource-top-classloader");
+ test.assertContains("test-resource-sub-classloader");
+ }
+ finally
+ {
+ undeploy(top);
+ }
+ }
+
+ protected TestResourceVisitor visit(DeploymentUnit unit) throws Exception
+ {
+ Module module = unit.getAttachment(Module.class);
+ if (module == null)
+ fail("Expected " + unit + " to have a module");
+
+ TestResourceVisitor visitor = new TestResourceVisitor();
+ module.visit(visitor);
+
+ getLog().debug(unit.getName() + " found: " + visitor.resources);
+
+ return visitor;
+ }
+
+ public class TestResourceVisitor implements ResourceVisitor
+ {
+ private Set<String> resources = new HashSet<String>();
+
+ public void assertContains(String resourceName)
+ {
+ if (resources.contains(resourceName) == false)
+ fail(resourceName + " not found in " + resources);
+ }
+
+ public void assertNotContains(String resourceName)
+ {
+ if (resources.contains(resourceName))
+ fail(resourceName + " unexpectedly found in " + resources);
+ }
+
+ public ResourceFilter getFilter()
+ {
+ return null;
+ }
+
+ public void visit(ResourceContext resource)
+ {
+ resources.add(resource.getResourceName());
+ }
+ }
+}
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesTest.java 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesTest.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -46,7 +46,9 @@
import org.jboss.deployers.plugins.classloading.AbstractClassLoaderDescribeDeployer;
import org.jboss.deployers.spi.attachments.MutableAttachments;
import org.jboss.deployers.spi.attachments.PredeterminedManagedObjectAttachments;
+import org.jboss.deployers.spi.deployer.Deployer;
import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer;
import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer;
import org.jboss.deployers.vfs.spi.client.VFSDeployment;
import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
@@ -255,6 +257,8 @@
deployer2.setClassLoading(classLoading);
deployer2.setSystem(system);
- return createMainDeployer(deployer1, deployer2);
+ Deployer deployer3 = new VFSClassLoaderClassPathDeployer();
+
+ return createMainDeployer(deployer1, deployer2, deployer3);
}
}
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -42,6 +42,7 @@
import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer;
import org.jboss.deployers.vfs.deployer.kernel.BeanScanningDeployer;
import org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer;
import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer;
import org.jboss.deployers.vfs.spi.client.VFSDeployment;
import org.jboss.kernel.Kernel;
@@ -73,6 +74,7 @@
ClassLoadingMetaData clmd = new ClassLoadingMetaData();
cldd.setDefaultMetaData(clmd);
+ VFSClassLoaderClassPathDeployer vfscp = new VFSClassLoaderClassPathDeployer();
VFSClassLoaderDescribeDeployer vfsdd = new VFSClassLoaderDescribeDeployer();
ClassLoading classLoading = new ClassLoading();
KernelController controller = kernel.getController();
@@ -108,6 +110,7 @@
addDeployer(main, beanDeployer);
addDeployer(main, cldd);
addDeployer(main, vfsdd);
+ addDeployer(main, vfscp);
addDeployer(main, clsd);
addDeployer(main, gad);
addDeployer(main, kernelDeploymentDeployer);
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/test/FaceletsUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/test/FaceletsUnitTestCase.java 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/test/FaceletsUnitTestCase.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -33,6 +33,7 @@
import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
import org.jboss.deployers.plugins.classloading.AbstractLevelClassLoaderSystemDeployer;
import org.jboss.deployers.plugins.classloading.ClassLoadingDefaultDeployer;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer;
import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer;
import org.jboss.deployers.vfs.plugins.structure.war.WARStructure;
import org.jboss.deployers.vfs.spi.client.VFSDeployment;
@@ -74,6 +75,7 @@
ClassLoadingMetaData clmd = new ClassLoadingMetaData();
cldd.setDefaultMetaData(clmd);
+ VFSClassLoaderClassPathDeployer vfscp = new VFSClassLoaderClassPathDeployer();
VFSClassLoaderDescribeDeployer vfsdd = new VFSClassLoaderDescribeDeployer();
ClassLoading classLoading = new ClassLoading();
KernelController controller = kernel.getController();
@@ -99,6 +101,7 @@
addDeployer(main, cldd);
addDeployer(main, vfsdd);
+ addDeployer(main, vfscp);
addDeployer(main, clsd);
addDeployer(main, deployer);
}
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/structure/ear/support/MockEarStructureDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/structure/ear/support/MockEarStructureDeployer.java 2008-07-30 17:29:48 UTC (rev 76487)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/structure/ear/support/MockEarStructureDeployer.java 2008-07-30 17:33:24 UTC (rev 76488)
@@ -319,7 +319,7 @@
ClassFilter included = null;
ClassFilter excluded = null;
ResourceFilter filter = org.jboss.classloading.spi.visitor.ClassFilter.INSTANCE;
- VFSResourceVisitor.visit(new VirtualFile[]{archive}, included, excluded, classLoader, visitor, filter, null);
+ VFSResourceVisitor.visit(new VirtualFile[]{archive}, null, included, excluded, classLoader, visitor, filter, null);
AnnotationEnvironment env = visitor.getEnv();
Integer ejbs = getType(env, Stateless.class, J2eeModuleMetaData.EJB);
More information about the jboss-cvs-commits
mailing list