[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