Author: markt
Date: Tue Nov 4 19:22:31 2008
New Revision: 711501
URL: http://svn.apache.org/viewvc?rev=711501&view=rev
Log:
* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46096
Support annotation processing whilst running under a security manager
Modified:
tomcat/tc6.0.x/trunk/STATUS.txt
tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=711501&r1=711500&r2=711501&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Nov 4 19:22:31 2008
@@ -187,12 +187,6 @@
+1: fhanik, pero
-1:
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46096
- Support annotation processing whilst running under a security manager
- http://people.apache.org/~markt/patches/2008-10-27-bug46096.patch
- +1: markt, fhanik, remm
- -1:
-
* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46085
Hard to reproduce thread safety issue with session expiration
http://svn.apache.org/viewvc?rev=708273&view=rev
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java?rev=711501&r1=711500&r2=711501&view=diff
==============================================================================
---
tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java
(original)
+++
tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java
Tue Nov 4 19:22:31 2008
@@ -21,6 +21,8 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@@ -32,6 +34,7 @@
import javax.xml.ws.WebServiceRef;
import org.apache.AnnotationProcessor;
+import org.apache.catalina.Globals;
/**
@@ -59,7 +62,18 @@
Class<?> clazz = instance.getClass();
while (clazz != null) {
- Method[] methods = clazz.getDeclaredMethods();
+ Method[] methods = null;
+ if (Globals.IS_SECURITY_ENABLED) {
+ final Class<?> clazz2 = clazz;
+ methods = AccessController.doPrivileged(
+ new PrivilegedAction<Method[]>(){
+ public Method[] run(){
+ return clazz2.getDeclaredMethods();
+ }
+ });
+ } else {
+ methods = clazz.getDeclaredMethods();
+ }
Method postConstruct = null;
for (int i = 0; i < methods.length; i++) {
if (methods[i].isAnnotationPresent(PostConstruct.class)) {
@@ -141,7 +155,18 @@
while (clazz != null) {
// Initialize fields annotations
- Field[] fields = clazz.getDeclaredFields();
+ Field[] fields = null;
+ if (Globals.IS_SECURITY_ENABLED) {
+ final Class<?> clazz2 = clazz;
+ fields = AccessController.doPrivileged(
+ new PrivilegedAction<Field[]>(){
+ public Field[] run(){
+ return clazz2.getDeclaredFields();
+ }
+ });
+ } else {
+ fields = clazz.getDeclaredFields();
+ }
for (int i = 0; i < fields.length; i++) {
if (fields[i].isAnnotationPresent(Resource.class)) {
Resource annotation =
@@ -175,7 +200,18 @@
}
// Initialize methods annotations
- Method[] methods = clazz.getDeclaredMethods();
+ Method[] methods = null;
+ if (Globals.IS_SECURITY_ENABLED) {
+ final Class<?> clazz2 = clazz;
+ methods = AccessController.doPrivileged(
+ new PrivilegedAction<Method[]>(){
+ public Method[] run(){
+ return clazz2.getDeclaredMethods();
+ }
+ });
+ } else {
+ methods = clazz.getDeclaredMethods();
+ }
for (int i = 0; i < methods.length; i++) {
if (methods[i].isAnnotationPresent(Resource.class)) {
Resource annotation =
methods[i].getAnnotation(Resource.class);
Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=711501&r1=711500&r2=711501&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Tue Nov 4 19:22:31 2008
@@ -141,6 +141,10 @@
jsessionid path parameter name. Based on a patch by Jean-frederic
Clere.
(markt)
</add>
+ <fix>
+ <bug>46096</bug>: Support annotation processing whilst running under a
+ security manager. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]