[jboss-cvs] JBossAS SVN: r76016 - projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Jul 19 17:12:32 EDT 2008
Author: alesj
Date: 2008-07-19 17:12:32 -0400 (Sat, 19 Jul 2008)
New Revision: 76016
Modified:
projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
Log:
Fixing [JBDEPLOY-59], adding recursion in case parent is not yet determined.
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-19 16:18:43 UTC (rev 76015)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java 2008-07-19 21:12:32 UTC (rev 76016)
@@ -29,12 +29,13 @@
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;
import org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy;
+import org.jboss.classloading.spi.visitor.ResourceFilter;
import org.jboss.classloading.spi.visitor.ResourceVisitor;
-import org.jboss.classloading.spi.visitor.ResourceFilter;
import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.structure.spi.DeploymentUnit;
@@ -122,6 +123,21 @@
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
+ */
+ @SuppressWarnings("unchecked")
+ protected static Set<VirtualFile> determineClassPath(DeploymentUnit unit, Module module)
+ {
ClassPathVisitor visitor = new ClassPathVisitor(unit);
try
{
@@ -132,15 +148,17 @@
throw new RuntimeException("Error visiting deployment: " + e);
}
Set<VirtualFile> classPath = visitor.getClassPath();
-
// Weed out parent classpaths
- if (getParentDomainName() == null)
+ if (module != null && module.getParentDomainName() == null)
{
DeploymentUnit parent = unit.getParent();
while (parent != null)
{
Set<VirtualFile> parentClassPath = parent.getAttachment(VFS_CLASS_PATH, Set.class);
- if (parentClassPath != null)
+ if (parentClassPath == null)
+ parentClassPath = determineClassPath(parent, parent.getAttachment(Module.class));
+
+ if (parentClassPath != null && parentClassPath.isEmpty() == false)
{
if (log.isTraceEnabled())
{
@@ -156,9 +174,7 @@
}
}
unit.addAttachment(VFS_CLASS_PATH, classPath);
-
- vfsRoots = classPath.toArray(new VirtualFile[classPath.size()]);
- return vfsRoots;
+ return classPath;
}
@Override
More information about the jboss-cvs-commits
mailing list