[jboss-cvs] JBossAS SVN: r76564 - in projects/jboss-deployers/trunk: deployers-impl/src/tests/org/jboss/test/deployers/classloading/support and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Aug 1 06:23:23 EDT 2008
Author: alesj
Date: 2008-08-01 06:23:22 -0400 (Fri, 01 Aug 2008)
New Revision: 76564
Modified:
projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java
projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java
projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/support/MockDeploymentClassLoaderPolicyModule.java
projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
Log:
Use Module:visit with urls parameter.
Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java 2008-08-01 09:59:52 UTC (rev 76563)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java 2008-08-01 10:23:22 UTC (rev 76564)
@@ -64,8 +64,6 @@
* * org.jboss.classloading.spi.visitor.ResourceFilter.resource - plain resource filter
* * org.jboss.classloading.spi.visitor.ResourceFilter.recurse - recurse resource filter
*
- * @see Module#visit(org.jboss.classloading.spi.visitor.ResourceVisitor, org.jboss.classloading.spi.visitor.ResourceFilter, org.jboss.classloading.spi.visitor.ResourceFilter)
- *
* @param unit the deployment unit
* @param module the underlying module
* @param visitor the current generic annotation resource visitor
@@ -76,7 +74,7 @@
if (filter != null)
filter = visitor.getFilter();
ResourceFilter recurse = getFilter(unit, ResourceFilter.class, "recurse", recurseFilter);
- module.visit(visitor, filter, recurse);
+ module.visit(visitor, filter, recurse, getUrls());
}
/**
Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java 2008-08-01 09:59:52 UTC (rev 76563)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java 2008-08-01 10:23:22 UTC (rev 76564)
@@ -21,6 +21,8 @@
*/
package org.jboss.deployers.plugins.annotations;
+import java.net.URL;
+
import javassist.ClassPath;
import javassist.ClassPool;
import javassist.LoaderClassPath;
@@ -126,9 +128,19 @@
*/
protected void visitModule(DeploymentUnit unit, Module module, GenericAnnotationResourceVisitor visitor)
{
- module.visit(visitor);
+ module.visit(visitor, null, null, getUrls());
}
+ /**
+ * Get the new root urls.
+ *
+ * @return the new root urls
+ */
+ protected URL[] getUrls()
+ {
+ return null;
+ }
+
public void deploy(DeploymentUnit unit, Module module) throws DeploymentException
{
if (log.isTraceEnabled())
Modified: projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/support/MockDeploymentClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/support/MockDeploymentClassLoaderPolicyModule.java 2008-08-01 09:59:52 UTC (rev 76563)
+++ projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/classloading/support/MockDeploymentClassLoaderPolicyModule.java 2008-08-01 10:23:22 UTC (rev 76564)
@@ -21,23 +21,24 @@
*/
package org.jboss.test.deployers.classloading.support;
-import java.util.List;
+import java.net.URL;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.Arrays;
+import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
-import java.net.URL;
+import org.jboss.classloader.spi.filter.ClassFilter;
import org.jboss.classloader.test.support.MockClassLoaderHelper;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloading.plugins.visitor.DefaultResourceContext;
import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
import org.jboss.classloading.spi.metadata.Capability;
import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.visitor.ResourceContext;
+import org.jboss.classloading.spi.visitor.ResourceFilter;
import org.jboss.classloading.spi.visitor.ResourceVisitor;
-import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.classloading.spi.visitor.ResourceContext;
import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
import org.jboss.deployers.structure.spi.DeploymentUnit;
@@ -154,7 +155,7 @@
}
@Override
- public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter)
+ public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter, URL... urls)
{
MockClassLoadingMetaData mclmd = getClassLoadingMetaData();
String[] paths = mclmd.getPaths();
@@ -180,7 +181,7 @@
if (excludedFilter != null && excludedFilter.matchesResourcePath(path))
continue;
- ResourceContext context = new ResourceContext(getURL(path), path, classLoader);
+ ResourceContext context = new DefaultResourceContext(getURL(path), path, classLoader);
if (filter == null || filter.accepts(context))
visitor.visit(context);
}
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-08-01 09:59:52 UTC (rev 76563)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java 2008-08-01 10:23:22 UTC (rev 76564)
@@ -24,6 +24,7 @@
import java.net.URL;
import java.util.List;
import java.util.Set;
+import java.util.ArrayList;
import java.util.concurrent.CopyOnWriteArrayList;
import org.jboss.classloader.spi.filter.ClassFilter;
@@ -38,6 +39,7 @@
import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.virtual.VirtualFile;
+import org.jboss.virtual.VFS;
/**
* VFSDeploymentClassLoaderPolicyModule.
@@ -146,18 +148,74 @@
}
@Override
- public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter)
+ public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter, URL... urls)
{
ClassLoader classLoader = getClassLoader();
if (classLoader == null)
throw new IllegalStateException("ClassLoader has not been constructed for " + getContextName());
VirtualFile[] roots = vfsRoots;
- if (roots != null)
+ if (roots != null && roots.length > 0)
{
+ if (urls != null && urls.length > 0)
+ roots = matchUrlsWithRoots(urls, roots);
+
ClassFilter included = getIncluded();
ClassFilter excluded = getExcluded();
VFSResourceVisitor.visit(roots, excludedRoots, included, excluded, classLoader, visitor, filter, recurseFilter);
}
}
+
+ /**
+ * Match urls with roots.
+ *
+ * @param urls the urls
+ * @param roots the old roots
+ * @return new roots
+ */
+ protected static VirtualFile[] matchUrlsWithRoots(URL[] urls, VirtualFile[] roots)
+ {
+ try
+ {
+ String[] rootURLStrings = new String[urls.length];
+ List<VirtualFile> newRoots = new ArrayList<VirtualFile>(urls.length);
+ for (URL url : urls)
+ {
+ String urlString = stripProtocol(url);
+ for(int i=0; i < roots.length; i++)
+ {
+ if (rootURLStrings[i] == null)
+ rootURLStrings[i] = stripProtocol(roots[i].toURL());
+
+ if (urlString.startsWith(rootURLStrings[i]))
+ {
+ VirtualFile newRoot = VFS.getRoot(url);
+ newRoots.add(newRoot);
+ break;
+ }
+ }
+ }
+ return newRoots.toArray(new VirtualFile[newRoots.size()]);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Cannot match urls to roots.", e);
+ }
+ }
+
+ /**
+ * Strip the url protocol.
+ *
+ * @param url the url
+ * @return url external form w/o protocol
+ */
+ protected static String stripProtocol(URL url)
+ {
+ if (url == null)
+ throw new IllegalArgumentException("Null url");
+
+ String urlString = url.toExternalForm();
+ int p = urlString.indexOf(":/");
+ return urlString.substring(p + 2);
+ }
}
More information about the jboss-cvs-commits
mailing list