[jboss-cvs] JBossAS SVN: r80259 - 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
Thu Oct 30 11:35:13 EDT 2008
Author: kabir.khan at jboss.com
Date: 2008-10-30 11:35:13 -0400 (Thu, 30 Oct 2008)
New Revision: 80259
Modified:
projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/DelegatingBeanAspectFactory.java
projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java
Log:
[JBMICROCONT-374] Differentiate how we get classloader when running with scoping
Modified: projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/DelegatingBeanAspectFactory.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/DelegatingBeanAspectFactory.java 2008-10-30 15:34:47 UTC (rev 80258)
+++ projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/DelegatingBeanAspectFactory.java 2008-10-30 15:35:13 UTC (rev 80259)
@@ -118,13 +118,33 @@
{
log.debug("Creating advice " + name);
- //Add the ability to push the scoped classloader into the bean factory
+ PushedClassLoaderMetaData pcmd = null;
if (((GenericBeanFactory)factory).getClassLoader() == null)
{
- ((GenericBeanFactory)factory).setClassLoader(new PushedClassLoaderMetaData());
+ pcmd = new PushedClassLoaderMetaData();
+ ((GenericBeanFactory)factory).setClassLoader(pcmd);
}
- AspectFactory fac = (AspectFactory)factory.createBean();
+ Object object = null;
+ try
+ {
+ //Try without looking at the context first which is what shold be used when running scoped in AS
+ object = factory.createBean();
+ }
+ catch(Throwable t)
+ {
+ if (pcmd != null)
+ {
+ pcmd.setLookAtContext(true);
+ }
+ else
+ {
+ throw new RuntimeException(t);
+ }
+ object = factory.createBean();
+ }
+
+ AspectFactory fac = (AspectFactory)object;
if (fac instanceof XmlLoadable)
{
((XmlLoadable)fac).importXml(element);
@@ -146,35 +166,49 @@
/** The serialVersionUID */
private static final long serialVersionUID = 1L;
+ boolean lookAtContext;
+
+ void setLookAtContext(boolean look)
+ {
+ lookAtContext = look;
+ }
+
@Override
public ValueMetaData getClassLoader()
{
- ClassLoader cl = null;
- if (((GenericBeanFactory)factory).getClassLoader() == this && context != null)
+ ClassLoader loader = null;
+ if (loader == null)
{
- try
+ if (lookAtContext && context != null)
{
- cl = context.getClassLoader();
+ try
+ {
+ loader = context.getClassLoader();
+ }
+ catch (Throwable t)
+ {
+ log.trace("Unable to retrieve classloader from " + context);
+ }
+
+ if (loader == null)
+ {
+ try
+ {
+ loader = Configurator.getClassLoader(((GenericBeanFactory)factory).getClassLoader());
+ }
+ catch (Throwable e)
+ {
+ log.trace("Unable to retrieve classloader from " + factory);
+ }
+ }
}
- catch (Throwable t)
- {
- log.trace("Unable to retrieve classloader from " + context);
- }
+ return loader != null ? new AbstractValueMetaData(loader) : null;
}
-
- if (cl == null)
+ else
{
- try
- {
- cl = Configurator.getClassLoader(((GenericBeanFactory)factory).getClassLoader());
- }
- catch (Throwable e)
- {
- log.trace("Unable to retrieve classloader from " + factory);
- }
+ return new AbstractValueMetaData(loader);
}
-
- return new AbstractValueMetaData(cl);
}
+
}
}
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-30 15:34:47 UTC (rev 80258)
+++ projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/beans/GenericBeanAspectFactory.java 2008-10-30 15:35:13 UTC (rev 80259)
@@ -132,13 +132,33 @@
{
log.debug("Creating advice " + name);
- //Add the ability to push the scoped classloader into the bean factory
+
+ PushedClassLoaderMetaData pcmd = null;
if (((GenericBeanFactory)factory).getClassLoader() == null)
{
- ((GenericBeanFactory)factory).setClassLoader(new PushedClassLoaderMetaData());
+ pcmd = new PushedClassLoaderMetaData();
+ ((GenericBeanFactory)factory).setClassLoader(pcmd);
}
- Object object = factory.createBean();
+ Object object = null;
+ try
+ {
+ //Try without looking at the context first which is what shold be used when running scoped in AS
+ object = factory.createBean();
+ }
+ catch(Throwable t)
+ {
+ if (pcmd != null)
+ {
+ pcmd.setLookAtContext(true);
+ }
+ else
+ {
+ throw new RuntimeException(t);
+ }
+ object = factory.createBean();
+ }
+
if (object instanceof XmlLoadable)
{
((XmlLoadable)object).importXml(element);
@@ -160,35 +180,49 @@
/** The serialVersionUID */
private static final long serialVersionUID = 1L;
+ boolean lookAtContext;
+
+ void setLookAtContext(boolean look)
+ {
+ lookAtContext = look;
+ }
+
@Override
public ValueMetaData getClassLoader()
{
- ClassLoader cl = GenericBeanAspectFactory.this.getLoader();
- if (cl == null && ((GenericBeanFactory)factory).getClassLoader() == this && context != null)
+ ClassLoader loader = GenericBeanAspectFactory.this.getLoader();
+ //GenericBeanAspectFactory.this.peekScopedClassLoader();
+ if (loader == null)
{
- try
+ if (lookAtContext && context != null)
{
- cl = context.getClassLoader();
+ try
+ {
+ loader = context.getClassLoader();
+ }
+ catch (Throwable t)
+ {
+ log.trace("Unable to retrieve classloader from " + context);
+ }
+
+ if (loader == null)
+ {
+ try
+ {
+ loader = Configurator.getClassLoader(((GenericBeanFactory)factory).getClassLoader());
+ }
+ catch (Throwable e)
+ {
+ log.trace("Unable to retrieve classloader from " + factory);
+ }
+ }
}
- catch (Throwable t)
- {
- log.trace("Unable to retrieve classloader from " + context);
- }
+ return loader != null ? new AbstractValueMetaData(loader) : null;
}
-
- if (cl == null)
+ else
{
- try
- {
- cl = Configurator.getClassLoader(((GenericBeanFactory)factory).getClassLoader());
- }
- catch (Throwable e)
- {
- log.trace("Unable to retrieve classloader from " + factory);
- }
+ return new AbstractValueMetaData(loader);
}
-
- return new AbstractValueMetaData(cl);
}
}
}
More information about the jboss-cvs-commits
mailing list