# HG changeset patch # User andrew # Date 1346241469 -3600 # Node ID db7b5a2b5b11761d63f312c2a9df4d83d61c7998 # Parent d06702bfc987d0679d0c047b0897fbe7a684a608 Reintroduce PackageAccessible checks removed in 6788531. diff -r d06702bfc987 -r db7b5a2b5b11 src/share/classes/com/sun/beans/finder/ConstructorFinder.java --- 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); diff -r d06702bfc987 -r db7b5a2b5b11 src/share/classes/com/sun/beans/finder/FieldFinder.java --- 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; diff -r d06702bfc987 -r db7b5a2b5b11 src/share/classes/com/sun/beans/finder/MethodFinder.java --- 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())) {