[jboss-cvs] JBossAS SVN: r83424 - in projects/jboss-cl/trunk/classloading/src: test/java/org/jboss/test/classloading/dependency/test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jan 26 13:40:53 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-01-26 13:40:53 -0500 (Mon, 26 Jan 2009)
New Revision: 83424
Modified:
projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoading.java
projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java
projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java
Log:
[JBCL-80] Way to determine Module for ClassLoader
Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoading.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoading.java 2009-01-26 18:24:19 UTC (rev 83423)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/ClassLoading.java 2009-01-26 18:40:53 UTC (rev 83424)
@@ -133,11 +133,22 @@
/**
* Find the module for a classloader
*
- * @param className the classloader
+ * @param loader the classloader
* @return the module or null if the classloader does not correspond to a registered module classloader
*/
public static Module getModuleForClassLoader(ClassLoader loader)
{
return Module.getModuleForClassLoader(loader);
}
+
+ /**
+ * Find the classloader for a module
+ *
+ * @param module the module
+ * @return the classloader or null if the module does not correspond to a registered classloader module
+ */
+ public static ClassLoader getClassLoaderForModule(Module module)
+ {
+ return Module.getClassLoaderForModule(module);
+ }
}
Modified: projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java 2009-01-26 18:24:19 UTC (rev 83423)
+++ projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/dependency/Module.java 2009-01-26 18:40:53 UTC (rev 83424)
@@ -61,6 +61,7 @@
{
/** The modules by classloader */
private static Map<ClassLoader, Module> modulesByClassLoader = new ConcurrentHashMap<ClassLoader, Module>();
+ private static Map<Module, ClassLoader> classLoadersByModule = new ConcurrentHashMap<Module, ClassLoader>();
/** The context name */
private String contextName;
@@ -98,6 +99,7 @@
throw new IllegalArgumentException("Null classloader");
modulesByClassLoader.put(classLoader, module);
+ classLoadersByModule.put(module, classLoader);
}
/**
@@ -115,6 +117,7 @@
throw new IllegalArgumentException("Null classloader");
modulesByClassLoader.remove(classLoader);
+ classLoadersByModule.remove(module);
}
/**
@@ -359,7 +362,7 @@
/**
* Find the module for a classloader
*
- * @param className the classloader
+ * @param cl the classloader
* @return the module or null if the classloader does not correspond to a registered module classloader
*/
static Module getModuleForClassLoader(ClassLoader cl)
@@ -376,6 +379,25 @@
}
/**
+ * Find the classloader for a module
+ *
+ * @param module the module
+ * @return the classloader or null if the module does not correspond to a registered classloader module
+ */
+ static ClassLoader getClassLoaderForModule(Module module)
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null)
+ sm.checkPermission(new RuntimePermission("getClassLoader"));
+
+ // Determine the module (if any) for the classloader
+ if (module != null)
+ return classLoadersByModule.get(module);
+ // Unknown
+ return null;
+ }
+
+ /**
* Find the module that loads a class
*
* @param className the class name
Modified: projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java
===================================================================
--- projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java 2009-01-26 18:24:19 UTC (rev 83423)
+++ projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/dependency/test/ModuleClassLoadingUnitTestCase.java 2009-01-26 18:40:53 UTC (rev 83424)
@@ -74,6 +74,7 @@
assertEquals(moduleA, other);
assertEquals(moduleA, ClassLoading.getModuleForClassLoader(clA));
+ assertEquals(clA, ClassLoading.getClassLoaderForModule(moduleA));
}
finally
{
@@ -113,6 +114,8 @@
assertEquals(moduleA, ClassLoading.getModuleForClassLoader(clA));
assertEquals(moduleB, ClassLoading.getModuleForClassLoader(clB));
+ assertEquals(clA, ClassLoading.getClassLoaderForModule(moduleA));
+ assertEquals(clB, ClassLoading.getClassLoaderForModule(moduleB));
}
finally
{
@@ -171,6 +174,9 @@
assertEquals(moduleA1, ClassLoading.getModuleForClassLoader(clA1));
assertEquals(moduleA2, ClassLoading.getModuleForClassLoader(clA2));
assertEquals(moduleB, ClassLoading.getModuleForClassLoader(clB));
+ assertEquals(clA1, ClassLoading.getClassLoaderForModule(moduleA1));
+ assertEquals(clA2, ClassLoading.getClassLoaderForModule(moduleA2));
+ assertEquals(clB, ClassLoading.getClassLoaderForModule(moduleB));
}
finally
{
More information about the jboss-cvs-commits
mailing list