[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