[jboss-cvs] JBossAS SVN: r74128 - projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jun 5 05:00:09 EDT 2008


Author: kabir.khan at jboss.com
Date: 2008-06-05 05:00:09 -0400 (Thu, 05 Jun 2008)
New Revision: 74128

Modified:
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java
Log:
[JBMICROCONT-298] GenericBeanAspectFactory needs to be able to override classloader for scoped aspects with no parent delegation

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java	2008-06-05 07:34:32 UTC (rev 74127)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java	2008-06-05 09:00:09 UTC (rev 74128)
@@ -25,7 +25,10 @@
 import org.jboss.aop.InstanceAdvisor;
 import org.jboss.aop.advice.GenericAspectFactory;
 import org.jboss.aop.joinpoint.Joinpoint;
+import org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData;
+import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
 import org.jboss.beans.metadata.plugins.factory.GenericBeanFactory;
+import org.jboss.beans.metadata.spi.ValueMetaData;
 import org.jboss.beans.metadata.spi.factory.BeanFactory;
 import org.jboss.logging.Logger;
 import org.jboss.util.xml.XmlLoadable;
@@ -106,6 +109,13 @@
       try
       {
          log.debug("Creating advice " + name);
+         
+         //Add the ability to push the scoped classloader into the bean factory
+         if (((GenericBeanFactory)factory).getClassLoader() == null)
+         {
+            ((GenericBeanFactory)factory).setClassLoader(new PushedClassLoaderMetaData());
+         }
+         
          Object object = factory.createBean();
          if (object instanceof XmlLoadable)
          {
@@ -119,4 +129,29 @@
          throw new RuntimeException(throwable);
       }
    }
+   
+   /**
+    * Gets any classloaders for the thread
+    */
+   private class PushedClassLoaderMetaData extends AbstractClassLoaderMetaData
+   {
+      /** The serialVersionUID */
+      private static final long serialVersionUID = 1L;
+      
+      @Override
+      public ValueMetaData getClassLoader()
+      {
+         ClassLoader loader = GenericBeanAspectFactory.this.getLoader(); 
+         //GenericBeanAspectFactory.this.peekScopedClassLoader();
+         if (loader == null)
+         {
+            return null;
+         }
+         else
+         {
+            return new AbstractValueMetaData(loader);
+         }
+      }
+   }
+
 }




More information about the jboss-cvs-commits mailing list