[jboss-cvs] JBossAS SVN: r80157 - projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Oct 28 13:00:20 EDT 2008
Author: kabir.khan at jboss.com
Date: 2008-10-28 13:00:19 -0400 (Tue, 28 Oct 2008)
New Revision: 80157
Modified:
projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/Aspect.java
projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java
Log:
[JBMICROCONT-374] Better determination of classloader to use in GenericBeanAspectFactory
Modified: projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/Aspect.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/Aspect.java 2008-10-28 17:00:11 UTC (rev 80156)
+++ projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/Aspect.java 2008-10-28 17:00:19 UTC (rev 80157)
@@ -32,6 +32,8 @@
import org.jboss.aop.advice.ScopeUtil;
import org.jboss.aop.instrument.Untransformable;
import org.jboss.beans.metadata.plugins.factory.GenericBeanFactory;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
import org.jboss.logging.Logger;
import org.w3c.dom.Element;
@@ -42,7 +44,7 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision$
*/
-public class Aspect implements Untransformable
+public class Aspect implements Untransformable, KernelControllerContextAware
{
private static final Logger log = Logger.getLogger(Aspect.class);
@@ -94,6 +96,11 @@
private Element element;
/**
+ * The KernelControllerContext
+ */
+ private KernelControllerContext context;
+
+ /**
* Get the name.
*
* @return the adviceName.
@@ -255,6 +262,8 @@
factory.setBeanFactory(advice);
}
+ setDefinitionControllerContext(context);
+
//Copy the aspectbindings to avoid ConcurrentModificationExceptions
ArrayList<Binding> clonedBindings = new ArrayList<Binding>();
for (Binding aspectBinding : bindings.values())
@@ -301,6 +310,7 @@
manager.removeAspectDefinition(name);
if (definition != null)
{
+ setDefinitionControllerContext(null);
definition.undeploy();
definition = null;
}
@@ -315,4 +325,22 @@
{
bindings.remove(binding.getName());
}
+
+ public void setKernelControllerContext(KernelControllerContext context) throws Exception
+ {
+ this.context = context;
+ }
+
+ public void unsetKernelControllerContext(KernelControllerContext context) throws Exception
+ {
+ this.context = null;
+ }
+
+ protected void setDefinitionControllerContext(KernelControllerContext context)
+ {
+ if (definition != null)
+ {
+ ((GenericBeanAspectFactory)definition.getFactory()).setKernelControllerContext(context);
+ }
+ }
}
\ No newline at end of file
Modified: projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java 2008-10-28 17:00:11 UTC (rev 80156)
+++ projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java 2008-10-28 17:00:19 UTC (rev 80157)
@@ -30,6 +30,8 @@
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.kernel.plugins.config.Configurator;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.logging.Logger;
import org.jboss.util.xml.XmlLoadable;
import org.w3c.dom.Element;
@@ -51,6 +53,8 @@
protected Element element;
+ protected KernelControllerContext context;
+
public GenericBeanAspectFactory(String name, GenericBeanFactory factory, Element element)
{
super(null, element);
@@ -109,6 +113,11 @@
{
return doCreate(advisor, instanceAdvisor, jp);
}
+
+ void setKernelControllerContext(KernelControllerContext context)
+ {
+ this.context = context;
+ }
protected Object doCreate(Advisor advisor, InstanceAdvisor instanceAdvisor, Joinpoint jp)
{
@@ -147,16 +156,32 @@
@Override
public ValueMetaData getClassLoader()
{
- ClassLoader loader = GenericBeanAspectFactory.this.getLoader();
- //GenericBeanAspectFactory.this.peekScopedClassLoader();
- if (loader == null)
+ ClassLoader cl = GenericBeanAspectFactory.this.getLoader();
+ if (cl == null && ((GenericBeanFactory)factory).getClassLoader() == this && context != null)
{
- return null;
+ try
+ {
+ cl = context.getClassLoader();
+ }
+ catch (Throwable t)
+ {
+ log.trace("Unable to retrieve classloader from " + context);
+ }
}
- else
+
+ if (cl == null)
{
- return new AbstractValueMetaData(loader);
+ try
+ {
+ cl = Configurator.getClassLoader(((GenericBeanFactory)factory).getClassLoader());
+ }
+ catch (Throwable e)
+ {
+ log.trace("Unable to retrieve classloader from " + factory);
+ }
}
+
+ return new AbstractValueMetaData(cl);
}
}
More information about the jboss-cvs-commits
mailing list