changeset 5496:db7b5a2b5b11

Reintroduce PackageAccessible checks removed in 6788531.
author andrew
date Wed, 29 Aug 2012 12:57:49 +0100
parents d06702bfc987
children 5a2688a73184
files src/share/classes/com/sun/beans/finder/ConstructorFinder.java src/share/classes/com/sun/beans/finder/FieldFinder.java src/share/classes/com/sun/beans/finder/MethodFinder.java
diffstat 3 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/com/sun/beans/finder/ConstructorFinder.java	Thu Aug 23 15:42:23 2012 +0100
+++ b/src/share/classes/com/sun/beans/finder/ConstructorFinder.java	Wed Aug 29 12:57:49 2012 +0100
@@ -29,6 +29,8 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 
+import sun.reflect.misc.ReflectUtil;
+
 /**
  * This utility class provides {@code static} methods
  * to find a public constructor with specified parameter types
@@ -61,7 +63,8 @@
         if (Modifier.isAbstract(type.getModifiers())) {
             throw new NoSuchMethodException("Abstract class cannot be instantiated");
         }
-        if (!Modifier.isPublic(type.getModifiers())) {
+        if (!ReflectUtil.isPackageAccessible(type)
+	    || !Modifier.isPublic(type.getModifiers())) {
             throw new NoSuchMethodException("Class is not accessible");
         }
         PrimitiveWrapperMap.replacePrimitivesWithWrappers(args);
--- a/src/share/classes/com/sun/beans/finder/FieldFinder.java	Thu Aug 23 15:42:23 2012 +0100
+++ b/src/share/classes/com/sun/beans/finder/FieldFinder.java	Wed Aug 29 12:57:49 2012 +0100
@@ -27,6 +27,8 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 
+import sun.reflect.misc.ReflectUtil;
+
 /**
  * This utility class provides {@code static} methods
  * to find a public field with specified name
@@ -56,7 +58,8 @@
         if (!Modifier.isPublic(field.getModifiers())) {
             throw new NoSuchFieldException("Field '" + name + "' is not public");
         }
-        if (!Modifier.isPublic(field.getDeclaringClass().getModifiers())) {
+        if (!ReflectUtil.isPackageAccessible(field.getDeclaringClass()) ||
+	    !Modifier.isPublic(field.getDeclaringClass().getModifiers())) {
             throw new NoSuchFieldException("Field '" + name + "' is not accessible");
         }
         return field;
--- a/src/share/classes/com/sun/beans/finder/MethodFinder.java	Thu Aug 23 15:42:23 2012 +0100
+++ b/src/share/classes/com/sun/beans/finder/MethodFinder.java	Wed Aug 29 12:57:49 2012 +0100
@@ -33,6 +33,8 @@
 import java.lang.reflect.Type;
 import java.util.Arrays;
 
+import sun.reflect.misc.ReflectUtil;
+
 /**
  * This utility class provides {@code static} methods
  * to find a public method with specified name and parameter types
@@ -120,7 +122,8 @@
      */
     public static Method findAccessibleMethod(Method method) throws NoSuchMethodException {
         Class<?> type = method.getDeclaringClass();
-        if (Modifier.isPublic(type.getModifiers())) {
+        if (ReflectUtil.isPackageAccessible(type)
+	    && Modifier.isPublic(type.getModifiers())) {
             return method;
         }
         if (Modifier.isStatic(method.getModifiers())) {