[jboss-cvs] JBossAS SVN: r107583 - projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Aug 13 06:05:43 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-08-13 06:05:42 -0400 (Fri, 13 Aug 2010)
New Revision: 107583

Modified:
   projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java
   projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy/SecurityActions.java
Log:
[JBAOP-798] Privileged block in ClassProxyFactory.populateMethodTables()

Modified: projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java
===================================================================
--- projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java	2010-08-13 09:46:28 UTC (rev 107582)
+++ projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java	2010-08-13 10:05:42 UTC (rev 107583)
@@ -365,7 +365,7 @@
       if (superclass == null) return;
       if (superclass.getName().equals("java.lang.Object")) return;
 
-      Method[] declaredMethods = superclass.getDeclaredMethods();
+      Method[] declaredMethods = SecurityActions.getDeclaredMethods(superclass);
       for (int i = 0; i < declaredMethods.length; i++)
       {
          if (ClassAdvisor.isAdvisable(declaredMethods[i])) 

Modified: projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy/SecurityActions.java
===================================================================
--- projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy/SecurityActions.java	2010-08-13 09:46:28 UTC (rev 107582)
+++ projects/aop/branches/Branch_2_1/aop/src/main/java/org/jboss/aop/proxy/SecurityActions.java	2010-08-13 10:05:42 UTC (rev 107583)
@@ -22,6 +22,7 @@
 package org.jboss.aop.proxy;
 
 import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.security.PrivilegedActionException;
@@ -134,4 +135,40 @@
          return GetClassLoaderAction.PRIVILEGED.getClassLoader(clazz);
       }
    }
+   
+   interface GetDeclaredMethodsAction 
+   {
+      Method[] getDeclaredMethods(Class<?> clazz);
+      
+      GetDeclaredMethodsAction NON_PRIVILEGED = new GetDeclaredMethodsAction() {
+
+         public Method[] getDeclaredMethods(Class<?> clazz)
+         {
+            return clazz.getDeclaredMethods();
+         }};
+
+         GetDeclaredMethodsAction PRIVILEGED = new GetDeclaredMethodsAction() {
+
+            public Method[] getDeclaredMethods(final Class<?> clazz)
+            {
+               return AccessController.doPrivileged(new PrivilegedAction<Method[]>() {
+
+                  public Method[] run()
+                  {
+                     return clazz.getDeclaredMethods();
+                  }});
+            }};
+   }
+   
+   static Method[] getDeclaredMethods(Class<?> clazz)
+   {
+      if (System.getSecurityManager() == null)
+      {
+         return GetDeclaredMethodsAction.NON_PRIVILEGED.getDeclaredMethods(clazz);
+      }
+      else
+      {
+         return GetDeclaredMethodsAction.PRIVILEGED.getDeclaredMethods(clazz);
+      }
+   }
 }



More information about the jboss-cvs-commits mailing list