[jboss-cvs] JBossAS SVN: r64252 - in projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi: base and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jul 24 12:55:05 EDT 2007
Author: adrian at jboss.org
Date: 2007-07-24 12:55:04 -0400 (Tue, 24 Jul 2007)
New Revision: 64252
Modified:
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.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/BaseClassLoaderPolicy.java
projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderSystem.java
Log:
Add support for Translator - used by Legacy AOP tests in JBossAS testsuite
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java 2007-07-24 15:39:31 UTC (rev 64251)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java 2007-07-24 16:55:04 UTC (rev 64252)
@@ -21,6 +21,7 @@
*/
package org.jboss.classloader.spi;
+import java.security.ProtectionDomain;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -30,6 +31,7 @@
import org.jboss.classloader.plugins.system.ClassLoaderSystemBuilder;
import org.jboss.classloader.spi.base.BaseClassLoaderSystem;
import org.jboss.logging.Logger;
+import org.jboss.util.loading.Translator;
/**
* ClassLoaderSystem.
@@ -54,6 +56,9 @@
/** The registered domains by name */
private Map<String, ClassLoaderDomain> registeredDomains = new HashMap<String, ClassLoaderDomain>();
+ /** Any translator */
+ private Translator translator;
+
/** Whether the system is shutdown */
private boolean shutdown = false;
@@ -375,7 +380,50 @@
}
}
+ /**
+ * Get the translator.
+ *
+ * @return the translator.
+ */
+ public Translator getTranslator()
+ {
+ return translator;
+ }
+
+ /**
+ * Set the translator.
+ *
+ * @param translator the translator.
+ */
+ public void setTranslator(Translator translator)
+ {
+ log.debug(this + " set translator to " + translator);
+ this.translator = translator;
+ }
+
@Override
+ protected byte[] transform(ClassLoader classLoader, String className, byte[] byteCode, ProtectionDomain protectionDomain) throws Exception
+ {
+ if (translator != null)
+ return translator.transform(classLoader, className, null, protectionDomain, byteCode);
+ return super.transform(classLoader, className, byteCode, protectionDomain);
+ }
+
+ @Override
+ protected void afterUnregisterClassLoader(ClassLoader classLoader)
+ {
+ try
+ {
+ if (translator != null)
+ translator.unregisterClassLoader(classLoader);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Error unregistering classloader from translator " + classLoader, t);
+ }
+ }
+
+ @Override
protected void toLongString(StringBuilder builder)
{
if (shutdown)
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-24 15:39:31 UTC (rev 64251)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoader.java 2007-07-24 16:55:04 UTC (rev 64252)
@@ -259,7 +259,14 @@
// Let the policy do things before we define the class
BaseClassLoaderPolicy basePolicy = policy;
ProtectionDomain protectionDomain = basePolicy.getProtectionDomain(name, resourcePath);
- byteCode = policy.transform(name, byteCode, protectionDomain);
+ try
+ {
+ byteCode = policy.transform(name, byteCode, protectionDomain);
+ }
+ catch (Throwable t)
+ {
+ throw new RuntimeException("Unexpected error transforming class " + name, t);
+ }
// Create the package if necessary
definePackage(name);
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-24 15:39:31 UTC (rev 64251)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java 2007-07-24 16:55:04 UTC (rev 64252)
@@ -154,16 +154,18 @@
*
* By default, this delegates to the classloader system
*
+ * @param classLoader the classloader
* @param className the class name
* @param byteCode the byte code
* @param protectionDomain the protection domain
* @return the transformed byte code
+ * @throws Exception for any error
*/
- protected byte[] transform(String className, byte[] byteCode, ProtectionDomain protectionDomain)
+ protected byte[] transform(ClassLoader classLoader, String className, byte[] byteCode, ProtectionDomain protectionDomain) throws Exception
{
BaseClassLoaderSystem system = getClassLoaderSystem();
if (system != null)
- system.transform(className, byteCode, protectionDomain);
+ system.transform(classLoader, className, byteCode, protectionDomain);
return byteCode;
}
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java 2007-07-24 15:39:31 UTC (rev 64251)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderPolicy.java 2007-07-24 16:55:04 UTC (rev 64252)
@@ -131,12 +131,13 @@
* @param byteCode the byte code
* @param protectionDomain the protection domain
* @return the transformed byte code
+ * @throws Exception for any error
*/
- protected byte[] transform(String className, byte[] byteCode, ProtectionDomain protectionDomain)
+ protected byte[] transform(String className, byte[] byteCode, ProtectionDomain protectionDomain) throws Exception
{
BaseClassLoaderDomain domain = getClassLoaderDomain();
if (domain != null)
- domain.transform(className, byteCode, protectionDomain);
+ domain.transform(getClassLoader(), className, byteCode, protectionDomain);
return byteCode;
}
Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderSystem.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderSystem.java 2007-07-24 15:39:31 UTC (rev 64251)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/base/BaseClassLoaderSystem.java 2007-07-24 16:55:04 UTC (rev 64252)
@@ -116,7 +116,9 @@
public BaseClassLoader run()
{
BaseClassLoader classLoader = createClassLoader(policy);
+ beforeRegisterClassLoader(classLoader);
domain.registerClassLoader(classLoader);
+ afterRegisterClassLoader(classLoader);
return classLoader;
}
}, policy.getAccessControlContext());
@@ -141,9 +143,11 @@
BaseClassLoaderDomain domain = basePolicy.getClassLoaderDomain();
if (domain == null)
throw new IllegalStateException("Policy has no domain " + policy.toLongString());
+ beforeUnregisterClassLoader(classLoader);
domain.unregisterClassLoader(classLoader);
+ afterUnregisterClassLoader(classLoader);
}
-
+
/**
* Unregister a policy with a domain
*
@@ -176,16 +180,58 @@
}
/**
+ * Before register classloader
+ *
+ * @param classLoader the classloader
+ */
+ protected void beforeRegisterClassLoader(ClassLoader classLoader)
+ {
+ // Nothing
+ }
+
+ /**
+ * After register classloader
+ *
+ * @param classLoader the classloader
+ */
+ protected void afterRegisterClassLoader(ClassLoader classLoader)
+ {
+ // Nothing
+ }
+
+ /**
+ * Before unregister classloader
+ *
+ * @param classLoader the classloader
+ */
+ protected void beforeUnregisterClassLoader(ClassLoader classLoader)
+ {
+ // Nothing
+ }
+
+ /**
+ * After unregister classloader
+ *
+ * @param classLoader the classloader
+ */
+ protected void afterUnregisterClassLoader(ClassLoader classLoader)
+ {
+ // Nothing
+ }
+
+ /**
* Transform the byte code<p>
*
* By default this does nothing
- *
+ *
+ * @param classLoader the classLoader
* @param className the class name
* @param byteCode the byte code
* @param protectionDomain the protection domain
* @return the transformed byte code
+ * @throws Exception for any error
*/
- protected byte[] transform(String className, byte[] byteCode, ProtectionDomain protectionDomain)
+ protected byte[] transform(ClassLoader classLoader, String className, byte[] byteCode, ProtectionDomain protectionDomain) throws Exception
{
return byteCode;
}
More information about the jboss-cvs-commits
mailing list