[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