[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