< prev index next >

modules/javafx.base/src/main/java/com/sun/javafx/property/MethodHelper.java

Print this page
rev 10442 : [mq]: fix-v1-8177566-trampoline


  44 
  45     public static Object invoke(Method m, Object obj, Object[] params)
  46             throws InvocationTargetException, IllegalAccessException {
  47 
  48         // Check that the class in question is in a package that is open to
  49         // this module (or exported unconditionally). If so, then we will open
  50         // the containing package to the unnamed trampoline module. If not,
  51         // we will throw an IllegalAccessException in order to generate a
  52         // clearer error message.
  53         final Class<?> clazz = m.getDeclaringClass();
  54         final String packageName = clazz.getPackage().getName();
  55         final Module module = clazz.getModule();
  56         final Module thisModule = MethodHelper.class.getModule();
  57         try {
  58             // Verify that the module being called either exports the package
  59             // in question unconditionally or opens the package in question to
  60             // this module.
  61             if (!module.isExported(packageName)) {
  62                 if (!module.isOpen(packageName, thisModule)) {
  63                     throw new IllegalAccessException(
  64                             "class " + MethodHelper.class.getName()
  65                             + " cannot access class " + clazz.getName()
  66                             + " (in module " + module.getName()
  67                             + ") because module " + module.getName()
  68                             + " does not open " + packageName
  69                             + " to " + thisModule.getName());
  70                 }
  71                 if (!module.isOpen(packageName, trampolineModule)) {
  72                     ReflectUtil.checkPackageAccess(packageName);
  73                     module.addOpens(packageName, trampolineModule);
  74                 }
  75             }
  76         } catch (IllegalAccessException ex) {
  77             if (logAccessErrors) {
  78                 ex.printStackTrace(System.err);
  79             }
  80             throw ex;
  81         }
  82 
  83         return MethodUtil.invoke(m, obj, params);
  84     }


  44 
  45     public static Object invoke(Method m, Object obj, Object[] params)
  46             throws InvocationTargetException, IllegalAccessException {
  47 
  48         // Check that the class in question is in a package that is open to
  49         // this module (or exported unconditionally). If so, then we will open
  50         // the containing package to the unnamed trampoline module. If not,
  51         // we will throw an IllegalAccessException in order to generate a
  52         // clearer error message.
  53         final Class<?> clazz = m.getDeclaringClass();
  54         final String packageName = clazz.getPackage().getName();
  55         final Module module = clazz.getModule();
  56         final Module thisModule = MethodHelper.class.getModule();
  57         try {
  58             // Verify that the module being called either exports the package
  59             // in question unconditionally or opens the package in question to
  60             // this module.
  61             if (!module.isExported(packageName)) {
  62                 if (!module.isOpen(packageName, thisModule)) {
  63                     throw new IllegalAccessException(
  64                             "module " + thisModule.getName()
  65                             + " cannot access class " + clazz.getName()
  66                             + " (in module " + module.getName()
  67                             + ") because module " + module.getName()
  68                             + " does not open " + packageName
  69                             + " to " + thisModule.getName());
  70                 }
  71                 if (!module.isOpen(packageName, trampolineModule)) {
  72                     ReflectUtil.checkPackageAccess(packageName);
  73                     module.addOpens(packageName, trampolineModule);
  74                 }
  75             }
  76         } catch (IllegalAccessException ex) {
  77             if (logAccessErrors) {
  78                 ex.printStackTrace(System.err);
  79             }
  80             throw ex;
  81         }
  82 
  83         return MethodUtil.invoke(m, obj, params);
  84     }
< prev index next >