[jboss-cvs] JBossAS SVN: r57584 - trunk/aspects/src/jdk15/org/jboss/aop/deployers
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Oct 12 09:50:25 EDT 2006
Author: kabir.khan at jboss.com
Date: 2006-10-12 09:50:24 -0400 (Thu, 12 Oct 2006)
New Revision: 57584
Modified:
trunk/aspects/src/jdk15/org/jboss/aop/deployers/AspectDeployer.java
Log:
[JBAOP-292] Get aspect deployer working with scoped classloaders
Modified: trunk/aspects/src/jdk15/org/jboss/aop/deployers/AspectDeployer.java
===================================================================
--- trunk/aspects/src/jdk15/org/jboss/aop/deployers/AspectDeployer.java 2006-10-12 12:53:48 UTC (rev 57583)
+++ trunk/aspects/src/jdk15/org/jboss/aop/deployers/AspectDeployer.java 2006-10-12 13:50:24 UTC (rev 57584)
@@ -24,9 +24,11 @@
import org.jboss.aop.AspectAnnotationLoader;
import org.jboss.aop.AspectManager;
import org.jboss.aop.AspectXmlLoader;
+import org.jboss.aop.deployment.JBossScopedClassLoaderHelper;
import org.jboss.deployers.plugins.deployer.AbstractSimpleDeployer;
import org.jboss.deployers.spi.deployer.DeploymentUnit;
import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployment.DeploymentInfo;
import org.jboss.virtual.VirtualFile;
import org.jboss.virtual.VisitorAttributes;
import org.jboss.virtual.plugins.context.jar.JarUtils;
@@ -37,6 +39,7 @@
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URL;
import java.util.List;
import javassist.bytecode.ClassFile;
@@ -92,6 +95,13 @@
private void deployXml(DeploymentUnit unit, List<VirtualFile> files) throws DeploymentException
{
+ ClassLoader scl = getScopedClassLoader(unit);
+
+ if (scl != null)
+ {
+ log.info("AOP deployment is scoped using classloader " + scl);
+ }
+
for (VirtualFile vf : files)
{
try
@@ -102,7 +112,16 @@
{
Document doc = AspectXmlLoader.loadDocument(is);
AspectXmlLoader loader = new AspectXmlLoader();
- loader.setManager(AspectManager.instance());
+
+ if (scl != null)
+ {
+ loader.setManager(AspectManager.instance(scl));
+ loader.setClassLoader(scl);
+ }
+ else
+ {
+ loader.setManager(AspectManager.instance());
+ }
loader.deployXML(doc, vf.toURL(), unit.getClassLoader());
}
finally
@@ -142,6 +161,8 @@
throw new RuntimeException(e);
}
}
+
+ AspectManager.instance().unregisterClassLoader(unit.getClassLoader());
}
private void deployAnnotations(DeploymentUnit unit) throws DeploymentException
@@ -255,4 +276,18 @@
return (realName.endsWith(AOP_JAR_SUFFIX));
}
+
+ private ClassLoader getScopedClassLoader(DeploymentUnit unit)
+ {
+ //Scoped AOP deployments are only available when deployed as part of a scoped sar, ear etc.
+ //It can contain an aop.xml file, or it can be part of a .aop file
+ //Linking a standalone -aop.xml file onto a scoped deployment is not possible at the moment
+ if (JBossScopedClassLoaderHelper.isScopedClassLoader(unit.getClassLoader()))
+ {
+ return unit.getClassLoader();
+ }
+
+ return null;
+ }
+
}
More information about the jboss-cvs-commits
mailing list