Added support for @ikvm.lang.Internal access modifier (doesn't work yet, depends on java.lang.reflect.Constructor/Method/Field to return 0x40000000 bit from getModifiers()).

This commit is contained in:
jfrijters 2007-05-28 10:16:44 +00:00
Родитель bebe6612b7
Коммит 71f1928fb9
1 изменённых файлов: 19 добавлений и 1 удалений

Просмотреть файл

@ -23,6 +23,14 @@
* have any questions.
*/
/*IKVM*/
/* Modified for IKVM by Jeroen Frijters
*
* May 27, 2007 Added support for @ikvm.lang.Internal access modifier
*
*/
/*IKVM*/
package sun.reflect;
import java.lang.reflect.*;
@ -101,6 +109,9 @@ public class Reflection {
}
}
/*IKVM*/
private static native boolean checkInternalAccess(Class currentClass, Class memberClass);
public static boolean verifyMemberAccess(Class currentClass,
// Declaring class of field
// or method
@ -124,7 +135,8 @@ public class Reflection {
if (!Modifier.isPublic(getClassAccessFlags(memberClass))) {
isSameClassPackage = isSameClassPackage(currentClass, memberClass);
gotIsSameClassPackage = true;
if (!isSameClassPackage) {
/*IKVM*/
if (!isSameClassPackage && !checkInternalAccess(currentClass, memberClass)) {
return false;
}
}
@ -135,6 +147,12 @@ public class Reflection {
return true;
}
/*IKVM*/
// Is the member @ikvm.lang.Internal accessible?
if ((modifiers & 0x40000000) != 0) {
return currentClass.getClassLoader() == memberClass.getClassLoader();
}
boolean successSoFar = false;
if (Modifier.isProtected(modifiers)) {