[jboss-cvs] JBossAS SVN: r64041 - in projects/microcontainer/trunk: classloader and 20 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 13 11:29:52 EDT 2007
Author: adrian at jboss.org
Date: 2007-07-13 11:29:52 -0400 (Fri, 13 Jul 2007)
New Revision: 64041
Added:
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/NothingButJavaClassFilter.java
projects/microcontainer/trunk/classloader/src/resources/tests/a/com/acme/p1/testResource.xml
projects/microcontainer/trunk/classloader/src/resources/tests/a/testResource.xml
Removed:
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/jmx/
Modified:
projects/microcontainer/trunk/build/pom.xml
projects/microcontainer/trunk/classloader/.classpath
projects/microcontainer/trunk/classloader/pom.xml
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/ClassLoaderUtils.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/EverythingClassFilter.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/JavaOnlyClassFilter.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/NothingClassFilter.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/PatternClassFilter.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/loader/ClassLoaderToLoaderAdapter.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomain.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/Loader.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ParentPolicy.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoaderManager.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoadingTask.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/ClassFilter.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/PackageClassFilter.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderPolicy.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/MatchClassFilter.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/MockLoader.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/NoMatchClassFilter.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/test/CustomParentLoaderUnitTestCase.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/FilterUnitTestCase.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/PackageFilterUnitTestCase.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/policy/support/TestDelegateLoader.java
projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/resources/tests/ResourceUnitTestCase.java
projects/microcontainer/trunk/deployers-impl/.classpath
projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/AbstractTopLevelClassLoaderSystemDeployer.java
projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/ClassLoading.java
projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Domain.java
projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Module.java
projects/microcontainer/trunk/deployers-structure-spi/src/main/org/jboss/deployers/structure/spi/classloading/ClassLoaderMetaData.java
projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/PackageVisitor.java
projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSClassLoaderPolicy.java
projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSTopLevelClassLoaderSystemDeployer.java
Log:
[JBMICROCONT-182] - Changes for vfs classloader integration.
Committed to keep Sacha happy. :-)
Modified: projects/microcontainer/trunk/build/pom.xml
===================================================================
--- projects/microcontainer/trunk/build/pom.xml 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/build/pom.xml 2007-07-13 15:29:52 UTC (rev 64041)
@@ -41,6 +41,7 @@
<version.jaxb.api>2.0</version.jaxb.api>
<version.jboss.aop>2.0.0-SNAPSHOT</version.jboss.aop>
<version.jboss.logging.spi>2.0.3.GA</version.jboss.logging.spi>
+ <version.jboss.classloading.spi>5.0.0-SNAPSHOT</version.jboss.classloading.spi>
<version.jboss.test>1.0.4-SNAPSHOT</version.jboss.test>
<version.junit>3.8.1</version.junit>
<version.jboss.profiler.jvmti>1.0.0.CR5</version.jboss.profiler.jvmti>
@@ -367,6 +368,11 @@
<version>${version.jboss.logging.spi}</version>
</dependency>
<dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-classloading-spi</artifactId>
+ <version>${version.jboss.classloading.spi}</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-junit</artifactId>
<version>${version.ant.junit}</version>
Modified: projects/microcontainer/trunk/classloader/.classpath
===================================================================
--- projects/microcontainer/trunk/classloader/.classpath 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/.classpath 2007-07-13 15:29:52 UTC (rev 64041)
@@ -11,6 +11,7 @@
<classpathentry kind="var" path="M2_REPO/jboss/jboss-common-logging-log4j/2.0.4.GA/jboss-common-logging-log4j-2.0.4.GA.jar" sourcepath="M2_REPO/jboss/jboss-common-logging-log4j/2.0.4.GA/jboss-common-logging-log4j-2.0.4.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/jboss/profiler/jvmti/jboss-profiler-jvmti/1.0.0.CR5/jboss-profiler-jvmti-1.0.0.CR5.jar"/>
<classpathentry kind="var" path="M2_REPO/jboss/jboss-logging-spi/2.0.3.GA/jboss-logging-spi-2.0.3.GA.jar" sourcepath="M2_REPO/jboss/jboss-logging-spi/2.0.3.GA/jboss-logging-spi-2.0.3.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-classloading-spi/5.0.0-SNAPSHOT/jboss-classloading-spi-5.0.0-SNAPSHOT.jar" sourcepath="M2_REPO/jboss/jboss-classLoading-spi-5.0.0-SNAPSHOT/5.0.0-SNAPSHOT/jboss-classloading-spi-5.0.0-SNAPSHOT-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
<classpathentry kind="var" path="M2_REPO/apache-xerces/xml-apis/2.7.1/xml-apis-2.7.1.jar"/>
<classpathentry kind="var" path="M2_REPO/jboss/jboss-common-logging-spi/2.0.4.GA/jboss-common-logging-spi-2.0.4.GA.jar" sourcepath="M2_REPO/jboss/jboss-common-logging-spi/2.0.4.GA/jboss-common-logging-spi-2.0.4.GA-sources.jar"/>
Modified: projects/microcontainer/trunk/classloader/pom.xml
===================================================================
--- projects/microcontainer/trunk/classloader/pom.xml 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/pom.xml 2007-07-13 15:29:52 UTC (rev 64041)
@@ -23,6 +23,10 @@
<!-- Global dependencies -->
<dependency>
<groupId>jboss</groupId>
+ <artifactId>jboss-classloading-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>jboss</groupId>
<artifactId>jboss-common-core</artifactId>
</dependency>
<dependency>
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/ClassLoaderUtils.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/ClassLoaderUtils.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/ClassLoaderUtils.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -101,17 +101,6 @@
return "";
return className.substring(0, i).replace('/', '.');
}
-
- /**
- * Get the resource name in dot notation
- *
- * @param name the resource name
- * @return the resource name with / replaced by .
- */
- public static final String getResourceNameInDotNotation(final String name)
- {
- return name.replace('/', '.');
- }
/**
* Load bytecode from a stream
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/EverythingClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/EverythingClassFilter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/EverythingClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -42,11 +42,16 @@
// Singleton
}
- public boolean matches(String className)
+ public boolean matchesClassName(String className)
{
return true;
}
+ public boolean matchesResourcePath(String resourcePath)
+ {
+ return true;
+ }
+
@Override
public String toString()
{
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/JavaOnlyClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/JavaOnlyClassFilter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/JavaOnlyClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -37,7 +37,7 @@
*/
private JavaOnlyClassFilter()
{
- super(new String[] { "java\\..+", "javax\\..+" } );
+ super(new String[] { "java\\..+", "javax\\..+" }, new String[] { "java/.+", "javax/.+" } );
}
public String toString()
Added: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/NothingButJavaClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/NothingButJavaClassFilter.java (rev 0)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/NothingButJavaClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, 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.classloader.plugins.filter;
+
+/**
+ * A class filter that only delegates java.* classes
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class NothingButJavaClassFilter extends PatternClassFilter
+{
+ /** The singleton instance */
+ public static final NothingButJavaClassFilter INSTANCE = new NothingButJavaClassFilter();
+
+ /**
+ * Create a new JavaOnlyClassFilter.
+ */
+ private NothingButJavaClassFilter()
+ {
+ super(new String[] { "java\\..+" }, new String[] { "java/.+" });
+ }
+
+ public String toString()
+ {
+ return "NOTHING_BUT_JAVA";
+ }
+}
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/NothingClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/NothingClassFilter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/NothingClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -42,11 +42,16 @@
// Singleton
}
- public boolean matches(String className)
+ public boolean matchesClassName(String className)
{
return false;
}
+ public boolean matchesResourcePath(String resourcePath)
+ {
+ return false;
+ }
+
@Override
public String toString()
{
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/PatternClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/PatternClassFilter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/filter/PatternClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -35,71 +35,78 @@
*/
public class PatternClassFilter implements ClassFilter
{
- /** The patterns as regular expressions */
- private Pattern[] patterns;
+ /** The class patterns as regular expressions */
+ private Pattern[] classPatterns;
- /**
- * Create a new PatternClassFilter.
- *
- * @param patterns the patterns
- * @return the filter
- * @throws IllegalArgumentException for a null pattern
- */
- public static PatternClassFilter createPatternClassFilter(String... patterns)
- {
- return new PatternClassFilter(patterns);
- }
+ /** The resource patterns as regular expressions */
+ private Pattern[] resourcePatterns;
/**
* Create a new PatternClassFilter.
*
- * @param pattern the pattern
- */
- public PatternClassFilter(String pattern)
- {
- if (pattern == null)
- throw new IllegalArgumentException("Null pattern");
- patterns = new Pattern[1];
- patterns[0] = Pattern.compile(pattern);
- }
-
- /**
- * Create a new PatternClassFilter.
- *
- * @param patterns the patterns
+ * @param classPatterns the class patterns
+ * @param resourcePatterns the resource patterns
* @throws IllegalArgumentException for a null pattern
*/
- public PatternClassFilter(String[] patterns)
+ public PatternClassFilter(String[] classPatterns, String[] resourcePatterns)
{
- if (patterns == null)
+ if (classPatterns == null)
throw new IllegalArgumentException("Null patterns");
- this.patterns = new Pattern[patterns.length];
- for (int i = 0; i < patterns.length; ++i)
+ this.classPatterns = new Pattern[classPatterns.length];
+ for (int i = 0; i < classPatterns.length; ++i)
{
- if (patterns[i] == null)
- throw new IllegalArgumentException("Null pattern in " + Arrays.asList(patterns));
- this.patterns[i] = Pattern.compile(patterns[i]);
+ if (classPatterns[i] == null)
+ throw new IllegalArgumentException("Null pattern in " + Arrays.asList(classPatterns));
+ this.classPatterns[i] = Pattern.compile(classPatterns[i]);
}
+
+ if (resourcePatterns == null)
+ {
+ this.resourcePatterns = this.classPatterns;
+ return;
+ }
+
+ this.resourcePatterns = new Pattern[resourcePatterns.length];
+ for (int i = 0; i < resourcePatterns.length; ++i)
+ {
+ if (resourcePatterns[i] == null)
+ throw new IllegalArgumentException("Null pattern in " + Arrays.asList(resourcePatterns));
+ this.resourcePatterns[i] = Pattern.compile(resourcePatterns[i]);
+ }
}
- public boolean matches(String className)
+ public boolean matchesClassName(String className)
{
if (className == null)
return false;
- for (int i = 0; i < patterns.length; ++i)
+ for (int i = 0; i < classPatterns.length; ++i)
{
- Matcher matcher = patterns[i].matcher(className);
+ Matcher matcher = classPatterns[i].matcher(className);
if (matcher.matches())
return true;
}
return false;
}
+ public boolean matchesResourcePath(String resourcePath)
+ {
+ if (resourcePath == null)
+ return false;
+
+ for (int i = 0; i < resourcePatterns.length; ++i)
+ {
+ Matcher matcher = resourcePatterns[i].matcher(resourcePath);
+ if (matcher.matches())
+ return true;
+ }
+ return false;
+ }
+
@Override
public String toString()
{
- return Arrays.asList(patterns).toString();
+ return Arrays.asList(classPatterns).toString();
}
}
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/loader/ClassLoaderToLoaderAdapter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/loader/ClassLoaderToLoaderAdapter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/plugins/loader/ClassLoaderToLoaderAdapter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -64,7 +64,7 @@
accessControlContext = AccessController.getContext();
}
- public URL getResource(final String name, String resourceName)
+ public URL getResource(final String name)
{
URL url;
SecurityManager sm = System.getSecurityManager();
@@ -94,7 +94,7 @@
return url;
}
- public void getResources(final String name, String resourceName, Set<URL> urls) throws IOException
+ public void getResources(final String name, Set<URL> urls) throws IOException
{
Enumeration<URL> enumeration;
SecurityManager sm = System.getSecurityManager();
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomain.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomain.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderDomain.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -148,34 +148,34 @@
}
@Override
- protected Loader findBeforeLoader(String name, String resourceName)
+ protected Loader findBeforeLoader(String name)
{
boolean trace = log.isTraceEnabled();
ClassFilter filter = getParentPolicy().getBeforeFilter();
- if (filter.matches(resourceName))
+ if (filter.matchesResourcePath(name))
{
if (trace)
- log.trace(this + " " + resourceName + " matches parent beforeFilter=" + filter);
- return findLoaderFromParent(name, resourceName);
+ log.trace(this + " " + name + " matches parent beforeFilter=" + filter);
+ return findLoaderFromParent(name);
}
if (trace)
- log.trace(this + " " + resourceName + " does NOT match parent beforeFilter=" + filter);
+ log.trace(this + " " + name + " does NOT match parent beforeFilter=" + filter);
return null;
}
@Override
- protected Loader findAfterLoader(String name, String resourceName)
+ protected Loader findAfterLoader(String name)
{
boolean trace = log.isTraceEnabled();
ClassFilter filter = getParentPolicy().getAfterFilter();
- if (filter.matches(resourceName))
+ if (filter.matchesResourcePath(name))
{
if (trace)
- log.trace(this + " " + resourceName + " matches parent afterFilter=" + filter);
- return findLoaderFromParent(name, resourceName);
+ log.trace(this + " " + name + " matches parent afterFilter=" + filter);
+ return findLoaderFromParent(name);
}
if (trace)
- log.trace(this + " " + resourceName + " does NOT match parent afterFilter=" + filter);
+ log.trace(this + " " + name + " does NOT match parent afterFilter=" + filter);
return null;
}
@@ -183,10 +183,9 @@
* Try to find a loader from the parent
*
* @param name the name
- * @param resourceName the name in dot notation
* @return the loader if found
*/
- protected Loader findLoaderFromParent(String name, String resourceName)
+ protected Loader findLoaderFromParent(String name)
{
Loader parentLoader = getParent();
@@ -199,32 +198,32 @@
}
if (trace)
- log.trace(this + " load from parent " + resourceName + " parent=" + parent);
+ log.trace(this + " load from parent " + name + " parent=" + parent);
// Recurse into parent domains
if (parentLoader instanceof ClassLoaderDomain)
{
ClassLoaderDomain parentDomain = (ClassLoaderDomain) parentLoader;
- return parentDomain.findLoader(name, resourceName);
+ return parentDomain.findLoader(name);
}
// A normal loader
- if (parentLoader.getResource(name, resourceName) != null)
+ if (parentLoader.getResource(name) != null)
return parentLoader;
return null;
}
@Override
- protected URL beforeGetResource(String name, String resourceName)
+ protected URL beforeGetResource(String name)
{
boolean trace = log.isTraceEnabled();
ClassFilter filter = getParentPolicy().getBeforeFilter();
- if (filter.matches(resourceName))
+ if (filter.matchesResourcePath(name))
{
if (trace)
log.trace(this + " " + name + " matches parent beforeFilter=" + filter);
- return getResourceFromParent(name, resourceName);
+ return getResourceFromParent(name);
}
if (trace)
log.trace(this + " " + name + " does NOT match parent beforeFilter=" + filter);
@@ -232,15 +231,15 @@
}
@Override
- protected URL afterGetResource(String name, String resourceName)
+ protected URL afterGetResource(String name)
{
boolean trace = log.isTraceEnabled();
ClassFilter filter = getParentPolicy().getAfterFilter();
- if (filter.matches(resourceName))
+ if (filter.matchesResourcePath(name))
{
if (trace)
log.trace(this + " " + name + " matches parent afterFilter=" + filter);
- return getResourceFromParent(name, resourceName);
+ return getResourceFromParent(name);
}
if (trace)
log.trace(this + " " + name + " does NOT match parent afterFilter=" + filter);
@@ -251,10 +250,9 @@
* Try to get a resource from the parent
*
* @param name the name
- * @param resourceName the name of the resource in dot notation
* @return the url if found
*/
- protected URL getResourceFromParent(String name, String resourceName)
+ protected URL getResourceFromParent(String name)
{
Loader parentLoader = getParent();
@@ -269,7 +267,7 @@
if (trace)
log.trace(this + " get resource from parent " + name + " parent=" + parentLoader);
- URL result = parentLoader.getResource(name, resourceName);
+ URL result = parentLoader.getResource(name);
if (trace)
{
@@ -283,30 +281,30 @@
}
@Override
- protected void beforeGetResources(String name, String resourceName, Set<URL> urls) throws IOException
+ protected void beforeGetResources(String name, Set<URL> urls) throws IOException
{
boolean trace = log.isTraceEnabled();
ClassFilter filter = getParentPolicy().getBeforeFilter();
- if (filter.matches(resourceName))
+ if (filter.matchesResourcePath(name))
{
if (trace)
log.trace(this + " " + name + " matches parent beforeFilter=" + filter);
- getResourcesFromParent(name, resourceName, urls);
+ getResourcesFromParent(name, urls);
}
else if (trace)
log.trace(this + " " + name + " does NOT match parent beforeFilter=" + filter);
}
@Override
- protected void afterGetResources(String name, String resourceName, Set<URL> urls) throws IOException
+ protected void afterGetResources(String name, Set<URL> urls) throws IOException
{
boolean trace = log.isTraceEnabled();
ClassFilter filter = getParentPolicy().getAfterFilter();
- if (filter.matches(resourceName))
+ if (filter.matchesResourcePath(name))
{
if (trace)
log.trace(this + " " + name + " matches parent afterFilter=" + filter);
- getResourcesFromParent(name, resourceName, urls);
+ getResourcesFromParent(name, urls);
}
else if (trace)
log.trace(this + " " + name + " does NOT match parent afterFilter=" + filter);
@@ -317,10 +315,9 @@
*
* @param name the name
* @param urls the urls to add to
- * @param resourceName the name of the resource in dot notation
* @throws IOException for any error
*/
- protected void getResourcesFromParent(String name, String resourceName, Set<URL> urls) throws IOException
+ protected void getResourcesFromParent(String name, Set<URL> urls) throws IOException
{
Loader parentLoader = getParent();
@@ -335,7 +332,7 @@
if (trace)
log.trace(this + " get resources from parent " + name + " parent=" + parentLoader);
- parentLoader.getResources(name, resourceName, urls);
+ parentLoader.getResources(name, urls);
}
/**
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/Loader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/Loader.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/Loader.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -45,18 +45,16 @@
* Get a resource
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @return the url or null if not found
*/
- URL getResource(String name, String resourceName);
+ URL getResource(String name);
/**
* Get resources
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param urls the list of urls to add to
* @throws IOException for any error
*/
- void getResources(String name, String resourceName, Set<URL> urls) throws IOException;
+ void getResources(String name, Set<URL> urls) throws IOException;
}
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ParentPolicy.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ParentPolicy.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ParentPolicy.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -35,7 +35,7 @@
public static final ParentPolicy BEFORE = new ParentPolicy(ClassFilter.EVERYTHING, ClassFilter.NOTHING, "BEFORE");
/** Servlet style */
- public static final ParentPolicy AFTER = new ParentPolicy(ClassFilter.NOTHING, ClassFilter.EVERYTHING, "AFTER");
+ public static final ParentPolicy AFTER = new ParentPolicy(ClassFilter.NOTHING_BUT_JAVA, ClassFilter.EVERYTHING, "AFTER");
/** Standard Java Delegation for java classes */
public static final ParentPolicy BEFORE_BUT_JAVA_ONLY = new ParentPolicy(ClassFilter.JAVA_ONLY, ClassFilter.NOTHING, "BEFORE_BUT_JAVA_ONLY");
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -45,7 +45,7 @@
import org.jboss.classloader.spi.ClassLoaderPolicy;
import org.jboss.classloader.spi.DelegateLoader;
import org.jboss.classloader.spi.PackageInformation;
-import org.jboss.classloader.spi.jmx.JMXClassLoader;
+import org.jboss.classloading.spi.RealClassLoader;
import org.jboss.logging.Logger;
import org.jboss.util.collection.Iterators;
@@ -55,7 +55,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
-public class BaseClassLoader extends SecureClassLoader implements BaseClassLoaderMBean, JMXClassLoader
+public class BaseClassLoader extends SecureClassLoader implements BaseClassLoaderMBean, RealClassLoader
{
/** The log */
private static final Logger log = Logger.getLogger(BaseClassLoader.class);
@@ -100,8 +100,7 @@
if (basePolicy.isBlackListable())
blackList = new CopyOnWriteArraySet<String>();
- if (log.isTraceEnabled())
- log.debug("Created " + this + " with policy " + policy);
+ log.debug("Created " + this + " with policy " + policy.toLongString());
}
public ObjectName getObjectName()
@@ -187,7 +186,7 @@
log.trace(this + " getResource " + name + " domain=" + domain);
if (domain != null)
- return domain.getResource(this, name, ClassLoaderUtils.getResourceNameInDotNotation(name));
+ return domain.getResource(this, name);
return null;
}
@@ -203,7 +202,7 @@
Set<URL> resourceURLs = new HashSet<URL>();
if (domain != null)
- domain.getResources(this, name, ClassLoaderUtils.getResourceNameInDotNotation(name), resourceURLs);
+ domain.getResources(this, name, resourceURLs);
return Iterators.toEnumeration(resourceURLs.iterator());
}
@@ -240,17 +239,17 @@
}
// Look for the resource
- final String resourceName = ClassLoaderUtils.classNameToPath(name);
+ final String resourcePath = ClassLoaderUtils.classNameToPath(name);
return AccessController.doPrivileged(new PrivilegedAction<Class>()
{
public Class<?> run()
{
- InputStream is = policy.getResourceAsStream(resourceName);
+ InputStream is = policy.getResourceAsStream(resourcePath);
if (is == null)
{
if (trace)
- log.trace(this + " resource not found locally " + resourceName + " for " + name);
+ BaseClassLoader.log.trace(this + " resource not found locally " + resourcePath + " for " + name);
return null;
}
@@ -259,7 +258,7 @@
// Let the policy do things before we define the class
BaseClassLoaderPolicy basePolicy = policy;
- ProtectionDomain protectionDomain = basePolicy.getProtectionDomain(name, resourceName);
+ ProtectionDomain protectionDomain = basePolicy.getProtectionDomain(name, resourcePath);
byteCode = policy.transform(name, byteCode, protectionDomain);
// Create the package if necessary
@@ -272,7 +271,7 @@
else
result = defineClass(name, byteCode, 0, byteCode.length);
if (trace)
- log.trace(this + " loaded class locally " + ClassLoaderUtils.classToString(result));
+ BaseClassLoader.log.trace(this + " loaded class locally " + ClassLoaderUtils.classToString(result));
return result;
}
}, policy.getAccessControlContext());
@@ -282,23 +281,21 @@
* Try to find the resource locally
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @return the url if found
*/
- URL getResourceLocally(String name, String resourceName)
+ URL getResourceLocally(String name)
{
- return getResourceLocally(name, resourceName, log.isTraceEnabled());
+ return getResourceLocally(name, log.isTraceEnabled());
}
/**
* Try to find the resource locally
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param trace whether trace is enabled
* @return the URL if found
*/
- URL getResourceLocally(final String name, final String resourceName, final boolean trace)
+ URL getResourceLocally(final String name, final boolean trace)
{
if (trace)
log.trace(this + " get resource locally " + name);
@@ -333,11 +330,11 @@
if (result == null)
{
if (trace)
- log.trace(this + " resource not found locally " + name);
+ BaseClassLoader.log.trace(this + " resource not found locally " + name);
return null;
}
if (trace)
- log.trace(this + " got resource locally " + name);
+ BaseClassLoader.log.trace(this + " got resource locally " + name);
return result;
}
}, policy.getAccessControlContext());
@@ -357,25 +354,23 @@
* Try to find the resource locally
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param urls the urls to add to
* @throws IOException for any error
*/
- void getResourcesLocally(String name, String resourceName, Set<URL> urls) throws IOException
+ void getResourcesLocally(String name, Set<URL> urls) throws IOException
{
- getResourcesLocally(name, resourceName, urls, log.isTraceEnabled());
+ getResourcesLocally(name, urls, log.isTraceEnabled());
}
/**
* Try to find the resources locally
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param urls the urls to add to
* @param trace whether trace is enabled
* @throws IOException for any error
*/
- void getResourcesLocally(final String name, final String resourceName, final Set<URL> urls, boolean trace) throws IOException
+ void getResourcesLocally(final String name, final Set<URL> urls, boolean trace) throws IOException
{
if (trace)
log.trace(this + " get resources locally " + name);
@@ -486,7 +481,25 @@
unlock(trace);
}
}
+
+ public boolean isValid()
+ {
+ BaseClassLoaderPolicy basePolicy = policy;
+ return basePolicy.getClassLoader() != null;
+ }
+ public Class<?> getCachedClass(String name)
+ {
+ // TODO look in global and/or local cache
+ return null;
+ }
+
+ public URL getCachedResource(String name)
+ {
+ // TODO look in global and/or local cache
+ return null;
+ }
+
/**
* A long version of the classloader
*
@@ -502,7 +515,7 @@
builder.append('}');
return builder.toString();
}
-
+
/**
* Shutdown the classloader
*/
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -182,7 +182,7 @@
String path = ClassLoaderUtils.classNameToPath(name);
- Loader loader = findLoader(classLoader, path, name, allExports);
+ Loader loader = findLoader(classLoader, path, allExports);
if (loader != null)
{
Thread thread = Thread.currentThread();
@@ -217,12 +217,11 @@
* Find a loader for a class
*
* @param name the class resource name
- * @param resourceName the resource name in dot notation
* @return the loader
*/
- protected Loader findLoader(String name, String resourceName)
+ protected Loader findLoader(String name)
{
- return findLoader(null, name, resourceName, true);
+ return findLoader(null, name, true);
}
/**
@@ -230,21 +229,20 @@
*
* @param classLoader the classloader
* @param name the class resource name
- * @param resourceName the resource name in dot notation
* @param allExports whether we should look at all exports
* @return the loader
*/
- Loader findLoader(BaseClassLoader classLoader, String name, String resourceName, boolean allExports)
+ Loader findLoader(BaseClassLoader classLoader, String name, boolean allExports)
{
boolean trace = log.isTraceEnabled();
if (trace)
- log.trace(this + " findLoader " + resourceName + " classLoader=" + classLoader + " allExports=" + allExports);
+ log.trace(this + " findLoader " + name + " classLoader=" + classLoader + " allExports=" + allExports);
if (getClassLoaderSystem() == null)
throw new IllegalStateException("Domain is not registered with a classloader system: " + toLongString());
// Try the before attempt (e.g. from the parent)
- Loader loader = findBeforeLoader(name, resourceName);
+ Loader loader = findBeforeLoader(name);
if (loader != null)
return loader;
@@ -262,17 +260,17 @@
// Next we try the old "big ball of mud" model
if (allExports)
{
- loader = findLoaderInExports(classLoader, name, resourceName, trace);
+ loader = findLoaderInExports(classLoader, name, trace);
if (loader != null)
return loader;
}
else if (trace)
- log.trace(this + " not loading " + resourceName + " from all exports");
+ log.trace(this + " not loading " + name + " from all exports");
// Next we try the imports
if (info != null)
{
- loader = findLoaderInImports(info, name, resourceName, trace);
+ loader = findLoaderInImports(info, name, trace);
if (loader != null)
return loader;
}
@@ -281,13 +279,13 @@
if (classLoader != null)
{
if (trace)
- log.trace(this + " trying to load " + resourceName + " from requesting " + classLoader);
- if (classLoader.getResourceLocally(name, resourceName) != null)
+ log.trace(this + " trying to load " + name + " from requesting " + classLoader);
+ if (classLoader.getResourceLocally(name) != null)
return classLoader.getLoader();
}
// Try the after attempt (e.g. from the parent)
- return findAfterLoader(name, resourceName);
+ return findAfterLoader(name);
}
/**
@@ -295,11 +293,10 @@
*
* @param classLoader the classloader
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param allExports whether we should look at all exports
* @return the url
*/
- URL getResource(BaseClassLoader classLoader, String name, String resourceName, boolean allExports)
+ URL getResource(BaseClassLoader classLoader, String name, boolean allExports)
{
boolean trace = log.isTraceEnabled();
@@ -307,7 +304,7 @@
throw new IllegalStateException("Domain is not registered with a classloader system: " + toLongString());
// Try the before attempt
- URL result = beforeGetResource(name, resourceName);
+ URL result = beforeGetResource(name);
if (result != null)
return result;
@@ -325,7 +322,7 @@
// Next we try the old "big ball of mud" model
if (allExports)
{
- result = getResourceFromExports(classLoader, name, resourceName, trace);
+ result = getResourceFromExports(classLoader, name, trace);
if (result != null)
return result;
}
@@ -335,7 +332,7 @@
// Next we try the imports
if (info != null)
{
- result = getResourceFromImports(info, name, resourceName, trace);
+ result = getResourceFromImports(info, name, trace);
if (result != null)
return result;
}
@@ -345,7 +342,7 @@
{
if (trace)
log.trace(this + " trying to get resource " + name + " from requesting " + classLoader);
- result = classLoader.getResourceLocally(name, resourceName);
+ result = classLoader.getResourceLocally(name);
if (result != null)
{
if (trace)
@@ -355,7 +352,7 @@
}
// Try the after attempt
- result = afterGetResource(name, resourceName);
+ result = afterGetResource(name);
if (result != null)
return result;
@@ -368,12 +365,11 @@
*
* @param classLoader the classloader
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param allExports whether we should look at all exports
* @param urls the urls to add to
* @throws IOException for any error
*/
- void getResources(BaseClassLoader classLoader, String name, String resourceName, Set<URL> urls, boolean allExports) throws IOException
+ void getResources(BaseClassLoader classLoader, String name, Set<URL> urls, boolean allExports) throws IOException
{
boolean trace = log.isTraceEnabled();
@@ -381,7 +377,7 @@
throw new IllegalStateException("Domain is not registered with a classloader system: " + toLongString());
// Try the before attempt
- beforeGetResources(name, resourceName, urls);
+ beforeGetResources(name, urls);
// Work out the rules
ClassLoaderInformation info = null;
@@ -396,24 +392,24 @@
// Next we try the old "big ball of mud" model
if (allExports)
- getResourcesFromExports(classLoader, name, resourceName, urls, trace);
+ getResourcesFromExports(classLoader, name, urls, trace);
else if (trace)
log.trace(this + " not getting resource " + name + " from all exports");
// Next we try the imports
if (info != null)
- getResourcesFromImports(info, name, resourceName, urls, trace);
+ getResourcesFromImports(info, name, urls, trace);
// Finally use any requesting classloader
if (classLoader != null)
{
if (trace)
log.trace(this + " trying to get resources " + name + " from requesting " + classLoader);
- classLoader.getResourcesLocally(name, resourceName, urls);
+ classLoader.getResourcesLocally(name, urls);
}
// Try the after attempt
- afterGetResources(name, resourceName, urls);
+ afterGetResources(name, urls);
}
/**
@@ -421,17 +417,16 @@
*
* @param classLoader the classloader
* @param name the class resource name
- * @param resourceName the resource name in dot notation
* @param trace whether trace is enabled
* @return the loader
*/
- private Loader findLoaderInExports(BaseClassLoader classLoader, String name, String resourceName, boolean trace)
+ private Loader findLoaderInExports(BaseClassLoader classLoader, String name, boolean trace)
{
Loader loader = globalClassCache.get(name);
if (loader != null)
{
if (trace)
- log.trace(this + " found in global class cache " + resourceName);
+ log.trace(this + " found in global class cache " + name);
return loader;
}
@@ -439,16 +434,16 @@
if (globalClassBlackList.contains(name))
{
if (trace)
- log.trace(this + " class is black listed " + resourceName);
+ log.trace(this + " class is black listed " + name);
return null;
}
boolean canCache = true;
boolean canBlackList = true;
- String packageName = ClassLoaderUtils.getClassPackageName(resourceName);
+ String packageName = ClassLoaderUtils.getResourcePackageName(name);
List<ClassLoaderInformation> list = classLoadersByPackageName.get(packageName);
if (trace)
- log.trace(this + " trying to load " + resourceName + " from all exports of package " + packageName + " " + list);
+ log.trace(this + " trying to load " + name + " from all exports of package " + packageName + " " + list);
if (list != null && list.isEmpty() == false)
{
for (ClassLoaderInformation info : list)
@@ -462,7 +457,7 @@
if (loaderPolicy.isBlackListable() == false)
canBlackList = false;
- if (exported.getResource(name, resourceName) != null)
+ if (exported.getResource(name) != null)
{
if (canCache)
globalClassCache.put(name, exported);
@@ -482,11 +477,10 @@
*
* @param classLoader the classloader
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param trace whether trace is enabled
* @return the url
*/
- private URL getResourceFromExports(BaseClassLoader classLoader, String name, String resourceName, boolean trace)
+ private URL getResourceFromExports(BaseClassLoader classLoader, String name, boolean trace)
{
URL result = globalResourceCache.get(name);
if (result != null)
@@ -521,7 +515,7 @@
if (loaderPolicy.isBlackListable() == false)
canBlackList = false;
- result = loader.getResource(name, resourceName);
+ result = loader.getResource(name);
if (result != null)
{
if (canCache)
@@ -541,12 +535,11 @@
*
* @param classLoader the classloader
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param urls the urls to add to
* @param trace whether trace is enabled
* @throws IOException for any error
*/
- void getResourcesFromExports(BaseClassLoader classLoader, String name, String resourceName, Set<URL> urls, boolean trace) throws IOException
+ void getResourcesFromExports(BaseClassLoader classLoader, String name, Set<URL> urls, boolean trace) throws IOException
{
String packageName = ClassLoaderUtils.getResourcePackageName(name);
List<ClassLoaderInformation> list = classLoadersByPackageName.get(packageName);
@@ -557,7 +550,7 @@
for (ClassLoaderInformation info : list)
{
BaseDelegateLoader loader = info.getExported();
- loader.getResources(name, resourceName, urls);
+ loader.getResources(name, urls);
}
}
}
@@ -567,17 +560,16 @@
*
* @param info the classloader information
* @param name the class resource name
- * @param resourceName the resource name in dot notation
* @param trace whether trace is enabled
* @return the loader
*/
- Loader findLoaderInImports(ClassLoaderInformation info, String name, String resourceName, boolean trace)
+ Loader findLoaderInImports(ClassLoaderInformation info, String name, boolean trace)
{
List<? extends DelegateLoader> delegates = info.getDelegates();
if (delegates == null || delegates.isEmpty())
{
if (trace)
- log.trace(this + " not loading " + resourceName + " from imports it has no delegates");
+ log.trace(this + " not loading " + name + " from imports it has no delegates");
return null;
}
@@ -599,8 +591,8 @@
for (DelegateLoader delegate : delegates)
{
if (trace)
- log.trace(this + " trying to load " + resourceName + " from import " + delegate + " for " + info.getClassLoader());
- if (delegate.getResource(name, resourceName) != null)
+ log.trace(this + " trying to load " + name + " from import " + delegate + " for " + info.getClassLoader());
+ if (delegate.getResource(name) != null)
{
info.cacheLoader(name, delegate);
return delegate;
@@ -615,11 +607,10 @@
*
* @param info the classloader information
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param trace whether trace is enabled
* @return the url
*/
- private URL getResourceFromImports(ClassLoaderInformation info, String name, String resourceName, boolean trace)
+ private URL getResourceFromImports(ClassLoaderInformation info, String name, boolean trace)
{
List<? extends DelegateLoader> delegates = info.getDelegates();
if (delegates == null || delegates.isEmpty())
@@ -649,7 +640,7 @@
for (DelegateLoader delegate : delegates)
{
- URL result = delegate.getResource(name, resourceName);
+ URL result = delegate.getResource(name);
if (result != null)
{
info.cacheResource(name, result);
@@ -665,12 +656,11 @@
*
* @param info the classloader info
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param urls the urls to add to
* @param trace whether trace is enabled
* @throws IOException for any error
*/
- void getResourcesFromImports(ClassLoaderInformation info, String name, String resourceName, Set<URL> urls, boolean trace) throws IOException
+ void getResourcesFromImports(ClassLoaderInformation info, String name, Set<URL> urls, boolean trace) throws IOException
{
List<? extends DelegateLoader> delegates = info.getDelegates();
if (delegates == null || delegates.isEmpty())
@@ -682,64 +672,58 @@
if (trace)
log.trace(this + " trying to get resources " + name + " from imports " + delegates + " for " + info.getClassLoader());
for (DelegateLoader delegate : delegates)
- delegate.getResources(name, resourceName, urls);
+ delegate.getResources(name, urls);
}
/**
* Invoked before classloading is attempted to allow a preload attempt, e.g. from the parent
*
* @param name the class resource name
- * @param resourceName the resource name in dot notation
* @return the loader if found or null otherwise
*/
- protected abstract Loader findBeforeLoader(String name, String resourceName);
+ protected abstract Loader findBeforeLoader(String name);
/**
* Invoked after classloading is attempted to allow a postload attempt, e.g. from the parent
*
* @param name the class resource name
- * @param resourceName the resource name in dot notation
* @return the loader if found or null otherwise
*/
- protected abstract Loader findAfterLoader(String name, String resourceName);
+ protected abstract Loader findAfterLoader(String name);
/**
* Invoked before getResources is attempted to allow a preload attempt, e.g. from the parent
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param urls the urls to add to
* @throws IOException for any error
*/
- protected abstract void beforeGetResources(String name, String resourceName, Set<URL> urls) throws IOException;
+ protected abstract void beforeGetResources(String name, Set<URL> urls) throws IOException;
/**
* Invoked after getResources is attempted to allow a postload attempt, e.g. from the parent
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param urls the urls to add to
* @throws IOException for any error
*/
- protected abstract void afterGetResources(String name, String resourceName, Set<URL> urls) throws IOException;
+ protected abstract void afterGetResources(String name, Set<URL> urls) throws IOException;
/**
* Invoked before getResource is attempted to allow a preload attempt, e.g. from the parent
*
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @return the url if found or null otherwise
*/
- protected abstract URL beforeGetResource(String name, String resourceName);
+ protected abstract URL beforeGetResource(String name);
/**
* Invoked after getResource is attempted to allow a postload attempt, e.g. from the parent
*
* @param name the class name
- * @param resourceName the name of the resource in dot notation
* @return the url if found or null otherwise
*/
- protected abstract URL afterGetResource(String name, String resourceName);
+ protected abstract URL afterGetResource(String name);
public Class<?> loadClass(String name)
{
@@ -766,9 +750,9 @@
return loadClass(classLoader, name, false);
}
- public URL getResource(String name, String resourceName)
+ public URL getResource(String name)
{
- return getResource(null, name, resourceName, true);
+ return getResource(null, name, true);
}
/**
@@ -776,17 +760,16 @@
*
* @param classLoader the classloader
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @return the url
*/
- URL getResource(BaseClassLoader classLoader, String name, String resourceName)
+ URL getResource(BaseClassLoader classLoader, String name)
{
- return getResource(classLoader, name, resourceName, false);
+ return getResource(classLoader, name, false);
}
- public void getResources(String name, String resourceName, Set<URL> urls) throws IOException
+ public void getResources(String name, Set<URL> urls) throws IOException
{
- getResources(null, name, resourceName, urls, true);
+ getResources(null, name, urls, true);
}
/**
@@ -794,13 +777,12 @@
*
* @param classLoader the classloader
* @param name the resource name
- * @param resourceName the name of the resource in dot notation
* @param urls the urls to add to
* @throws IOException for any error
*/
- void getResources(BaseClassLoader classLoader, String name, String resourceName, Set<URL> urls) throws IOException
+ void getResources(BaseClassLoader classLoader, String name, Set<URL> urls) throws IOException
{
- getResources(classLoader, name, resourceName, urls, false);
+ getResources(classLoader, name, urls, false);
}
/**
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseDelegateLoader.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -75,7 +75,7 @@
return classLoader.loadClassLocally(className);
}
- public URL getResource(String name, String resourceName)
+ public URL getResource(String name)
{
BaseClassLoader classLoader;
try
@@ -87,10 +87,10 @@
log.warn("Not loading from policy that has no classLoader: " + toLongString());
return null;
}
- return classLoader.getResourceLocally(name, resourceName);
+ return classLoader.getResourceLocally(name);
}
- public void getResources(String name, String resourceName, Set<URL> urls) throws IOException
+ public void getResources(String name, Set<URL> urls) throws IOException
{
BaseClassLoader classLoader;
try
@@ -102,7 +102,7 @@
log.warn("Not loading from policy that has no classLoader: " + toLongString());
return;
}
- classLoader.getResourcesLocally(name, resourceName, urls);
+ classLoader.getResourcesLocally(name, urls);
}
/**
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoaderManager.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoaderManager.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoaderManager.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -42,7 +42,7 @@
public class ClassLoaderManager
{
/** The log */
- private static Logger log = Logger.getLogger(ClassLoaderManager.class);
+ private static Logger log = Logger.getLogger("org.jboss.detailed.classloader.ClassLoaderManager");
/** The threads owning the classloader lock */
private static Map<BaseClassLoader, Thread> loadClassThreads = new HashMap<BaseClassLoader, Thread>();
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoadingTask.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoadingTask.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/ClassLoadingTask.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -42,7 +42,7 @@
class ClassLoadingTask
{
/** The log */
- protected static Logger log = Logger.getLogger(ClassLoadingTask.class);
+ protected static Logger log = Logger.getLogger("org.jboss.detailed.classloader.ClassLoadinTask");
/**
* TaskState.
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/ClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/ClassFilter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/ClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -23,6 +23,7 @@
import org.jboss.classloader.plugins.filter.EverythingClassFilter;
import org.jboss.classloader.plugins.filter.JavaOnlyClassFilter;
+import org.jboss.classloader.plugins.filter.NothingButJavaClassFilter;
import org.jboss.classloader.plugins.filter.NothingClassFilter;
/**
@@ -39,6 +40,9 @@
/** Match nothing */
ClassFilter NOTHING = NothingClassFilter.INSTANCE;
+ /** Match nothing */
+ ClassFilter NOTHING_BUT_JAVA = NothingButJavaClassFilter.INSTANCE;
+
/** Java Only */
ClassFilter JAVA_ONLY = JavaOnlyClassFilter.INSTANCE;
@@ -48,5 +52,13 @@
* @param className the class name
* @return true when it matches the filter
*/
- boolean matches(String className);
+ boolean matchesClassName(String className);
+
+ /**
+ * Whether the resource name matches the filter
+ *
+ * @param resourcePath the resource path
+ * @return true when it matches the filter
+ */
+ boolean matchesResourcePath(String resourcePath);
}
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/FilteredDelegateLoader.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -83,39 +83,39 @@
public Class<?> loadClass(String className)
{
boolean trace = log.isTraceEnabled();
- if (filter.matches(className))
+ if (filter.matchesClassName(className))
{
if (trace)
- log.trace(this + " " + className + " matches filter=" + filter);
+ log.trace(this + " " + className + " matches class filter=" + filter);
return super.loadClass(className);
}
if (trace)
- log.trace(this + " " + className + " does NOT match filter=" + filter);
+ log.trace(this + " " + className + " does NOT match class filter=" + filter);
return null;
}
- public URL getResource(String name, String resourceName)
+ public URL getResource(String name)
{
boolean trace = log.isTraceEnabled();
- if (filter.matches(resourceName))
+ if (filter.matchesResourcePath(name))
{
if (trace)
- log.trace(this + " " + name + " matches filter=" + filter);
- return super.getResource(name, resourceName);
+ log.trace(this + " " + name + " matches resource filter=" + filter);
+ return super.getResource(name);
}
if (trace)
- log.trace(this + " " + name + " does NOT match filter=" + filter);
+ log.trace(this + " " + name + " does NOT match resource filter=" + filter);
return null;
}
- public void getResources(String name, String resourceName, Set<URL> urls) throws IOException
+ public void getResources(String name, Set<URL> urls) throws IOException
{
boolean trace = log.isTraceEnabled();
- if (filter.matches(resourceName))
+ if (filter.matchesResourcePath(name))
{
if (trace)
log.trace(this + " " + name + " matches filter=" + filter);
- super.getResources(name, resourceName, urls);
+ super.getResources(name, urls);
}
if (trace)
log.trace(this + " " + name + " does NOT match filter=" + filter);
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/PackageClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/PackageClassFilter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/filter/PackageClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -37,12 +37,12 @@
private String[] packageNames;
/**
- * Convert package names to patterns
+ * Convert package names to class patterns
*
* @param packageNames the package names
* @return the patterns
*/
- private static String[] convertPackageNamesToPatterns(String[] packageNames)
+ private static String[] convertPackageNamesToClassPatterns(String[] packageNames)
{
if (packageNames == null)
throw new IllegalArgumentException("Null package names");
@@ -64,6 +64,33 @@
}
/**
+ * Convert package names to resource patterns
+ *
+ * @param packageNames the package names
+ * @return the patterns
+ */
+ private static String[] convertPackageNamesToResourcePatterns(String[] packageNames)
+ {
+ if (packageNames == null)
+ throw new IllegalArgumentException("Null package names");
+
+ String[] patterns = new String[packageNames.length];
+ for (int i = 0; i < packageNames.length; ++i)
+ {
+ if (packageNames[i] == null)
+ throw new IllegalArgumentException("Null package name in " + Arrays.asList(packageNames));
+
+ if (packageNames[i].length() == 0)
+ // Base package - it is a match if there is no / in the path
+ patterns[i] = "[^/]*";
+ else
+ // Replace the dots with slashs and match non slashes after that
+ patterns[i] = packageNames[i].replace(".", "/") + "/[^/]+";
+ }
+ return patterns;
+ }
+
+ /**
* Create a new package class filter
*
* @param packageNames the package names
@@ -83,7 +110,7 @@
*/
public PackageClassFilter(String[] packageNames)
{
- super(convertPackageNamesToPatterns(packageNames));
+ super(convertPackageNamesToClassPatterns(packageNames), convertPackageNamesToResourcePatterns(packageNames));
this.packageNames = packageNames;
}
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderPolicy.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderPolicy.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/test/support/MockClassLoaderPolicy.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -92,19 +92,19 @@
*/
public MockClassLoaderPolicy(String name)
{
- this(name, "org\\.jboss\\..*");
+ this(name, new String[] { "org\\.jboss\\..+" }, new String[] { "org/jboss/.+" });
}
/**
- * Create a new MockClassLoaderPolicy filtering the given patterns
+ * Create a new MockClassLoaderPolicy filtering org.jboss.* classes
*
- * @param name the logical name of the policy
- * @param nonJDKPatterns the patterns to filter
- * @throws IllegalArgumentException for null patterns
+ * @param name the name
+ * @param classPatterns the class patterns
+ * @param resourcePatterns the resourcePatterns
*/
- public MockClassLoaderPolicy(String name, String... nonJDKPatterns)
+ public MockClassLoaderPolicy(String name, String[] classPatterns, String[] resourcePatterns)
{
- this(name, new PatternClassFilter(nonJDKPatterns));
+ this(name, new PatternClassFilter(classPatterns, resourcePatterns));
}
/**
@@ -398,7 +398,7 @@
@Override
protected ClassLoader isJDKRequest(String name)
{
- if (nonJDKFilter.matches(name))
+ if (nonJDKFilter.matchesClassName(name))
return null;
return super.isJDKRequest(name);
}
Added: projects/microcontainer/trunk/classloader/src/resources/tests/a/com/acme/p1/testResource.xml
===================================================================
--- projects/microcontainer/trunk/classloader/src/resources/tests/a/com/acme/p1/testResource.xml (rev 0)
+++ projects/microcontainer/trunk/classloader/src/resources/tests/a/com/acme/p1/testResource.xml 2007-07-13 15:29:52 UTC (rev 64041)
@@ -0,0 +1 @@
+a/com/acme/p1/testResource.xml
\ No newline at end of file
Added: projects/microcontainer/trunk/classloader/src/resources/tests/a/testResource.xml
===================================================================
--- projects/microcontainer/trunk/classloader/src/resources/tests/a/testResource.xml (rev 0)
+++ projects/microcontainer/trunk/classloader/src/resources/tests/a/testResource.xml 2007-07-13 15:29:52 UTC (rev 64041)
@@ -0,0 +1 @@
+a/com/acme/p1/testResource.xml
\ No newline at end of file
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/AbstractClassLoaderTest.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -255,21 +255,37 @@
}
}
- protected void assertFilterMatches(String test, ClassFilter filter)
+ protected void assertFilterMatchesClassName(String test, ClassFilter filter)
{
getLog().debug("Checking " + test + " expect it to match filter=" + filter);
- boolean result = filter.matches(test);
+ boolean result = filter.matchesClassName(test);
getLog().debug("Checked " + test + " result was " + result + " for filter=" + filter);
assertTrue("Expected " + test + " to match " + filter, result);
}
- protected void assertFilterNoMatch(String test, ClassFilter filter)
+ protected void assertFilterNoMatchClassName(String test, ClassFilter filter)
{
getLog().debug("Checking " + test + " expect it NOT to match filter=" + filter);
- boolean result = filter.matches(test);
+ boolean result = filter.matchesClassName(test);
getLog().debug("Checked " + test + " result was " + result + " for filter=" + filter);
assertFalse("Expected " + test + " NOT to match " + filter, result);
}
+
+ protected void assertFilterMatchesResourcePath(String test, ClassFilter filter)
+ {
+ getLog().debug("Checking " + test + " expect it to match filter=" + filter);
+ boolean result = filter.matchesResourcePath(test);
+ getLog().debug("Checked " + test + " result was " + result + " for filter=" + filter);
+ assertTrue("Expected " + test + " to match " + filter, result);
+ }
+
+ protected void assertFilterNoMatchResourcePath(String test, ClassFilter filter)
+ {
+ getLog().debug("Checking " + test + " expect it NOT to match filter=" + filter);
+ boolean result = filter.matchesResourcePath(test);
+ getLog().debug("Checked " + test + " result was " + result + " for filter=" + filter);
+ assertFalse("Expected " + test + " NOT to match " + filter, result);
+ }
protected void configureLogging()
{
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/MatchClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/MatchClassFilter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/MatchClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -21,6 +21,7 @@
*/
package org.jboss.test.classloader.domain.support;
+import org.jboss.classloader.plugins.ClassLoaderUtils;
import org.jboss.classloader.spi.filter.ClassFilter;
/**
@@ -40,10 +41,17 @@
this.className = clazz.getName();
}
- public boolean matches(String className)
+ public boolean matchesClassName(String className)
{
if (this.className.equals(className))
filtered = true;
return true;
}
+
+ public boolean matchesResourcePath(String resourcePath)
+ {
+ if (ClassLoaderUtils.classNameToPath(this.className).equals(resourcePath))
+ filtered = true;
+ return true;
+ }
}
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/MockLoader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/MockLoader.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/MockLoader.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -40,13 +40,13 @@
public Set<String> getResources = new HashSet<String>();
public Set<String> loadClass = new HashSet<String>();
- public URL getResource(String name, String resourceName)
+ public URL getResource(String name)
{
getResource.add(name);
return getClass().getClassLoader().getResource(name);
}
- public void getResources(String name, String resourceName, Set<URL> urls) throws IOException
+ public void getResources(String name, Set<URL> urls) throws IOException
{
// Nothing
}
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/NoMatchClassFilter.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/NoMatchClassFilter.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/support/NoMatchClassFilter.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -21,6 +21,7 @@
*/
package org.jboss.test.classloader.domain.support;
+import org.jboss.classloader.plugins.ClassLoaderUtils;
import org.jboss.classloader.spi.filter.ClassFilter;
/**
@@ -40,7 +41,7 @@
this.className = clazz.getName();
}
- public boolean matches(String className)
+ public boolean matchesClassName(String className)
{
if (this.className.equals(className))
{
@@ -49,4 +50,14 @@
}
return true;
}
+
+ public boolean matchesResourcePath(String resourcePath)
+ {
+ if (ClassLoaderUtils.classNameToPath(this.className).equals(resourcePath))
+ {
+ filtered = true;
+ return false;
+ }
+ return true;
+ }
}
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/test/CustomParentLoaderUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/test/CustomParentLoaderUnitTestCase.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/domain/test/CustomParentLoaderUnitTestCase.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -140,10 +140,10 @@
assertEmpty(loader.getResources);
return;
}
- Set<String> resourceNames = new HashSet<String>();
+ Set<String> resourcePaths = new HashSet<String>();
for (Class clazz : classes)
- resourceNames.add(ClassLoaderUtils.classNameToPath(clazz.getName()));
- assertEquals(resourceNames, loader.getResource);
+ resourcePaths.add(ClassLoaderUtils.classNameToPath(clazz.getName()));
+ assertEquals(resourcePaths, loader.getResource);
}
protected void checkLoadClass(MockLoader loader, Class... classes)
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/FilterUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/FilterUnitTestCase.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/FilterUnitTestCase.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -47,38 +47,38 @@
public void testEverything() throws Exception
{
ClassFilter filter = ClassFilter.EVERYTHING;
- assertFilterMatches("gibberish", filter);
- assertFilterMatches("", filter);
- assertFilterMatches(null, filter);
+ assertFilterMatchesClassName("gibberish", filter);
+ assertFilterMatchesClassName("", filter);
+ assertFilterMatchesClassName(null, filter);
}
public void testNothing() throws Exception
{
ClassFilter filter = ClassFilter.NOTHING;
- assertFilterNoMatch("gibberish", filter);
- assertFilterNoMatch("", filter);
- assertFilterNoMatch(null, filter);
+ assertFilterNoMatchClassName("gibberish", filter);
+ assertFilterNoMatchClassName("", filter);
+ assertFilterNoMatchClassName(null, filter);
}
public void testJavaOnly() throws Exception
{
ClassFilter filter = ClassFilter.JAVA_ONLY;
- assertFilterMatches("java.x", filter);
- assertFilterMatches("java.lang.Object", filter);
- assertFilterMatches("java.lang.ref.Method", filter);
- assertFilterMatches("java.util.Collection", filter);
- assertFilterMatches("javax.x", filter);
- assertFilterMatches("javax.naming.Context", filter);
- assertFilterNoMatch("java.", filter);
- assertFilterNoMatch("java", filter);
- assertFilterNoMatch("javaa.", filter);
- assertFilterNoMatch("javaa.whatever", filter);
- assertFilterNoMatch("javax", filter);
- assertFilterNoMatch("javax.", filter);
- assertFilterNoMatch("javaxa.", filter);
- assertFilterNoMatch("javaxa.whatever", filter);
- assertFilterNoMatch("gibberish", filter);
- assertFilterNoMatch("", filter);
- assertFilterNoMatch(null, filter);
+ assertFilterMatchesClassName("java.x", filter);
+ assertFilterMatchesClassName("java.lang.Object", filter);
+ assertFilterMatchesClassName("java.lang.ref.Method", filter);
+ assertFilterMatchesClassName("java.util.Collection", filter);
+ assertFilterMatchesClassName("javax.x", filter);
+ assertFilterMatchesClassName("javax.naming.Context", filter);
+ assertFilterNoMatchClassName("java.", filter);
+ assertFilterNoMatchClassName("java", filter);
+ assertFilterNoMatchClassName("javaa.", filter);
+ assertFilterNoMatchClassName("javaa.whatever", filter);
+ assertFilterNoMatchClassName("javax", filter);
+ assertFilterNoMatchClassName("javax.", filter);
+ assertFilterNoMatchClassName("javaxa.", filter);
+ assertFilterNoMatchClassName("javaxa.whatever", filter);
+ assertFilterNoMatchClassName("gibberish", filter);
+ assertFilterNoMatchClassName("", filter);
+ assertFilterNoMatchClassName(null, filter);
}
}
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/PackageFilterUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/PackageFilterUnitTestCase.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/filter/test/PackageFilterUnitTestCase.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -48,38 +48,40 @@
public void testNothing() throws Exception
{
ClassFilter filter = PackageClassFilter.createPackageClassFilter();
- assertFilterNoMatch("gibberish", filter);
- assertFilterNoMatch("", filter);
- assertFilterNoMatch(null, filter);
+ assertFilterNoMatchClassName("gibberish", filter);
+ assertFilterNoMatchClassName("", filter);
+ assertFilterNoMatchClassName(null, filter);
+ assertFilterNoMatchResourcePath("x.xml", filter);
}
public void testJavaLang() throws Exception
{
ClassFilter filter = PackageClassFilter.createPackageClassFilter("java.lang");
- assertFilterMatches("java.lang.Object", filter);
- assertFilterMatches("java.lang.X", filter);
- assertFilterNoMatch("java.lang", filter);
- assertFilterNoMatch("java.lang.", filter);
- assertFilterNoMatch("java.lang.reflect.Method", filter);
- assertFilterNoMatch("gibberish", filter);
- assertFilterNoMatch("", filter);
- assertFilterNoMatch(null, filter);
+ assertFilterMatchesClassName("java.lang.Object", filter);
+ assertFilterMatchesClassName("java.lang.X", filter);
+ assertFilterNoMatchClassName("java.lang", filter);
+ assertFilterNoMatchClassName("java.lang.", filter);
+ assertFilterNoMatchClassName("java.lang.reflect.Method", filter);
+ assertFilterNoMatchClassName("gibberish", filter);
+ assertFilterNoMatchClassName("", filter);
+ assertFilterNoMatchClassName(null, filter);
+ assertFilterMatchesResourcePath("java/lang/something.xml", filter);
}
public void testJavaLangAndJavaLangReflect() throws Exception
{
ClassFilter filter = PackageClassFilter.createPackageClassFilter("java.lang", "java.lang.reflect");
- assertFilterMatches("java.lang.Object", filter);
- assertFilterMatches("java.lang.X", filter);
- assertFilterMatches("java.lang.reflect.Method", filter);
- assertFilterMatches("java.lang.reflect.X", filter);
- assertFilterMatches("java.lang.reflect", filter);
- assertFilterNoMatch("java.lang", filter);
- assertFilterNoMatch("java.lang.", filter);
- assertFilterNoMatch("java.lang.reflect.", filter);
- assertFilterNoMatch("java.lang.reflect.subpackage.Something", filter);
- assertFilterNoMatch("gibberish", filter);
- assertFilterNoMatch("", filter);
- assertFilterNoMatch(null, filter);
+ assertFilterMatchesClassName("java.lang.Object", filter);
+ assertFilterMatchesClassName("java.lang.X", filter);
+ assertFilterMatchesClassName("java.lang.reflect.Method", filter);
+ assertFilterMatchesClassName("java.lang.reflect.X", filter);
+ assertFilterMatchesClassName("java.lang.reflect", filter);
+ assertFilterNoMatchClassName("java.lang", filter);
+ assertFilterNoMatchClassName("java.lang.", filter);
+ assertFilterNoMatchClassName("java.lang.reflect.", filter);
+ assertFilterNoMatchClassName("java.lang.reflect.subpackage.Something", filter);
+ assertFilterNoMatchClassName("gibberish", filter);
+ assertFilterNoMatchClassName("", filter);
+ assertFilterNoMatchClassName(null, filter);
}
}
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/jmx/test/JMXUnitTestCase.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -29,8 +29,8 @@
import junit.framework.Test;
import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloader.spi.jmx.JMXClassLoader;
import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.classloading.spi.RealClassLoader;
import org.jboss.test.classloader.AbstractClassLoaderTest;
import org.jboss.test.classloader.jmx.support.Simple;
@@ -58,7 +58,7 @@
MockClassLoaderPolicy policy = createMockClassLoaderPolicy("simple");
policy.setPathsAndPackageNames(Simple.class);
- JMXClassLoader cl = (JMXClassLoader) system.registerClassLoaderPolicy(policy);
+ RealClassLoader cl = (RealClassLoader) system.registerClassLoaderPolicy(policy);
MBeanServer server = MBeanServerFactory.newMBeanServer();
ObjectName clName = cl.getObjectName();
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/policy/support/TestDelegateLoader.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/policy/support/TestDelegateLoader.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/policy/support/TestDelegateLoader.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -49,7 +49,8 @@
return null;
}
- public URL getResource(String name, String resourceName)
+ @Override
+ public URL getResource(String name)
{
getResourceInvoked = name;
return TestClassLoaderPolicy.codeSourceURL;
Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/resources/tests/ResourceUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/resources/tests/ResourceUnitTestCase.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/resources/tests/ResourceUnitTestCase.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -109,6 +109,42 @@
assertGetResource("a/", "testResource", classLoader);
}
+ public void testGetResourceWithDotFromDelegate() throws Exception
+ {
+ enableTrace("org.jboss.classloader");
+ ClassLoaderSystem system = createClassLoaderSystem();
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
+ policy.setPrefix("a/");
+ policy.setPath("com/acme/p1");
+ policy.setPackageNames(new String[] { "com.acme.p1" } );
+
+ MockClassLoaderPolicy policy2 = createMockClassLoaderPolicy();
+ policy2.setDelegates(Collections.singletonList(new FilteredDelegateLoader(policy)));
+
+ system.registerClassLoaderPolicy(policy);
+ ClassLoader classLoader = system.registerClassLoaderPolicy(policy2);
+
+ assertGetResource("a/", "com/acme/p1/testResource.xml", classLoader);
+ }
+
+ public void testGetResourceWithDotFromDelegatNotFound() throws Exception
+ {
+ enableTrace("org.jboss.classloader");
+ ClassLoaderSystem system = createClassLoaderSystem();
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
+ policy.setPrefix("a/");
+ policy.setPath("com/acme/p1");
+ policy.setPackageNames(new String[] { "com.acme.p1" } );
+
+ MockClassLoaderPolicy policy2 = createMockClassLoaderPolicy();
+ policy2.setDelegates(Collections.singletonList(new FilteredDelegateLoader(policy)));
+
+ system.registerClassLoaderPolicy(policy);
+ ClassLoader classLoader = system.registerClassLoaderPolicy(policy2);
+
+ assertGetResourceFail("testResource.xml", classLoader);
+ }
+
public void testGetResourceUsingAllImports() throws Exception
{
ClassLoaderSystem system = createClassLoaderSystem();
@@ -321,6 +357,40 @@
assertGetResources("testResource", classLoader, "a/");
}
+ public void testGetResourcesWithDotFromDelegate() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystem();
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
+ policy.setPrefix("a/");
+ policy.setPath("com/acme/p1");
+ policy.setPackageNames(new String[] { "com.acme.p1" } );
+
+ MockClassLoaderPolicy policy2 = createMockClassLoaderPolicy();
+ policy2.setDelegates(Collections.singletonList(new FilteredDelegateLoader(policy)));
+
+ system.registerClassLoaderPolicy(policy);
+ ClassLoader classLoader = system.registerClassLoaderPolicy(policy2);
+
+ assertGetResources("com/acme/p1/testResource.xml", classLoader, "a/");
+ }
+
+ public void testGetResourcesWithDotFromDelegateNotFound() throws Exception
+ {
+ ClassLoaderSystem system = createClassLoaderSystem();
+ MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
+ policy.setPrefix("a/");
+ policy.setPath("com/acme/p1");
+ policy.setPackageNames(new String[] { "com.acme.p1" } );
+
+ MockClassLoaderPolicy policy2 = createMockClassLoaderPolicy();
+ policy2.setDelegates(Collections.singletonList(new FilteredDelegateLoader(policy)));
+
+ system.registerClassLoaderPolicy(policy);
+ ClassLoader classLoader = system.registerClassLoaderPolicy(policy2);
+
+ assertGetResourcesFail("testResource.xml", classLoader);
+ }
+
public void testGetResourcesUsingAllImports() throws Exception
{
ClassLoaderSystem system = createClassLoaderSystem();
@@ -428,10 +498,10 @@
assertGetResources("testResource", classLoader, "a/", "b/");
}
- protected URL assertGetResource(String prefix, String resourceName, ClassLoader classLoader) throws Exception
+ protected URL assertGetResource(String prefix, String resourcePath, ClassLoader classLoader) throws Exception
{
- URL url = classLoader.getResource(resourceName);
- assertNotNull("Should have got resource prefix=" + prefix + " resourceName " + resourceName + " from " + classLoader, url);
+ URL url = classLoader.getResource(resourcePath);
+ assertNotNull("Should have got resource prefix=" + prefix + " resourcePath " + resourcePath + " from " + classLoader, url);
SecurityManager sm = suspendSecurity();
try
{
@@ -448,7 +518,7 @@
read = reader.read(chars, read, 1000 - read);
}
String string = new String(chars, 0, count);
- assertEquals("Should have read the correct resource", prefix + resourceName, string);
+ assertEquals("Should have read the correct resource", prefix + resourcePath, string);
}
finally
{
@@ -462,15 +532,15 @@
return url;
}
- protected void assertGetResourceFail(String resourceName, ClassLoader classLoader) throws Exception
+ protected void assertGetResourceFail(String resourcePath, ClassLoader classLoader) throws Exception
{
- URL url = classLoader.getResource(resourceName);
- assertNull("Should NOT have got resource " + resourceName + " from " + classLoader, url);
+ URL url = classLoader.getResource(resourcePath);
+ assertNull("Should NOT have got resource " + resourcePath + " from " + classLoader, url);
}
- protected Enumeration<URL> assertGetResources(String resourceName, ClassLoader classLoader, String... prefixes) throws Exception
+ protected Enumeration<URL> assertGetResources(String resourcePath, ClassLoader classLoader, String... prefixes) throws Exception
{
- Enumeration<URL> urls = classLoader.getResources(resourceName);
+ Enumeration<URL> urls = classLoader.getResources(resourcePath);
HashSet<String> foundResources = new HashSet<String>();
SecurityManager sm = suspendSecurity();
@@ -507,22 +577,22 @@
HashSet<String> expectedResources = new HashSet<String>();
for (String prefix : prefixes)
- expectedResources.add(prefix + resourceName);
+ expectedResources.add(prefix + resourcePath);
assertEquals(expectedResources, foundResources);
return urls;
}
- protected void assertGetResourcesFail(String resourceName, ClassLoader classLoader) throws Exception
+ protected void assertGetResourcesFail(String resourcePath, ClassLoader classLoader) throws Exception
{
- Enumeration<URL> urls = classLoader.getResources(resourceName);
+ Enumeration<URL> urls = classLoader.getResources(resourcePath);
if (urls.hasMoreElements())
{
HashSet<URL> found = new HashSet<URL>();
while (urls.hasMoreElements())
found.add(urls.nextElement());
- fail("Should NOT have got resources " + resourceName + " from " + classLoader + " found " + urls);
+ fail("Should NOT have got resources " + resourcePath + " from " + classLoader + " found " + urls);
}
}
}
Modified: projects/microcontainer/trunk/deployers-impl/.classpath
===================================================================
--- projects/microcontainer/trunk/deployers-impl/.classpath 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-impl/.classpath 2007-07-13 15:29:52 UTC (rev 64041)
@@ -36,6 +36,7 @@
<classpathentry kind="src" path="/jboss-dependency"/>
<classpathentry kind="src" path="/jboss-deployers-structure-spi"/>
<classpathentry kind="var" path="M2_REPO/jboss/jboss-logging-spi/2.0.3.GA/jboss-logging-spi-2.0.3.GA.jar" sourcepath="M2_REPO/jboss/jboss-logging-spi/2.0.3.GA/jboss-logging-spi-2.0.3.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-classloading-spi/5.0.0-SNAPSHOT/jboss-classloading-spi-5.0.0-SNAPSHOT.jar" sourcepath="M2_REPO/jboss/jboss-classLoading-spi-5.0.0-SNAPSHOT/5.0.0-SNAPSHOT/jboss-classloading-spi-5.0.0-SNAPSHOT-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/jboss/jbossxb/2.0.0.CR3/jbossxb-2.0.0.CR3.jar" sourcepath="M2_REPO/jboss/jbossxb/2.0.0.CR3/jbossxb-2.0.0.CR3-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/javassist/3.6-beta/javassist-3.6-beta.jar" sourcepath="M2_REPO/org/jboss/javassist/3.6-beta/javassist-3.6-beta-sources.jar"/>
<classpathentry kind="src" path="/jboss-deployers-core-spi"/>
Modified: projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/AbstractTopLevelClassLoaderSystemDeployer.java
===================================================================
--- projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/AbstractTopLevelClassLoaderSystemDeployer.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/AbstractTopLevelClassLoaderSystemDeployer.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -21,10 +21,14 @@
*/
package org.jboss.deployers.plugins.classloading;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderPolicy;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloading.spi.RealClassLoader;
import org.jboss.deployers.spi.deployer.helpers.AbstractTopLevelClassLoaderDeployer;
import org.jboss.deployers.structure.spi.DeploymentContext;
@@ -42,6 +46,9 @@
/** The classloader system */
private ClassLoaderSystem system;
+ /** The MBeanServer */
+ private MBeanServer mbeanServer;
+
/**
* Get the classLoading.
*
@@ -82,6 +89,26 @@
this.system = system;
}
+ /**
+ * Get the mbeanServer.
+ *
+ * @return the mbeanServer.
+ */
+ public MBeanServer getMbeanServer()
+ {
+ return mbeanServer;
+ }
+
+ /**
+ * Set the mbeanServer.
+ *
+ * @param mbeanServer the mbeanServer.
+ */
+ public void setMbeanServer(MBeanServer mbeanServer)
+ {
+ this.mbeanServer = mbeanServer;
+ }
+
@Override
protected ClassLoader createTopLevelClassLoader(DeploymentContext context) throws Exception
{
@@ -113,24 +140,90 @@
domain = system.createAndRegisterDomain(domainName, parentPolicy, parent);
}
}
- return system.registerClassLoaderPolicy(domain, policy);
+ ClassLoader classLoader = system.registerClassLoaderPolicy(domain, policy);
+ try
+ {
+ registerClassLoaderWithMBeanServer(classLoader);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Unable to register classloader with mbeanserver: " + classLoader, t);
+ }
+ return classLoader;
}
@Override
protected void removeTopLevelClassLoader(DeploymentContext context) throws Exception
{
- // Remove the classloader
ClassLoader classLoader = context.getClassLoader();
- system.unregisterClassLoader(classLoader);
+ try
+ {
+ unregisterClassLoaderFromMBeanServer(classLoader);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Unable to unregister classloader from mbeanserver: " + classLoader, t);
+ }
+
+ try
+ {
+ // Remove the classloader
+ system.unregisterClassLoader(classLoader);
+ }
+ finally
+ {
+ // Reset the module to avoid possible memory leaks
+ Module module = context.getTransientAttachments().getAttachment(Module.class);
+ if (module == null)
+ throw new IllegalStateException("Deployment Context has no module: " + context);
+ module.reset();
+ }
+ }
- // Reset the module to avoid possible memory leaks
- Module module = context.getTransientAttachments().getAttachment(Module.class);
- if (module == null)
- throw new IllegalStateException("Deployment Context has no module: " + context);
- module.reset();
+ /**
+ * Register the classloader with the mbeanserver
+ *
+ * @param classLoader the classloader
+ * @throws Exception for any error
+ */
+ protected void registerClassLoaderWithMBeanServer(ClassLoader classLoader) throws Exception
+ {
+ if (mbeanServer == null)
+ return;
+
+ if (classLoader instanceof RealClassLoader == false)
+ return;
+
+ RealClassLoader jmxClassLoader = (RealClassLoader) classLoader;
+ ObjectName name = jmxClassLoader.getObjectName();
+ if (mbeanServer.isRegistered(name))
+ return;
+
+ mbeanServer.registerMBean(classLoader, name);
}
/**
+ * Unregister the classloader from the mbeanserver
+ *
+ * @param classLoader the classloader
+ * @throws Exception for any error
+ */
+ protected void unregisterClassLoaderFromMBeanServer(ClassLoader classLoader) throws Exception
+ {
+ if (mbeanServer == null)
+ return;
+
+ if (classLoader instanceof RealClassLoader == false)
+ return;
+
+ RealClassLoader jmxClassLoader = (RealClassLoader) classLoader;
+ ObjectName name = jmxClassLoader.getObjectName();
+ if (mbeanServer.isRegistered(name) == false)
+ return;
+ mbeanServer.unregisterMBean(name);
+ }
+
+ /**
* Create a top level classloader policy
*
* @param context the deployment context
Modified: projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/ClassLoading.java
===================================================================
--- projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/ClassLoading.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/ClassLoading.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -25,7 +25,6 @@
import java.util.concurrent.ConcurrentHashMap;
import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.deployers.structure.spi.DeploymentContext;
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.structure.spi.classloading.ClassLoaderMetaData;
import org.jboss.deployers.structure.spi.classloading.ExportAll;
@@ -42,25 +41,25 @@
private Map<String, Domain> domains = new ConcurrentHashMap<String, Domain>();
/**
- * Add a deployment context
+ * Add a deployment unit
*
- * @param deploymentContext the deployment context
- * @throws IllegalArgumentException for a null deployment context
+ * @param deploymentUnit the deployment unit
+ * @throws IllegalArgumentException for a null deployment unit
*/
- public void addDeploymentContext(DeploymentContext deploymentContext)
+ public void addDeploymentUnit(DeploymentUnit deploymentUnit)
{
- if (deploymentContext == null)
- throw new IllegalArgumentException("Null deployment context");
+ if (deploymentUnit == null)
+ throw new IllegalArgumentException("Null deployment unit");
- DeploymentUnit unit = deploymentContext.getDeploymentUnit();
- ClassLoaderMetaData metadata = unit.getAttachment(ClassLoaderMetaData.class);
+ ClassLoaderMetaData metadata = deploymentUnit.getAttachment(ClassLoaderMetaData.class);
if (metadata == null)
{
metadata = new ClassLoaderMetaData();
- metadata.setName(deploymentContext.getName());
+ metadata.setName(deploymentUnit.getName());
metadata.setExportAll(ExportAll.NON_EMPTY);
+ metadata.setImportAll(true);
// TODO JBMICROCONT-182 default version
- unit.addAttachment(ClassLoaderMetaData.class, metadata);
+ deploymentUnit.addAttachment(ClassLoaderMetaData.class, metadata);
}
String domainName = metadata.getDomain();
@@ -81,23 +80,23 @@
}
}
- domain.addDeploymentContext(deploymentContext, metadata);
+ domain.addDeploymentUnit(deploymentUnit, metadata);
}
/**
- * Remove a deployment context
+ * Remove a deployment unit
*
- * @param deploymentContext the deployment context
+ * @param deploymentUnit the deployment unit
* @throws IllegalArgumentException for a null deployment context
*/
- public void removeDeploymentContext(DeploymentContext deploymentContext)
+ public void removeDeploymentUnit(DeploymentUnit deploymentUnit)
{
- if (deploymentContext == null)
+ if (deploymentUnit == null)
throw new IllegalArgumentException("Null deployment context");
- Module module = deploymentContext.getTransientAttachments().getAttachment(Module.class);
+ Module module = deploymentUnit.getAttachment(Module.class);
if (module == null)
- throw new IllegalStateException("Deployment Context has no module: " + deploymentContext);
+ throw new IllegalStateException("Deployment Unit has no module: " + deploymentUnit);
module.release();
}
}
Modified: projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Domain.java
===================================================================
--- projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Domain.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Domain.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -24,7 +24,7 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import org.jboss.deployers.structure.spi.DeploymentContext;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.structure.spi.classloading.ClassLoaderMetaData;
/**
@@ -38,8 +38,8 @@
/** The domain name */
private String name;
- /** The registered deployment contexts */
- private Map<DeploymentContext, Module> contexts = new ConcurrentHashMap<DeploymentContext, Module>();
+ /** The registered deployment units */
+ private Map<DeploymentUnit, Module> units = new ConcurrentHashMap<DeploymentUnit, Module>();
/**
* Create a new Domain.
@@ -67,15 +67,15 @@
/**
* Add a deployment context
*
- * @param deploymentContext the deployment context
+ * @param deploymentUnit the deployment unit
* @param metadata the classloader metadata
* @throws IllegalArgumentException for a null parameter
*/
- public void addDeploymentContext(DeploymentContext deploymentContext, ClassLoaderMetaData metadata)
+ public void addDeploymentUnit(DeploymentUnit deploymentUnit, ClassLoaderMetaData metadata)
{
- Module module = new Module(this, deploymentContext, metadata);
- deploymentContext.getTransientAttachments().addAttachment(Module.class, module);
- contexts.put(deploymentContext, module);
+ Module module = new Module(this, deploymentUnit, metadata);
+ deploymentUnit.addAttachment(Module.class, module);
+ units.put(deploymentUnit, module);
module.createDependencies();
}
@@ -89,7 +89,7 @@
{
if (module == null)
throw new IllegalArgumentException("Null module");
- DeploymentContext context = module.getDeploymentContext();
- contexts.remove(context);
+ DeploymentUnit unit = module.getDeploymentUnit();
+ units.remove(unit);
}
}
Modified: projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Module.java
===================================================================
--- projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Module.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/classloading/Module.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -26,7 +26,7 @@
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloader.spi.DelegateLoader;
import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.deployers.structure.spi.DeploymentContext;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.structure.spi.classloading.ClassLoaderMetaData;
import org.jboss.deployers.structure.spi.classloading.ExportAll;
@@ -41,8 +41,8 @@
/** The domain */
private Domain domain;
- /** The deployment context */
- private DeploymentContext deploymentContext;
+ /** The deployment unit */
+ private DeploymentUnit deploymentUnit;
/** The classloader metadata */
private ClassLoaderMetaData metadata;
@@ -54,31 +54,31 @@
* Create a new Module.
*
* @param domain the domain
- * @param deploymentContext the deployment context
+ * @param deploymentUnit the deployment unit
* @param metadata the metadata
* @throws IllegalArgumentException for a null parameter
*/
- public Module(Domain domain, DeploymentContext deploymentContext, ClassLoaderMetaData metadata)
+ public Module(Domain domain, DeploymentUnit deploymentUnit, ClassLoaderMetaData metadata)
{
if (domain == null)
throw new IllegalArgumentException("Null domain");
- if (deploymentContext == null)
- throw new IllegalArgumentException("Null context");
+ if (deploymentUnit == null)
+ throw new IllegalArgumentException("Null unit");
if (metadata == null)
throw new IllegalArgumentException("Null metadata");
this.domain = domain;
- this.deploymentContext = deploymentContext;
+ this.deploymentUnit = deploymentUnit;
this.metadata = metadata;
}
/**
- * Get the deploymentContext.
+ * Get the deploymentUnit.
*
- * @return the deploymentContext.
+ * @return the deploymentUnit.
*/
- public DeploymentContext getDeploymentContext()
+ public DeploymentUnit getDeploymentUnit()
{
- return deploymentContext;
+ return deploymentUnit;
}
/**
@@ -138,6 +138,16 @@
}
/**
+ * Get the import all for the module
+ *
+ * @return the import all
+ */
+ public boolean isImportAll()
+ {
+ return getMetadata().isImportAll();
+ }
+
+ /**
* Get delegate policy
*
* @return the delegation policy
Modified: projects/microcontainer/trunk/deployers-structure-spi/src/main/org/jboss/deployers/structure/spi/classloading/ClassLoaderMetaData.java
===================================================================
--- projects/microcontainer/trunk/deployers-structure-spi/src/main/org/jboss/deployers/structure/spi/classloading/ClassLoaderMetaData.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-structure-spi/src/main/org/jboss/deployers/structure/spi/classloading/ClassLoaderMetaData.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -54,6 +54,9 @@
/** Whether to export all */
private ExportAll exportAll;
+ /** Whether to import all */
+ private boolean importAll;
+
/** The requirements */
private Set<Requirement> requirements;
@@ -207,10 +210,20 @@
*/
public boolean isImportAll()
{
- return requirements == null || requirements.isEmpty();
+ return importAll;
}
/**
+ * Set the importAll.
+ *
+ * @param importAll the importAll.
+ */
+ public void setImportAll(boolean importAll)
+ {
+ this.importAll = importAll;
+ }
+
+ /**
* Get the requirements.
*
* @return the requirements.
Modified: projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/PackageVisitor.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/PackageVisitor.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/PackageVisitor.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -43,12 +43,15 @@
/** The packages */
private Set<String> packages = new HashSet<String>();
+ /** The root */
+ private String rootPath;
+
/** The exportAll policy */
private ExportAll exportAll;
/**
* Create a new PackageVisitor.
- *
+ *
* @param exportAll the export all policy
* @throws IllegalArgumentException for a null exportAll policy
*/
@@ -60,6 +63,19 @@
}
/**
+ * Set the root
+ *
+ * @param root the root
+ * @throws IllegalArgumentException for a null root
+ */
+ public void setRoot(VirtualFile root)
+ {
+ if (root == null)
+ throw new IllegalArgumentException("Null root");
+ rootPath = root.getPathName() + "/";
+ }
+
+ /**
* Get the packages.
*
* @return the packages.
@@ -109,6 +125,8 @@
if (empty == false)
{
String path = file.getPathName();
+ if (path.startsWith(rootPath))
+ path = path.substring(rootPath.length());
packages.add(path.replace('/', '.'));
}
}
Modified: projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSClassLoaderPolicy.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSClassLoaderPolicy.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSClassLoaderPolicy.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -60,6 +60,9 @@
/** The exported packages */
private String[] exportedPackages;
+ /** The import all */
+ private boolean importAll;
+
/**
* Create a new VFSClassLoaderPolicy.
*
@@ -116,6 +119,22 @@
}
@Override
+ public boolean isImportAll()
+ {
+ return importAll;
+ }
+
+ /**
+ * Set the importAll.
+ *
+ * @param importAll the importAll.
+ */
+ public void setImportAll(boolean importAll)
+ {
+ this.importAll = importAll;
+ }
+
+ @Override
public String[] getPackageNames()
{
return exportedPackages;
@@ -228,6 +247,15 @@
}
@Override
+ protected void toLongString(StringBuilder builder)
+ {
+ builder.append(" roots=").append(Arrays.asList(roots)).append(" ");
+ super.toLongString(builder);
+ if (exportAll != null)
+ builder.append(exportAll);
+ }
+
+ @Override
protected ProtectionDomain getProtectionDomain(String className, String path)
{
VirtualFile clazz = findChild(path);
@@ -264,6 +292,7 @@
{
try
{
+ visitor.setRoot(root);
root.visit(visitor);
}
catch (Exception e)
Modified: projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSTopLevelClassLoaderSystemDeployer.java
===================================================================
--- projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSTopLevelClassLoaderSystemDeployer.java 2007-07-13 15:23:24 UTC (rev 64040)
+++ projects/microcontainer/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSTopLevelClassLoaderSystemDeployer.java 2007-07-13 15:29:52 UTC (rev 64041)
@@ -41,12 +41,17 @@
protected VFSClassLoaderPolicy createTopLevelClassLoaderPolicy(DeploymentContext context, Module module) throws Exception
{
ClassPathVisitor visitor = new ClassPathVisitor();
- visitor.visit(context);
- Set<VirtualFile> roots = visitor.getClassPath();
- VFSClassLoaderPolicy policy = new VFSClassLoaderPolicy(roots.toArray(new VirtualFile[roots.size()]));
+ context.visit(visitor);
+ Set<VirtualFile> classPath = visitor.getClassPath();
+
+ VirtualFile[] roots = new VirtualFile[classPath.size()];
+ int i = 0;
+ for (VirtualFile path : classPath)
+ roots[i++] = path;
+ VFSClassLoaderPolicy policy = new VFSClassLoaderPolicy(roots);
policy.setExportAll(module.getExportAll());
+ policy.setImportAll(module.isImportAll());
// TODO JBMICROCONT-182 more policy from "module"
return policy;
}
-
}
More information about the jboss-cvs-commits
mailing list