< prev index next >
src/java.base/share/classes/jdk/internal/reflect/Reflection.java
Print this page
*** 106,138 ****
throw newIllegalAccessException(currentClass, memberClass, targetClass, modifiers);
}
}
/**
! * Verify access to a member, returning {@code false} if no access
*/
public static boolean verifyMemberAccess(Class<?> currentClass,
Class<?> memberClass,
Class<?> targetClass,
int modifiers)
{
- // Verify that currentClass can access a field, method, or
- // constructor of memberClass, where that member's access bits are
- // "modifiers".
-
- boolean gotIsSameClassPackage = false;
- boolean isSameClassPackage = false;
-
if (currentClass == memberClass) {
// Always succeeds
return true;
}
! if (!verifyModuleAccess(currentClass, memberClass)) {
return false;
}
if (!Modifier.isPublic(getClassAccessFlags(memberClass))) {
isSameClassPackage = isSameClassPackage(currentClass, memberClass);
gotIsSameClassPackage = true;
if (!isSameClassPackage) {
return false;
--- 106,143 ----
throw newIllegalAccessException(currentClass, memberClass, targetClass, modifiers);
}
}
/**
! * Verify access to a member and return {@code true} if it is granted.
! *
! * @param currentClass the class performing the access
! * @param memberClass the declaring class of the member being accessed
! * @param targetClass the class of target object if accessing instance
! * field or method;
! * or the declaring class if accessing constructor;
! * or null if accessing static field or method
! * @param modifiers the member's access modifiers
! * @return {@code true} if access to member is granted
*/
public static boolean verifyMemberAccess(Class<?> currentClass,
Class<?> memberClass,
Class<?> targetClass,
int modifiers)
{
if (currentClass == memberClass) {
// Always succeeds
return true;
}
! if (!verifyModuleAccess(currentClass.getModule(), memberClass)) {
return false;
}
+ boolean gotIsSameClassPackage = false;
+ boolean isSameClassPackage = false;
+
if (!Modifier.isPublic(getClassAccessFlags(memberClass))) {
isSameClassPackage = isSameClassPackage(currentClass, memberClass);
gotIsSameClassPackage = true;
if (!isSameClassPackage) {
return false;
*** 188,208 ****
return true;
}
/**
! * Returns {@code true} if memberClass's's module exports memberClass's
! * package to currentClass's module.
*/
- public static boolean verifyModuleAccess(Class<?> currentClass, Class<?> memberClass) {
- return verifyModuleAccess(currentClass.getModule(), memberClass);
- }
-
public static boolean verifyModuleAccess(Module currentModule, Class<?> memberClass) {
Module memberModule = memberClass.getModule();
if (currentModule == memberModule) {
! return true; // same module (named or unnamed)
} else {
String pkg = memberClass.getPackageName();
return memberModule.isExported(pkg, currentModule);
}
}
--- 193,212 ----
return true;
}
/**
! * Returns {@code true} if memberClass's module exports memberClass's
! * package to currentModule.
*/
public static boolean verifyModuleAccess(Module currentModule, Class<?> memberClass) {
Module memberModule = memberClass.getModule();
if (currentModule == memberModule) {
! // same module (named or unnamed) or both null if called
! // before module system is initialized, which means we are
! // dealing with java.base only.
! return true;
} else {
String pkg = memberClass.getPackageName();
return memberModule.isExported(pkg, currentModule);
}
}
*** 330,342 ****
/**
* Returns an IllegalAccessException with an exception message based on
* the access that is denied.
*/
! public static IllegalAccessException newIllegalAccessException(Class<?> currentClass,
Class<?> memberClass,
! Object target,
int modifiers)
throws IllegalAccessException
{
String currentSuffix = "";
String memberSuffix = "";
--- 334,347 ----
/**
* Returns an IllegalAccessException with an exception message based on
* the access that is denied.
*/
! public static IllegalAccessException newIllegalAccessException(
! Class<?> currentClass,
Class<?> memberClass,
! Class<?> targetClass,
int modifiers)
throws IllegalAccessException
{
String currentSuffix = "";
String memberSuffix = "";
< prev index next >