You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dw...@apache.org on 2010/04/23 15:47:45 UTC
svn commit: r937297 - in /geronimo/specs/trunk/geronimo-jcdi_1.0_spec:
pom.xml src/main/java/javax/enterprise/util/AnnotationLiteral.java
Author: dwoods
Date: Fri Apr 23 13:47:44 2010
New Revision: 937297
URL: http://svn.apache.org/viewvc?rev=937297&view=rev
Log:
GERONIMO-5259 Annoying 'access denied' security exceptions for oenwebbeans while java2 security is enabled. Contributed by Ying Wang. I also updated the pom.xml to use the specs that are stagged for a vote right now, as newer snapshot are not needed at this time.
Modified:
geronimo/specs/trunk/geronimo-jcdi_1.0_spec/pom.xml
geronimo/specs/trunk/geronimo-jcdi_1.0_spec/src/main/java/javax/enterprise/util/AnnotationLiteral.java
Modified: geronimo/specs/trunk/geronimo-jcdi_1.0_spec/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_1.0_spec/pom.xml?rev=937297&r1=937296&r2=937297&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_1.0_spec/pom.xml (original)
+++ geronimo/specs/trunk/geronimo-jcdi_1.0_spec/pom.xml Fri Apr 23 13:47:44 2010
@@ -72,25 +72,25 @@
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-interceptor_1.1_spec</artifactId>
- <version>1.1-SNAPSHOT</version>
+ <version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-el_2.2_spec</artifactId>
- <version>1.1-SNAPSHOT</version>
+ <version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-atinject_1.0_spec</artifactId>
- <version>1.1-SNAPSHOT</version>
+ <version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-annotation_1.1_spec</artifactId>
- <version>1.1-SNAPSHOT</version>
+ <version>1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Modified: geronimo/specs/trunk/geronimo-jcdi_1.0_spec/src/main/java/javax/enterprise/util/AnnotationLiteral.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_1.0_spec/src/main/java/javax/enterprise/util/AnnotationLiteral.java?rev=937297&r1=937296&r2=937297&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_1.0_spec/src/main/java/javax/enterprise/util/AnnotationLiteral.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_1.0_spec/src/main/java/javax/enterprise/util/AnnotationLiteral.java Fri Apr 23 13:47:44 2010
@@ -20,9 +20,12 @@ package javax.enterprise.util;
import java.io.Serializable;
import java.lang.annotation.Annotation;
+import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.Arrays;
/**
@@ -97,7 +100,12 @@ public abstract class AnnotationLiteral<
@Override
public boolean equals(Object other)
{
- Method[] methods = this.annotationType.getDeclaredMethods();
+ Method[] methods = (Method[])AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run()
+ {
+ return annotationType.getDeclaredMethods();
+ }
+ });
if(other == this)
{
@@ -213,7 +221,7 @@ public abstract class AnnotationLiteral<
{
if (!method.isAccessible())
{
- method.setAccessible(true);
+ AccessController.doPrivileged(new PrivilegedActionForAccessibleObject(method, true));
}
return method.invoke(instance, EMPTY_OBJECT_ARRAY);
@@ -224,16 +232,19 @@ public abstract class AnnotationLiteral<
}
finally
{
- method.setAccessible(access);
+ AccessController.doPrivileged(new PrivilegedActionForAccessibleObject(method, access));
}
-
-
}
@Override
public int hashCode()
{
- Method[] methods = this.annotationType.getDeclaredMethods();
+ Method[] methods = (Method[])AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run()
+ {
+ return annotationType.getDeclaredMethods();
+ }
+ });
int hashCode = 0;
for (Method method : methods)
@@ -301,8 +312,12 @@ public abstract class AnnotationLiteral<
@Override
public String toString()
{
- Method[] methods = this.annotationType.getDeclaredMethods();
-
+ Method[] methods = (Method[])AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run()
+ {
+ return annotationType.getDeclaredMethods();
+ }
+ });
StringBuilder sb = new StringBuilder("@" + annotationType().getName() + "(");
int lenght = methods.length;
@@ -324,4 +339,24 @@ public abstract class AnnotationLiteral<
return sb.toString();
}
-}
\ No newline at end of file
+
+ protected static class PrivilegedActionForAccessibleObject implements PrivilegedAction<Object>
+ {
+ AccessibleObject object;
+ boolean flag;
+
+ protected PrivilegedActionForAccessibleObject(AccessibleObject object, boolean flag)
+ {
+ this.object = object;
+ this.flag = flag;
+ }
+
+ public Object run()
+ {
+ object.setAccessible(flag);
+ return null;
+ }
+ }
+
+}
+