[jboss-cvs] JBossAS SVN: r83144 - in projects/aop/trunk: asintegration-core/src/main/java/org/jboss/aop/classpool and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 21 05:00:49 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-01-21 05:00:48 -0500 (Wed, 21 Jan 2009)
New Revision: 83144
Added:
projects/aop/trunk/asintegration-mc/src/resources/META-INF/aop.xml
Modified:
projects/aop/trunk/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java
projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractClassPoolDomain.java
projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/BaseClassPool.java
projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/NonDelegatingClassPool.java
projects/aop/trunk/asintegration-jmx/src/resources/META-INF/jboss-service.xml
projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java
projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java
Log:
[JBAOP-666] Make it possible to swap out the ClassPoolFactory used in AS. Fixes arising from testing in AS
Modified: projects/aop/trunk/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java
===================================================================
--- projects/aop/trunk/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java 2009-01-21 08:58:26 UTC (rev 83143)
+++ projects/aop/trunk/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java 2009-01-21 10:00:48 UTC (rev 83144)
@@ -129,7 +129,7 @@
* Make createCtClass public so that we can override it
*/
@Override
- protected CtClass createCtClass(String classname, boolean useCache)
+ public CtClass createCtClass(String classname, boolean useCache)
{
boolean trace = logger.isTraceEnabled();
Modified: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractClassPoolDomain.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractClassPoolDomain.java 2009-01-21 08:58:26 UTC (rev 83143)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/AbstractClassPoolDomain.java 2009-01-21 10:00:48 UTC (rev 83144)
@@ -114,7 +114,7 @@
}
}
- if (clazz == null && !pool.childFirstLookup)
+ if (clazz == null && pool.childFirstLookup)
{
if (trace) logger.trace(this + " get cached or create " + classname + " from BaseClassPool - checking parent (parentLast)");
clazz = getCachedOrCreateFromPoolParent(pool, classname, create, trace);
Modified: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/BaseClassPool.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/BaseClassPool.java 2009-01-21 08:58:26 UTC (rev 83143)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/BaseClassPool.java 2009-01-21 10:00:48 UTC (rev 83144)
@@ -54,12 +54,12 @@
}
@Override
- protected CtClass createCtClass(String classname, boolean useCache)
+ public CtClass createCtClass(String classname, boolean useCache)
{
CtClass clazz = super.createCtClass(classname, useCache);
if (clazz != null)
{
- cacheCtClass(classname, clazz, false);
+ lockInCache(clazz);
}
return clazz;
}
Modified: projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/NonDelegatingClassPool.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/NonDelegatingClassPool.java 2009-01-21 08:58:26 UTC (rev 83143)
+++ projects/aop/trunk/asintegration-core/src/main/java/org/jboss/aop/classpool/NonDelegatingClassPool.java 2009-01-21 10:00:48 UTC (rev 83144)
@@ -40,7 +40,7 @@
}
@Override
- protected CtClass createCtClass(String classname, boolean useCache)
+ public CtClass createCtClass(String classname, boolean useCache)
{
boolean trace = logger.isTraceEnabled();
CtClass clazz = null;
Modified: projects/aop/trunk/asintegration-jmx/src/resources/META-INF/jboss-service.xml
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/resources/META-INF/jboss-service.xml 2009-01-21 08:58:26 UTC (rev 83143)
+++ projects/aop/trunk/asintegration-jmx/src/resources/META-INF/jboss-service.xml 2009-01-21 10:00:48 UTC (rev 83144)
@@ -8,6 +8,11 @@
<server>
<mbean code="org.jboss.aop.deployment.JBoss4IntegrationWrapper" name="jboss.aop:service=JBoss4IntegrationWrapper"/>
+ <!--
+ <mbean code="org.jboss.aop.deployment.JBoss4IntegrationWrapper" name="jboss.aop:service=JBoss4IntegrationWrapper">
+ <attribute name="ClassPoolFactoryClassName">org.jboss.aop.classpool.ucl.JBossUclClassPoolFactory</attribute>
+ </mbean>
+ -->
<!-- The code for the service is different for the different run scenarios
*** JBoss 4.0
Modified: projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java 2009-01-21 08:58:26 UTC (rev 83143)
+++ projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java 2009-01-21 10:00:48 UTC (rev 83144)
@@ -48,7 +48,8 @@
{
/** The delegate classpool factory */
private ScopedClassPoolFactory delegateClassPoolFactory;
- private AOPClassLoaderScopingPolicy policy = new VFSClassLoaderScopingPolicy();
+
+ private AOPClassLoaderScopingPolicyWithRegistry policy;
private static final Set<ClassLoader> bootstrapLoaders;
@@ -104,11 +105,27 @@
return false;
}
- public AOPClassLoaderScopingPolicy createAOPClassLoaderScopingPolicy()
+ public void setAopClassLoaderScopingPolicy(AOPClassLoaderScopingPolicyWithRegistry policy)
{
+ this.policy = policy;
+ }
+
+ public synchronized AOPClassLoaderScopingPolicyWithRegistry createAOPClassLoaderScopingPolicy()
+ {
+ if (policy == null)
+ {
+ //AS versions after 5.0.0 will want to configure the AOPClassLoaderScopingPolicy themselves
+ //Create a default one for AS 5.0.0
+ policy = new VFSClassLoaderScopingPolicy();
+ }
return policy;
}
+ public DomainRegistry getDomainRegistry()
+ {
+ return policy.getRegistry();
+ }
+
public void setClassPoolFactory(ScopedClassPoolFactory factory)
{
this.delegateClassPoolFactory = factory;
@@ -118,8 +135,7 @@
{
if (delegateClassPoolFactory == null)
{
- DomainRegistry registry = ((VFSClassLoaderScopingPolicy)policy).getRegistry();
- delegateClassPoolFactory = new JBoss5ClassPoolFactory(registry);
+ delegateClassPoolFactory = new JBoss5ClassPoolFactory(getDomainRegistry());
}
return this;
}
Modified: projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java 2009-01-21 08:58:26 UTC (rev 83143)
+++ projects/aop/trunk/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolFactory.java 2009-01-21 10:00:48 UTC (rev 83144)
@@ -48,6 +48,7 @@
public JBossClClassPoolFactory(DomainRegistry registry)
{
this.registry = registry;
+ System.out.println("XXXXXXXX Creating " + this + " registry:" + registry);
}
public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
Added: projects/aop/trunk/asintegration-mc/src/resources/META-INF/aop.xml
===================================================================
--- projects/aop/trunk/asintegration-mc/src/resources/META-INF/aop.xml (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/resources/META-INF/aop.xml 2009-01-21 10:00:48 UTC (rev 83144)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ AOP configuration
+-->
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <classloader><inject bean="aop-classloader:0.0.0"/></classloader>
+
+ <classloader name="aop-classloader" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY" import-all="true">
+ <root>${jboss.lib.url}jboss-aop-asintegration-core.jar</root>
+ <root>${jboss.lib.url}jboss-aop-asintegration-jmx.jar</root>
+ <root>${jboss.lib.url}jboss-aop-asintegration-mc.jar</root>
+ <root>${jboss.lib.url}jboss-aop-jboss5.jar</root>
+ </classloader>
+
+ <!-- Integration -->
+ <bean name="AOPClassLoaderScopingPolicy" class="org.jboss.aop.asintegration.jboss5.VFSClassLoaderScopingPolicy"/>
+
+ <bean name="AOPClassPoolFactory" class="org.jboss.aop.classpool.jbosscl.JBossClClassPoolFactory">
+ <constructor><parameter><inject bean="AOPClassLoaderScopingPolicy" property="registry"/></parameter></constructor>
+ </bean>
+
+ <bean name="AOPJBossIntegration" class="org.jboss.aop.asintegration.jboss5.JBoss5Integration">
+ <property name="classPoolFactory"><inject bean="AOPClassPoolFactory"/></property>
+ <property name="aopClassLoaderScopingPolicy"><inject bean="AOPClassLoaderScopingPolicy"/></property>
+ </bean>
+
+ <bean name="DefaultAspectManager" class="org.jboss.aop.microcontainer.beans.metadata.DefaultAspectManager">
+ <property name="managerBean">AspectManager</property>
+ <property name="managerProperty">aspectManager</property>
+ </bean>
+
+ <bean name="AOPBootstrap" class="org.jboss.aop.asintegration.jboss5.AOPBootstrap">
+ <!-- This one lives in AS 5 source tree -->
+ <property name="policy"><inject bean="AOPClassLoaderScopingPolicy"/></property>
+ <property name="manager"><inject bean="AspectManager" property="aspectManager"/></property>
+ </bean>
+
+ <!--
+ Valid values for the AspectManager bean for use with enableTransformer=true are:
+ * org.jboss.aop.deployers.AspectManagerJDK5 - works with the -javaagent:pluggable-instrumentor.jar switch
+ * org.jboss.aop.deployers.AspectManagerJRockit - works with JRockit and the -Xmanagement:class=org.jboss.aop.hook.JRockitPluggableClassPreProcessor switch
+ -->
+ <bean name="AspectManager" class="org.jboss.aop.deployers.AspectManagerJDK5">
+ <constructor>
+ <parameter><![CDATA[
+ <aop>
+ <aspect name="mainDeployer" class="org.jboss.profileservice.aop.MainDeployerAspect"/>
+ <bind pointcut="execution(* $instanceof{org.jboss.deployers.spi.deployment.MainDeployer}->process(..))">
+ <advice name="process" aspect="mainDeployer"/>
+ </bind>
+ <aspect name="persist" class="org.jboss.profileservice.aop.PersistAspect"/>
+ <bind pointcut="execution(* $instanceof{org.jboss.managed.api.ManagedProperty}->setValue(..))">
+ <advice name="setValue" aspect="persist"/>
+ </bind>
+ </aop>]]>
+ </parameter>
+ </constructor>
+
+ <property name="jbossIntegration"><inject bean="AOPJBossIntegration"/></property>
+
+ <property name="enableLoadtimeWeaving">false</property>
+ <!-- only relevant when EnableLoadtimeWeaving is true.
+ When transformer is on, every loaded class gets
+ transformed. If AOP can't find the class, then it
+ throws an exception. Sometimes, classes may not have
+ all the classes they reference. So, the Suppressing
+ is needed. (i.e. Jboss cache in the default configuration -->
+ <property name="suppressTransformationErrors">true</property>
+ <property name="prune">true</property>
+ <property name="include">org.jboss.test., org.jboss.injbossaop.</property>
+ <property name="exclude">org.jboss.</property>
+ <!-- This avoids instrumentation of hibernate cglib enhanced proxies
+ <property name="ignore">*$$EnhancerByCGLIB$$*</property> -->
+ <property name="optimized">true</property>
+ <property name="verbose">false</property>
+ <!--
+ Available choices for this attribute are:
+ org.jboss.aop.instrument.ClassicInstrumentor (default)
+ org.jboss.aop.instrument.GeneratedAdvisorInstrumentor
+ <property name="instrumentor">org.jboss.aop.instrument.ClassicInstrumentor</property>
+ -->
+ <!--
+ By default the deployment of the aspects contained in
+ ../deployers/jboss-aop-jboss5.deployer/base-aspects.xml
+ are not deployed. To turn on deployment uncomment this property
+ <property name="useBaseXml">true</property>
+ -->
+ </bean>
+
+</deployment>
More information about the jboss-cvs-commits
mailing list