[jboss-cvs] JBossAS SVN: r106068 - in branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop: instrument and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 15 14:33:03 EDT 2010


Author: flavia.rainone at jboss.com
Date: 2010-06-15 14:33:03 -0400 (Tue, 15 Jun 2010)
New Revision: 106068

Added:
   branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/SecurityActions.java
Modified:
   branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/AspectManager.java
   branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/instrument/ClassicInstrumentor.java
   branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
Log:
[JBAOP-796] Add an instance(Class<?>) to AspectManager and make woven code use that method instead of instance()

Modified: branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/AspectManager.java
===================================================================
--- branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/AspectManager.java	2010-06-15 18:26:19 UTC (rev 106067)
+++ branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/AspectManager.java	2010-06-15 18:33:03 UTC (rev 106068)
@@ -264,6 +264,12 @@
       return instance(Thread.currentThread().getContextClassLoader());
    }
 
+   public static synchronized AspectManager instance(Class<?> wovenClass)
+   {
+      ClassLoader classLoader = SecurityActions.getClassLoader(wovenClass);
+      return instance(classLoader);
+   }
+
    public static synchronized AspectManager instance(ClassLoader loadingClassLoader)
    {
       if (manager == null)

Added: branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/SecurityActions.java
===================================================================
--- branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/SecurityActions.java	                        (rev 0)
+++ branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/SecurityActions.java	2010-06-15 18:33:03 UTC (rev 106068)
@@ -0,0 +1,69 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.aop;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+class SecurityActions
+{
+   interface GetClassLoaderAction 
+   {
+      ClassLoader getClassLoader(Class<?> clazz);
+      
+      GetClassLoaderAction NON_PRIVILEGED = new GetClassLoaderAction() {
+
+         public ClassLoader getClassLoader(Class<?> clazz)
+         {
+            return clazz.getClassLoader();
+         }};
+
+     GetClassLoaderAction PRIVILEGED = new GetClassLoaderAction() {
+
+         public ClassLoader getClassLoader(final Class<?> clazz)
+         {
+            return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
+
+               public ClassLoader run()
+               {
+                  return clazz.getClassLoader();
+               }});
+         }};
+   }
+   
+   static ClassLoader getClassLoader(Class<?> clazz)
+   {
+      if (System.getSecurityManager() == null)
+      {
+         return GetClassLoaderAction.NON_PRIVILEGED.getClassLoader(clazz);
+      }
+      else
+      {
+         return GetClassLoaderAction.PRIVILEGED.getClassLoader(clazz);
+      }
+   }
+}


Property changes on: branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/SecurityActions.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Modified: branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/instrument/ClassicInstrumentor.java
===================================================================
--- branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/instrument/ClassicInstrumentor.java	2010-06-15 18:26:19 UTC (rev 106067)
+++ branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/instrument/ClassicInstrumentor.java	2010-06-15 18:33:03 UTC (rev 106068)
@@ -164,11 +164,13 @@
    
    private void addHelperField(CtClass clazz) throws CannotCompileException, NotFoundException
    {
+      String className = clazz.getName();
       addStaticField(clazz,
                      ClassicInstrumentor.HELPER_FIELD_NAME,
                      ClassicInstrumentor.HELPER_CLASS_NAME,
-                     CtField.Initializer.byExpr(ASPECT_MANAGER_CLASS_NAME + ".instance().getAdvisor(java.lang.Class#forName(\"" +
-                                                clazz.getName() + "\"))"));
+                     CtField.Initializer.byExpr(ASPECT_MANAGER_CLASS_NAME + ".instance(java.lang.Class#forName(\"" +
+                                                className + "\"))).getAdvisor(java.lang.Class#forName(\"" +
+                                                className + "\"))"));
    }
 
    /**

Modified: branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
===================================================================
--- branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java	2010-06-15 18:26:19 UTC (rev 106067)
+++ branches/Branch_AOP_1_5/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java	2010-06-15 18:33:03 UTC (rev 106068)
@@ -392,14 +392,15 @@
             Modifier.PROTECTED,
             CtClass.voidType,
             "initialise",
-            new CtClass[]{forName("org.jboss.aop.AspectManager")},
+            EMPTY_SIG,
             EMPTY_EXCEPTIONS,
             null,
             genadvisor);
       genadvisor.addMethod(initialise);
       initialise.setBody(
             "{" +
-            "   " + DOMAIN + "= new org.jboss.aop.GeneratedAdvisorDomain($1, " + ADVISED_CLASS + ", false); " +
+            "   AspectManager manager = AspectManager.instance(" + ADVISED_CLASS + ");" +
+            "   " + DOMAIN + "= new org.jboss.aop.GeneratedAdvisorDomain(manager, " + ADVISED_CLASS + ", false); " +
             "   ((org.jboss.aop.Domain)" + DOMAIN + ").setInheritsBindings(true); " +
             "   " + INITIALISE_METHODS + "();" +
             "   " + INITIALISE_CONSTRUCTORS + "();" +
@@ -416,7 +417,7 @@
       ctor.setBody(
             "{" +
             "   super(\"" + clazz.getName() + "\"); " +
-            "   initialise(org.jboss.aop.AspectManager.instance());" +
+            "   initialise();" +
             "}");
       genadvisor.addConstructor(ctor);
 



More information about the jboss-cvs-commits mailing list