changeset 10882:3bc097d85c79

8195800: Eliminate dependency on sun.reflect.misc in javafx modules Reviewed-by: kcr, mchung, alanb
author arapte
date Fri, 23 Mar 2018 15:06:54 +0530
parents fbaafb899805
children bc09cce3617a
files build.gradle dependencies/java.base/module-info.java.extra modules/javafx.base/src/main/java/com/sun/javafx/property/MethodHelper.java modules/javafx.base/src/main/java/com/sun/javafx/property/PropertyReference.java modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/JavaBeanPropertyBuilderHelper.java modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/ReadOnlyJavaBeanPropertyBuilderHelper.java modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/ReadOnlyPropertyDescriptor.java modules/javafx.base/src/main/java/com/sun/javafx/reflect/ConstructorUtil.java modules/javafx.base/src/main/java/com/sun/javafx/reflect/FieldUtil.java modules/javafx.base/src/main/java/com/sun/javafx/reflect/MethodUtil.java modules/javafx.base/src/main/java/com/sun/javafx/reflect/ReflectUtil.java modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/BeanAdapter.java modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/MethodHelper.java modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/builder/ProxyBuilder.java modules/javafx.fxml/src/main/java/javafx/fxml/FXMLLoader.java modules/javafx.fxml/src/main/java/javafx/fxml/JavaFXBuilderFactory.java modules/javafx.web/src/ios/java/javafx/scene/web/ExportedJavaObject.java modules/javafx.web/src/main/java/com/sun/webkit/MethodHelper.java
diffstat 18 files changed, 246 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/build.gradle	Thu Mar 22 14:11:26 2018 -0700
+++ b/build.gradle	Fri Mar 23 15:06:54 2018 +0530
@@ -1581,9 +1581,6 @@
 
 // Qualified exports needed by javafx.* modules (excluding javafx.swing)
 def qualExportsCore = [
-    "--add-exports=java.base/sun.reflect.misc=javafx.base",
-    "--add-exports=java.base/sun.reflect.misc=javafx.fxml",
-    "--add-exports=java.base/sun.reflect.misc=javafx.web",
     "--add-exports=java.base/sun.util.logging=javafx.base",
     "--add-exports=java.base/sun.util.logging=javafx.controls",
     "--add-exports=java.base/sun.util.logging=javafx.fxml",
--- a/dependencies/java.base/module-info.java.extra	Thu Mar 22 14:11:26 2018 -0700
+++ b/dependencies/java.base/module-info.java.extra	Fri Mar 23 15:06:54 2018 +0530
@@ -23,9 +23,6 @@
  * questions.
  */
 
-exports sun.reflect.misc to javafx.base;
-exports sun.reflect.misc to javafx.fxml;
-exports sun.reflect.misc to javafx.web;
 exports sun.util.logging to javafx.base;
 exports sun.util.logging to javafx.controls;
 exports sun.util.logging to javafx.fxml;
--- a/modules/javafx.base/src/main/java/com/sun/javafx/property/MethodHelper.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/property/MethodHelper.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@
 import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  * Utility class to wrap method invocation.
--- a/modules/javafx.base/src/main/java/com/sun/javafx/property/PropertyReference.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/property/PropertyReference.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,7 +33,7 @@
 
 import javafx.beans.property.ReadOnlyProperty;
 
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  * A handle to a specific property defined on some {@link Bean}.
--- a/modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/JavaBeanPropertyBuilderHelper.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/JavaBeanPropertyBuilderHelper.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,8 +26,7 @@
 package com.sun.javafx.property.adapter;
 
 import java.lang.reflect.Method;
-
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  */
--- a/modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/ReadOnlyJavaBeanPropertyBuilderHelper.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/ReadOnlyJavaBeanPropertyBuilderHelper.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,8 +26,7 @@
 package com.sun.javafx.property.adapter;
 
 import java.lang.reflect.Method;
-
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  */
--- a/modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/ReadOnlyPropertyDescriptor.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/property/adapter/ReadOnlyPropertyDescriptor.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,7 +34,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 import static java.util.Locale.ENGLISH;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/reflect/ConstructorUtil.java	Fri Mar 23 15:06:54 2018 +0530
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.javafx.reflect;
+
+import java.lang.reflect.Constructor;
+
+public final class ConstructorUtil {
+
+    private ConstructorUtil() {
+    }
+
+    public static Constructor<?> getConstructor(Class<?> cls, Class<?>[] params)
+        throws NoSuchMethodException {
+        ReflectUtil.checkPackageAccess(cls);
+        return cls.getConstructor(params);
+    }
+
+    public static Constructor<?>[] getConstructors(Class<?> cls) {
+        ReflectUtil.checkPackageAccess(cls);
+        return cls.getConstructors();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/reflect/FieldUtil.java	Fri Mar 23 15:06:54 2018 +0530
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.javafx.reflect;
+
+import java.lang.reflect.Field;
+
+public final class FieldUtil {
+
+    private FieldUtil() {
+    }
+
+    public static Field getField(Class<?> cls, String name)
+        throws NoSuchFieldException {
+        ReflectUtil.checkPackageAccess(cls);
+        return cls.getField(name);
+    }
+}
--- a/modules/javafx.base/src/main/java/com/sun/javafx/reflect/MethodUtil.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/reflect/MethodUtil.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,7 @@
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 
 class Trampoline {
@@ -89,15 +89,13 @@
         super();
     }
 
-    /*public*/
-    static Method getMethod(Class<?> cls, String name, Class<?>[] args)
+    public static Method getMethod(Class<?> cls, String name, Class<?>[] args)
         throws NoSuchMethodException {
         ReflectUtil.checkPackageAccess(cls);
         return cls.getMethod(name, args);
     }
 
-    /*public*/
-    static Method[] getMethods(Class<?> cls) {
+    public static Method[] getMethods(Class<?> cls) {
         ReflectUtil.checkPackageAccess(cls);
         return cls.getMethods();
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/javafx.base/src/main/java/com/sun/javafx/reflect/ReflectUtil.java	Fri Mar 23 15:06:54 2018 +0530
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+package com.sun.javafx.reflect;
+
+import java.lang.reflect.Proxy;
+
+public final class ReflectUtil {
+
+    private ReflectUtil() {
+    }
+
+    /**
+     * Checks package access on the given class.
+     *
+     * If it is a {@link Proxy#isProxyClass(java.lang.Class)} that implements
+     * a non-public interface (i.e. may be in a non-restricted package),
+     * also check the package access on the proxy interfaces.
+     */
+    public static void checkPackageAccess(Class<?> clazz) {
+        SecurityManager s = System.getSecurityManager();
+        if (s != null) {
+            privateCheckPackageAccess(s, clazz);
+        }
+    }
+
+    /**
+     * NOTE: should only be called if a SecurityManager is installed
+     */
+    private static void privateCheckPackageAccess(SecurityManager s, Class<?> clazz) {
+        while (clazz.isArray()) {
+            clazz = clazz.getComponentType();
+        }
+
+        String pkg = clazz.getPackageName();
+        if (pkg != null && !pkg.isEmpty()) {
+            s.checkPackageAccess(pkg);
+        }
+
+        if (isNonPublicProxyClass(clazz)) {
+            privateCheckProxyPackageAccess(s, clazz);
+        }
+    }
+
+    /**
+     * Checks package access on the given classname.
+     * This method is typically called when the Class instance is not
+     * available and the caller attempts to load a class on behalf
+     * the true caller (application).
+     */
+    public static void checkPackageAccess(String name) {
+        SecurityManager s = System.getSecurityManager();
+        if (s != null) {
+            String cname = name.replace('/', '.');
+            if (cname.startsWith("[")) {
+                int b = cname.lastIndexOf('[') + 2;
+                if (b > 1 && b < cname.length()) {
+                    cname = cname.substring(b);
+                }
+            }
+            int i = cname.lastIndexOf('.');
+            if (i != -1) {
+                s.checkPackageAccess(cname.substring(0, i));
+            }
+        }
+    }
+
+    public static boolean isPackageAccessible(Class<?> clazz) {
+        try {
+            checkPackageAccess(clazz);
+        } catch (SecurityException e) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * NOTE: should only be called if a SecurityManager is installed
+     */
+    private static void privateCheckProxyPackageAccess(SecurityManager s, Class<?> clazz) {
+        // check proxy interfaces if the given class is a proxy class
+        if (Proxy.isProxyClass(clazz)) {
+            for (Class<?> intf : clazz.getInterfaces()) {
+                privateCheckPackageAccess(s, intf);
+            }
+        }
+    }
+
+    // Note that bytecode instrumentation tools may exclude 'sun.*'
+    // classes but not generated proxy classes and so keep it in com.sun.*
+    public static final String PROXY_PACKAGE = "com.sun.proxy";
+
+    /**
+     * Test if the given class is a proxy class that implements
+     * non-public interface.  Such proxy class may be in a non-restricted
+     * package that bypasses checkPackageAccess.
+     */
+    public static boolean isNonPublicProxyClass(Class<?> cls) {
+        if (!Proxy.isProxyClass(cls)) {
+            return false;
+        }
+        String pkg = cls.getPackageName();
+        return pkg == null || !pkg.startsWith(PROXY_PACKAGE);
+    }
+}
--- a/modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/BeanAdapter.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/BeanAdapter.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,9 +40,9 @@
 import java.security.PrivilegedAction;
 
 import javafx.beans.value.ObservableValue;
-import sun.reflect.misc.FieldUtil;
-import sun.reflect.misc.MethodUtil;
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.FieldUtil;
+import com.sun.javafx.reflect.MethodUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  * Exposes Java Bean properties of an object via the {@link Map} interface.
--- a/modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/MethodHelper.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/MethodHelper.java	Fri Mar 23 15:06:54 2018 +0530
@@ -30,7 +30,7 @@
 import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  * Utility class to wrap method invocation.
--- a/modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/builder/ProxyBuilder.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.fxml/src/main/java/com/sun/javafx/fxml/builder/ProxyBuilder.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -45,8 +45,8 @@
 import java.util.TreeSet;
 import javafx.beans.NamedArg;
 import javafx.util.Builder;
-import sun.reflect.misc.ConstructorUtil;
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ConstructorUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  * Using this builder assumes that some of the constructors of desired class
--- a/modules/javafx.fxml/src/main/java/javafx/fxml/FXMLLoader.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.fxml/src/main/java/javafx/fxml/FXMLLoader.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -90,9 +90,9 @@
 import java.util.EnumMap;
 import java.util.Locale;
 import java.util.StringTokenizer;
-import sun.reflect.misc.ConstructorUtil;
-import sun.reflect.misc.MethodUtil;
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ConstructorUtil;
+import com.sun.javafx.reflect.MethodUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  * Loads an object hierarchy from an XML document.
--- a/modules/javafx.fxml/src/main/java/javafx/fxml/JavaFXBuilderFactory.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.fxml/src/main/java/javafx/fxml/JavaFXBuilderFactory.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -63,8 +63,8 @@
 import javafx.scene.text.Font;
 import javafx.util.Builder;
 import javafx.util.BuilderFactory;
-import sun.reflect.misc.ConstructorUtil;
-import sun.reflect.misc.MethodUtil;
+import com.sun.javafx.reflect.ConstructorUtil;
+import com.sun.javafx.reflect.MethodUtil;
 
 /**
  * JavaFX builder factory.
--- a/modules/javafx.web/src/ios/java/javafx/scene/web/ExportedJavaObject.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.web/src/ios/java/javafx/scene/web/ExportedJavaObject.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,8 +39,7 @@
 import java.security.PrivilegedAction;
 import java.security.PrivilegedExceptionAction;
 
-import sun.reflect.misc.MethodUtil;
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 
 // Java Object exported to JavaScript
--- a/modules/javafx.web/src/main/java/com/sun/webkit/MethodHelper.java	Thu Mar 22 14:11:26 2018 -0700
+++ b/modules/javafx.web/src/main/java/com/sun/webkit/MethodHelper.java	Fri Mar 23 15:06:54 2018 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@
 import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import sun.reflect.misc.ReflectUtil;
+import com.sun.javafx.reflect.ReflectUtil;
 
 /**
  * Utility class to wrap method invocation.