Thu, 18 Jul 2013 16:47:45 +0200
8020820: Limit access to static members of reflective classes
Reviewed-by: jlaskey, sundar
1.1 --- a/make/build.xml Thu Jul 18 16:22:25 2013 +0200 1.2 +++ b/make/build.xml Thu Jul 18 16:47:45 2013 +0200 1.3 @@ -267,6 +267,11 @@ 1.4 grant codeBase "file:/${basedir}/test/script/basic/JDK-8010946-privileged.js" { 1.5 permission java.util.PropertyPermission "java.security.policy", "read"; 1.6 }; 1.7 + 1.8 +grant codeBase "file:/${basedir}/test/script/basic/classloader.js" { 1.9 + permission java.lang.RuntimePermission "nashorn.JavaReflection"; 1.10 +}; 1.11 + 1.12 </echo> 1.13 1.14 <replace file="${build.dir}/nashorn.policy"><replacetoken>\</replacetoken><replacevalue>/</replacevalue></replace> <!--hack for Windows - to make URLs with normal path separators -->
2.1 --- a/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java Thu Jul 18 16:22:25 2013 +0200 2.2 +++ b/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java Thu Jul 18 16:47:45 2013 +0200 2.3 @@ -63,10 +63,11 @@ 2.4 if (self.getClass() != StaticClass.class) { 2.5 return null; 2.6 } 2.7 + final Class<?> receiverClass = ((StaticClass) self).getRepresentedClass(); 2.8 + Bootstrap.checkReflectionAccess(receiverClass); 2.9 final CallSiteDescriptor desc = request.getCallSiteDescriptor(); 2.10 // We intercept "new" on StaticClass instances to provide additional capabilities 2.11 if ("new".equals(desc.getNameToken(CallSiteDescriptor.OPERATOR))) { 2.12 - final Class<?> receiverClass = ((StaticClass) self).getRepresentedClass(); 2.13 // Is the class abstract? (This includes interfaces.) 2.14 if (NashornLinker.isAbstractClass(receiverClass)) { 2.15 // Change this link request into a link request on the adapter class.
3.1 --- a/test/script/basic/JDK-8010946-2.js Thu Jul 18 16:22:25 2013 +0200 3.2 +++ b/test/script/basic/JDK-8010946-2.js Thu Jul 18 16:47:45 2013 +0200 3.3 @@ -30,9 +30,8 @@ 3.4 * @run 3.5 */ 3.6 3.7 -// Ensure these are CallerSensitiveDynamicMethods 3.8 +// Ensure this is CallerSensitiveDynamicMethod 3.9 print(java.security.AccessController["doPrivileged(PrivilegedAction)"]) 3.10 -print(java.lang.Class["forName(String)"]) 3.11 3.12 // Ensure this is not 3.13 print(java.lang.String["valueOf(char)"])
4.1 --- a/test/script/basic/JDK-8010946-2.js.EXPECTED Thu Jul 18 16:22:25 2013 +0200 4.2 +++ b/test/script/basic/JDK-8010946-2.js.EXPECTED Thu Jul 18 16:47:45 2013 +0200 4.3 @@ -1,3 +1,2 @@ 4.4 [jdk.internal.dynalink.beans.CallerSensitiveDynamicMethod Object java.security.AccessController.doPrivileged(PrivilegedAction)] 4.5 -[jdk.internal.dynalink.beans.CallerSensitiveDynamicMethod Class java.lang.Class.forName(String)] 4.6 [jdk.internal.dynalink.beans.SimpleDynamicMethod String java.lang.String.valueOf(char)]
5.1 --- a/test/script/basic/NASHORN-473.js Thu Jul 18 16:22:25 2013 +0200 5.2 +++ b/test/script/basic/NASHORN-473.js Thu Jul 18 16:47:45 2013 +0200 5.3 @@ -28,7 +28,7 @@ 5.4 * @run 5.5 */ 5.6 5.7 -var boolArr = java.lang.reflect.Array.newInstance(java.lang.Boolean.TYPE, 2); 5.8 +var boolArr = new (Java.type("boolean[]"))(2); 5.9 boolArr[0] = true; 5.10 boolArr[1] = false; 5.11
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/test/script/basic/classloader.js Thu Jul 18 16:47:45 2013 +0200 6.3 @@ -0,0 +1,41 @@ 6.4 +/* 6.5 + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 6.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 6.7 + * 6.8 + * This code is free software; you can redistribute it and/or modify it 6.9 + * under the terms of the GNU General Public License version 2 only, as 6.10 + * published by the Free Software Foundation. 6.11 + * 6.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 6.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 6.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 6.15 + * version 2 for more details (a copy is included in the LICENSE file that 6.16 + * accompanied this code). 6.17 + * 6.18 + * You should have received a copy of the GNU General Public License version 6.19 + * 2 along with this work; if not, write to the Free Software Foundation, 6.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 6.21 + * 6.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 6.23 + * or visit www.oracle.com if you need additional information or have any 6.24 + * questions. 6.25 + */ 6.26 + 6.27 +/** 6.28 + * Try to extend ClassLoader. 6.29 + * 6.30 + * @test 6.31 + * @security 6.32 + */ 6.33 + 6.34 +try { 6.35 + var l = new (Java.extend(java.lang.ClassLoader))({}); 6.36 + fail("should have thrown SecurityException"); 6.37 +} catch (e) { 6.38 + if (e instanceof java.lang.SecurityException) { 6.39 + print(e); 6.40 + } else { 6.41 + fail("expected SecurityException, got " + e); 6.42 + } 6.43 +} 6.44 +
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 7.2 +++ b/test/script/basic/classloader.js.EXPECTED Thu Jul 18 16:47:45 2013 +0200 7.3 @@ -0,0 +1,1 @@ 7.4 +java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")
8.1 --- a/test/script/basic/javaarray.js Thu Jul 18 16:22:25 2013 +0200 8.2 +++ b/test/script/basic/javaarray.js Thu Jul 18 16:47:45 2013 +0200 8.3 @@ -30,7 +30,7 @@ 8.4 8.5 (function() { 8.6 var nargs = arguments.length; 8.7 - var args = java.lang.reflect.Array.newInstance(java.lang.Object.class, nargs); 8.8 + var args = new (Java.type("java.lang.Object[]"))(nargs); 8.9 print(args.length); 8.10 for (var i = 0; i < nargs; i++) { 8.11 var arg = arguments[i]; 8.12 @@ -41,7 +41,7 @@ 8.13 8.14 var z; // undefined 8.15 8.16 -var intArray = java.lang.reflect.Array.newInstance(java.lang.Integer.TYPE, 1); 8.17 +var intArray = new (Java.type("int[]"))(1); 8.18 intArray[0] = 10; 8.19 print(intArray[0]); 8.20 print(intArray.length); 8.21 @@ -50,19 +50,19 @@ 8.22 intArray[0] = 10.1; 8.23 print(intArray[0]); 8.24 8.25 -var boolArray = java.lang.reflect.Array.newInstance(java.lang.Boolean.TYPE, 2); 8.26 +var boolArray = new (Java.type("boolean[]"))(2); 8.27 boolArray[0] = true; 8.28 print(boolArray[0]); 8.29 print(boolArray[1]); 8.30 print(boolArray.length); 8.31 8.32 -var charArray = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1); 8.33 +var charArray = new (Java.type("char[]"))(1); 8.34 charArray[0] = 'j'; 8.35 print(charArray[0]); 8.36 print(charArray.length); 8.37 8.38 8.39 -var doubleArray = java.lang.reflect.Array.newInstance(java.lang.Double.TYPE, 1) 8.40 +var doubleArray = new (Java.type("double[]"))(1) 8.41 doubleArray[0]=z 8.42 print(doubleArray[0]) 8.43 doubleArray[0]=1
9.1 --- a/test/script/sandbox/classloader.js.EXPECTED Thu Jul 18 16:22:25 2013 +0200 9.2 +++ b/test/script/sandbox/classloader.js.EXPECTED Thu Jul 18 16:47:45 2013 +0200 9.3 @@ -1,1 +1,1 @@ 9.4 -java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader") 9.5 +java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "nashorn.JavaReflection")
10.1 --- a/test/script/sandbox/reflection.js Thu Jul 18 16:22:25 2013 +0200 10.2 +++ b/test/script/sandbox/reflection.js Thu Jul 18 16:47:45 2013 +0200 10.3 @@ -35,9 +35,8 @@ 10.4 } 10.5 } 10.6 10.7 -var cl = java.lang.Class.class; 10.8 try { 10.9 - cl.getDeclaredMethods(); 10.10 + var cl = java.lang.Class.class; 10.11 } catch(e) { 10.12 check(e); 10.13 }
11.1 --- a/test/src/jdk/nashorn/api/javaaccess/BooleanAccessTest.java Thu Jul 18 16:22:25 2013 +0200 11.2 +++ b/test/src/jdk/nashorn/api/javaaccess/BooleanAccessTest.java Thu Jul 18 16:47:45 2013 +0200 11.3 @@ -72,7 +72,7 @@ 11.4 e.eval("var p_boolean_array = o.publicBooleanArray;"); 11.5 assertEquals(o.publicBooleanArray[0], e.eval("o.publicBooleanArray[0]")); 11.6 assertTrue(Arrays.equals(o.publicBooleanArray, (boolean[])e.get("p_boolean_array"))); 11.7 - e.eval("var t_boolean_arr = java.lang.reflect.Array.newInstance(java.lang.Boolean.TYPE, 3);" + 11.8 + e.eval("var t_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 11.9 "t_boolean_arr[0] = true;" + 11.10 "t_boolean_arr[1] = false;" + 11.11 "t_boolean_arr[2] = false;" + 11.12 @@ -96,7 +96,7 @@ 11.13 e.eval("var ps_boolean_array = SharedObject.publicStaticBooleanArray;"); 11.14 assertEquals(SharedObject.publicStaticBooleanArray[0], e.eval("SharedObject.publicStaticBooleanArray[0]")); 11.15 assertTrue(Arrays.equals(SharedObject.publicStaticBooleanArray, (boolean[])e.get("ps_boolean_array"))); 11.16 - e.eval("var ts_boolean_arr = java.lang.reflect.Array.newInstance(java.lang.Boolean.TYPE, 3);" + 11.17 + e.eval("var ts_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 11.18 "ts_boolean_arr[0] = true;" + 11.19 "ts_boolean_arr[1] = false;" + 11.20 "ts_boolean_arr[2] = true;" + 11.21 @@ -120,7 +120,7 @@ 11.22 e.eval("var pf_boolean_array = o.publicFinalBooleanArray;"); 11.23 assertEquals(o.publicFinalBooleanArray[0], e.eval("o.publicFinalBooleanArray[0]")); 11.24 assertTrue(Arrays.equals(o.publicFinalBooleanArray, (boolean[])e.get("pf_boolean_array"))); 11.25 - e.eval("var tf_boolean_arr = java.lang.reflect.Array.newInstance(java.lang.Boolean.TYPE, 3);" + 11.26 + e.eval("var tf_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 11.27 "tf_boolean_arr[0] = false;" + 11.28 "tf_boolean_arr[1] = false;" + 11.29 "tf_boolean_arr[2] = true;" + 11.30 @@ -144,7 +144,7 @@ 11.31 e.eval("var psf_boolean_array = SharedObject.publicStaticFinalBooleanArray;"); 11.32 assertEquals(SharedObject.publicStaticFinalBooleanArray[0], e.eval("SharedObject.publicStaticFinalBooleanArray[0]")); 11.33 assertTrue(Arrays.equals(SharedObject.publicStaticFinalBooleanArray, (boolean[])e.get("psf_boolean_array"))); 11.34 - e.eval("var tsf_boolean_arr = java.lang.reflect.Array.newInstance(java.lang.Boolean.TYPE, 3);" + 11.35 + e.eval("var tsf_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 11.36 "tsf_boolean_arr[0] = false;" + 11.37 "tsf_boolean_arr[1] = true;" + 11.38 "tsf_boolean_arr[2] = false;" +
12.1 --- a/test/src/jdk/nashorn/api/javaaccess/NumberAccessTest.java Thu Jul 18 16:22:25 2013 +0200 12.2 +++ b/test/src/jdk/nashorn/api/javaaccess/NumberAccessTest.java Thu Jul 18 16:47:45 2013 +0200 12.3 @@ -73,7 +73,7 @@ 12.4 e.eval("var p_long_array = o.publicLongArray;"); 12.5 assertEquals(o.publicLongArray[0], e.eval("o.publicLongArray[0];")); 12.6 assertArrayEquals(o.publicLongArray, (long[])e.get("p_long_array")); 12.7 - e.eval("var t_long_arr = java.lang.reflect.Array.newInstance(java.lang.Long.TYPE, 3);" + 12.8 + e.eval("var t_long_arr = new (Java.type(\"long[]\"))(3);" + 12.9 "t_long_arr[0] = -189009;" + 12.10 "t_long_arr[1] = 456;" + 12.11 "t_long_arr[2] = 600000001;" + 12.12 @@ -97,7 +97,7 @@ 12.13 e.eval("var ps_long_array = SharedObject.publicStaticLongArray;"); 12.14 assertEquals(SharedObject.publicStaticLongArray[0], e.eval("SharedObject.publicStaticLongArray[0];")); 12.15 assertArrayEquals(SharedObject.publicStaticLongArray, (long[])e.get("ps_long_array")); 12.16 - e.eval("var ts_long_arr = java.lang.reflect.Array.newInstance(java.lang.Long.TYPE, 3);" + 12.17 + e.eval("var ts_long_arr = new (Java.type(\"long[]\"))(3);" + 12.18 "ts_long_arr[0] = -189009;" + 12.19 "ts_long_arr[1] = 456;" + 12.20 "ts_long_arr[2] = 600000001;" + 12.21 @@ -121,7 +121,7 @@ 12.22 e.eval("var pf_long_array = o.publicFinalLongArray;"); 12.23 assertEquals(o.publicFinalLongArray[0], e.eval("o.publicFinalLongArray[0];")); 12.24 assertArrayEquals(o.publicFinalLongArray, (long[])e.get("pf_long_array")); 12.25 - e.eval("var tf_long_arr = java.lang.reflect.Array.newInstance(java.lang.Long.TYPE, 3);" + 12.26 + e.eval("var tf_long_arr = new (Java.type(\"long[]\"))(3);" + 12.27 "tf_long_arr[0] = -189009;" + 12.28 "tf_long_arr[1] = 456;" + 12.29 "tf_long_arr[2] = 600000001;" + 12.30 @@ -145,7 +145,7 @@ 12.31 e.eval("var psf_long_array = SharedObject.publicStaticFinalLongArray;"); 12.32 assertEquals(SharedObject.publicStaticFinalLongArray[0], e.eval("SharedObject.publicStaticFinalLongArray[0];")); 12.33 assertArrayEquals(SharedObject.publicStaticFinalLongArray, (long[])e.get("psf_long_array")); 12.34 - e.eval("var tsf_long_arr = java.lang.reflect.Array.newInstance(java.lang.Long.TYPE, 3);" + 12.35 + e.eval("var tsf_long_arr = new (Java.type(\"long[]\"))(3);" + 12.36 "tsf_long_arr[0] = -189009;" + 12.37 "tsf_long_arr[1] = 456;" + 12.38 "tsf_long_arr[2] = 600000001;" + 12.39 @@ -171,7 +171,7 @@ 12.40 e.eval("var p_int_array = o.publicIntArray;"); 12.41 assertEquals(o.publicIntArray[0], e.eval("o.publicIntArray[0];")); 12.42 assertArrayEquals(o.publicIntArray, (int[])e.get("p_int_array")); 12.43 - e.eval("var t_int_arr = java.lang.reflect.Array.newInstance(java.lang.Integer.TYPE, 3);" + 12.44 + e.eval("var t_int_arr = new (Java.type(\"int[]\"))(3);" + 12.45 "t_int_arr[0] = 4;" + 12.46 "t_int_arr[1] = 5;" + 12.47 "t_int_arr[2] = 6;" + 12.48 @@ -194,7 +194,7 @@ 12.49 e.eval("var ps_int_array = SharedObject.publicStaticIntArray;"); 12.50 assertEquals(SharedObject.publicStaticIntArray[0], e.eval("SharedObject.publicStaticIntArray[0];")); 12.51 assertArrayEquals(SharedObject.publicStaticIntArray, (int[])e.get("ps_int_array")); 12.52 - e.eval("var ts_int_arr = java.lang.reflect.Array.newInstance(java.lang.Integer.TYPE, 3);" + 12.53 + e.eval("var ts_int_arr = new (Java.type(\"int[]\"))(3);" + 12.54 "ts_int_arr[0] = 4;" + 12.55 "ts_int_arr[1] = 5;" + 12.56 "ts_int_arr[2] = 6;" + 12.57 @@ -218,7 +218,7 @@ 12.58 e.eval("var pf_int_array = o.publicFinalIntArray;"); 12.59 assertEquals(o.publicFinalIntArray[0], e.eval("o.publicFinalIntArray[0];")); 12.60 assertArrayEquals(o.publicFinalIntArray, (int[])e.get("pf_int_array")); 12.61 - e.eval("var tf_int_arr = java.lang.reflect.Array.newInstance(java.lang.Integer.TYPE, 3);" + 12.62 + e.eval("var tf_int_arr = new (Java.type(\"int[]\"))(3);" + 12.63 "tf_int_arr[0] = 4;" + 12.64 "tf_int_arr[1] = 5;" + 12.65 "tf_int_arr[2] = 6;" + 12.66 @@ -241,7 +241,7 @@ 12.67 e.eval("var psf_int_array = SharedObject.publicStaticFinalIntArray;"); 12.68 assertEquals(SharedObject.publicStaticFinalIntArray[0], e.eval("SharedObject.publicStaticFinalIntArray[0];")); 12.69 assertArrayEquals(SharedObject.publicStaticFinalIntArray, (int[])e.get("psf_int_array")); 12.70 - e.eval("var tsf_int_arr = java.lang.reflect.Array.newInstance(java.lang.Integer.TYPE, 3);" + 12.71 + e.eval("var tsf_int_arr = new (Java.type(\"int[]\"))(3);" + 12.72 "tsf_int_arr[0] = 4;" + 12.73 "tsf_int_arr[1] = 5;" + 12.74 "tsf_int_arr[2] = 6;" + 12.75 @@ -266,7 +266,7 @@ 12.76 e.eval("var p_byte_array = o.publicByteArray;"); 12.77 assertEquals(o.publicByteArray[0], e.eval("o.publicByteArray[0];")); 12.78 assertArrayEquals(o.publicByteArray, (byte[])e.get("p_byte_array")); 12.79 - e.eval("var t_byte_arr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 3);" + 12.80 + e.eval("var t_byte_arr = new (Java.type(\"byte[]\"))(3);" + 12.81 "t_byte_arr[0] = -18;" + 12.82 "t_byte_arr[1] = 56;" + 12.83 "t_byte_arr[2] = 60;" + 12.84 @@ -289,7 +289,7 @@ 12.85 e.eval("var ps_byte_array = SharedObject.publicStaticByteArray;"); 12.86 assertEquals(SharedObject.publicStaticByteArray[0], e.eval("SharedObject.publicStaticByteArray[0];")); 12.87 assertArrayEquals(SharedObject.publicStaticByteArray, (byte[])e.get("ps_byte_array")); 12.88 - e.eval("var ts_byte_arr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 3);" + 12.89 + e.eval("var ts_byte_arr = new (Java.type(\"byte[]\"))(3);" + 12.90 "ts_byte_arr[0] = -18;" + 12.91 "ts_byte_arr[1] = 56;" + 12.92 "ts_byte_arr[2] = 60;" + 12.93 @@ -312,7 +312,7 @@ 12.94 e.eval("var pf_byte_array = o.publicFinalByteArray;"); 12.95 assertEquals(o.publicFinalByteArray[0], e.eval("o.publicFinalByteArray[0];")); 12.96 assertArrayEquals(o.publicFinalByteArray, (byte[])e.get("pf_byte_array")); 12.97 - e.eval("var tf_byte_arr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 3);" + 12.98 + e.eval("var tf_byte_arr = new (Java.type(\"byte[]\"))(3);" + 12.99 "tf_byte_arr[0] = -18;" + 12.100 "tf_byte_arr[1] = 56;" + 12.101 "tf_byte_arr[2] = 60;" + 12.102 @@ -335,7 +335,7 @@ 12.103 e.eval("var psf_byte_array = SharedObject.publicStaticFinalByteArray;"); 12.104 assertEquals(SharedObject.publicStaticFinalByteArray[0], e.eval("SharedObject.publicStaticFinalByteArray[0];")); 12.105 assertArrayEquals(SharedObject.publicStaticFinalByteArray, (byte[])e.get("psf_byte_array")); 12.106 - e.eval("var tsf_byte_arr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 3);" + 12.107 + e.eval("var tsf_byte_arr = new (Java.type(\"byte[]\"))(3);" + 12.108 "tsf_byte_arr[0] = -18;" + 12.109 "tsf_byte_arr[1] = 56;" + 12.110 "tsf_byte_arr[2] = 60;" + 12.111 @@ -360,7 +360,7 @@ 12.112 e.eval("var p_short_array = o.publicShortArray;"); 12.113 assertEquals(o.publicShortArray[0], e.eval("o.publicShortArray[0];")); 12.114 assertArrayEquals(o.publicShortArray, (short[])e.get("p_short_array")); 12.115 - e.eval("var t_short_arr = java.lang.reflect.Array.newInstance(java.lang.Short.TYPE, 3);" + 12.116 + e.eval("var t_short_arr = new (Java.type(\"short[]\"))(3);" + 12.117 "t_short_arr[0] = 90;" + 12.118 "t_short_arr[1] = 5;" + 12.119 "t_short_arr[2] = -6000;" + 12.120 @@ -383,7 +383,7 @@ 12.121 e.eval("var ps_short_array = SharedObject.publicStaticShortArray;"); 12.122 assertEquals(SharedObject.publicStaticShortArray[0], e.eval("SharedObject.publicStaticShortArray[0];")); 12.123 assertArrayEquals(SharedObject.publicStaticShortArray, (short[])e.get("ps_short_array")); 12.124 - e.eval("var ts_short_arr = java.lang.reflect.Array.newInstance(java.lang.Short.TYPE, 3);" + 12.125 + e.eval("var ts_short_arr = new (Java.type(\"short[]\"))(3);" + 12.126 "ts_short_arr[0] = 90;" + 12.127 "ts_short_arr[1] = 5;" + 12.128 "ts_short_arr[2] = -6000;" + 12.129 @@ -406,7 +406,7 @@ 12.130 e.eval("var pf_short_array = o.publicFinalShortArray;"); 12.131 assertEquals(o.publicFinalShortArray[0], e.eval("o.publicFinalShortArray[0];")); 12.132 assertArrayEquals(o.publicFinalShortArray, (short[])e.get("pf_short_array")); 12.133 - e.eval("var tf_short_arr = java.lang.reflect.Array.newInstance(java.lang.Short.TYPE, 3);" + 12.134 + e.eval("var tf_short_arr = new (Java.type(\"short[]\"))(3);" + 12.135 "tf_short_arr[0] = 90;" + 12.136 "tf_short_arr[1] = 5;" + 12.137 "tf_short_arr[2] = -6000;" + 12.138 @@ -429,7 +429,7 @@ 12.139 e.eval("var psf_short_array = SharedObject.publicStaticFinalShortArray;"); 12.140 assertEquals(SharedObject.publicStaticFinalShortArray[0], e.eval("SharedObject.publicStaticFinalShortArray[0];")); 12.141 assertArrayEquals(SharedObject.publicStaticFinalShortArray, (short[])e.get("psf_short_array")); 12.142 - e.eval("var tsf_short_arr = java.lang.reflect.Array.newInstance(java.lang.Short.TYPE, 3);" + 12.143 + e.eval("var tsf_short_arr = new (Java.type(\"short[]\"))(3);" + 12.144 "tsf_short_arr[0] = 90;" + 12.145 "tsf_short_arr[1] = 5;" + 12.146 "tsf_short_arr[2] = -6000;" + 12.147 @@ -463,7 +463,7 @@ 12.148 e.eval("var p_char_array = o.publicCharArray;"); 12.149 assertEquals(o.publicCharArray[0], e.eval("o.publicCharArray[0];")); 12.150 assertArrayEquals(o.publicCharArray, (char[])e.get("p_char_array")); 12.151 - e.eval("var t_char_arr = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 3);" + 12.152 + e.eval("var t_char_arr = new (Java.type(\"char[]\"))(3);" + 12.153 "t_char_arr[0] = 'F';" + 12.154 "t_char_arr[1] = 'o';" + 12.155 "t_char_arr[2] = 'o';" + 12.156 @@ -486,7 +486,7 @@ 12.157 e.eval("var ps_char_array = SharedObject.publicStaticCharArray;"); 12.158 assertEquals(SharedObject.publicStaticCharArray[0], e.eval("SharedObject.publicStaticCharArray[0];")); 12.159 assertArrayEquals(SharedObject.publicStaticCharArray, (char[])e.get("ps_char_array")); 12.160 - e.eval("var ts_char_arr = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 3);" + 12.161 + e.eval("var ts_char_arr = new (Java.type(\"char[]\"))(3);" + 12.162 "ts_char_arr[0] = 'G';" + 12.163 "ts_char_arr[1] = 'o';" + 12.164 "ts_char_arr[2] = 'o';" + 12.165 @@ -509,7 +509,7 @@ 12.166 e.eval("var pf_char_array = o.publicFinalCharArray;"); 12.167 assertEquals(o.publicFinalCharArray[0], e.eval("o.publicFinalCharArray[0];")); 12.168 assertArrayEquals(o.publicFinalCharArray, (char[])e.get("pf_char_array")); 12.169 - e.eval("var tf_char_arr = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 3);" + 12.170 + e.eval("var tf_char_arr = new (Java.type(\"char[]\"))(3);" + 12.171 "tf_char_arr[0] = 'F';" + 12.172 "tf_char_arr[1] = 'o';" + 12.173 "tf_char_arr[2] = 'o';" + 12.174 @@ -532,7 +532,7 @@ 12.175 e.eval("var psf_char_array = SharedObject.publicStaticFinalCharArray;"); 12.176 assertEquals(SharedObject.publicStaticFinalCharArray[0], e.eval("SharedObject.publicStaticFinalCharArray[0];")); 12.177 assertArrayEquals(SharedObject.publicStaticFinalCharArray, (char[])e.get("psf_char_array")); 12.178 - e.eval("var tsf_char_arr = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 3);" + 12.179 + e.eval("var tsf_char_arr = new (Java.type(\"char[]\"))(3);" + 12.180 "tsf_char_arr[0] = 'Z';" + 12.181 "tsf_char_arr[1] = 'o';" + 12.182 "tsf_char_arr[2] = 'o';" + 12.183 @@ -569,7 +569,7 @@ 12.184 e.eval("var p_float_array = o.publicFloatArray;"); 12.185 assertEquals(o.publicFloatArray[0], e.eval("o.publicFloatArray[0];")); 12.186 assertArrayEquals(o.publicFloatArray, (float[])e.get("p_float_array"), 1e-10f); 12.187 - e.eval("var t_float_arr = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 3);" + 12.188 + e.eval("var t_float_arr = new (Java.type(\"float[]\"))(3);" + 12.189 "t_float_arr[0] = 9.0;" + 12.190 "t_float_arr[1] = 5.12345;" + 12.191 "t_float_arr[2] = -60.03;" + 12.192 @@ -604,7 +604,7 @@ 12.193 e.eval("var ps_float_array = SharedObject.publicStaticFloatArray;"); 12.194 assertEquals(SharedObject.publicStaticFloatArray[0], e.eval("SharedObject.publicStaticFloatArray[0];")); 12.195 assertArrayEquals(SharedObject.publicStaticFloatArray, (float[])e.get("ps_float_array"), 1e-10f); 12.196 - e.eval("var ts_float_arr = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 3);" + 12.197 + e.eval("var ts_float_arr = new (Java.type(\"float[]\"))(3);" + 12.198 "ts_float_arr[0] = 9.0;" + 12.199 "ts_float_arr[1] = 5.12345;" + 12.200 "ts_float_arr[2] = -60.03;" + 12.201 @@ -627,7 +627,7 @@ 12.202 e.eval("var pf_float_array = o.publicFinalFloatArray;"); 12.203 assertEquals(o.publicFinalFloatArray[0], e.eval("o.publicFinalFloatArray[0];")); 12.204 assertArrayEquals(o.publicFinalFloatArray, (float[])e.get("pf_float_array"), 1e-10f); 12.205 - e.eval("var tf_float_arr = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 3);" + 12.206 + e.eval("var tf_float_arr = new (Java.type(\"float[]\"))(3);" + 12.207 "tf_float_arr[0] = 9.0;" + 12.208 "tf_float_arr[1] = 5.12345;" + 12.209 "tf_float_arr[2] = -60.03;" + 12.210 @@ -650,7 +650,7 @@ 12.211 e.eval("var psf_float_array = SharedObject.publicStaticFinalFloatArray;"); 12.212 assertEquals(SharedObject.publicStaticFinalFloatArray[0], e.eval("SharedObject.publicStaticFinalFloatArray[0];")); 12.213 assertArrayEquals(SharedObject.publicStaticFinalFloatArray, (float[])e.get("psf_float_array"), 1e-10f); 12.214 - e.eval("var tsf_float_arr = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 3);" + 12.215 + e.eval("var tsf_float_arr = new (Java.type(\"float[]\"))(3);" + 12.216 "tsf_float_arr[0] = 9.0;" + 12.217 "tsf_float_arr[1] = 5.12345;" + 12.218 "tsf_float_arr[2] = -60.03;" + 12.219 @@ -687,7 +687,7 @@ 12.220 e.eval("var p_double_array = o.publicDoubleArray;"); 12.221 assertEquals(o.publicDoubleArray[0], e.eval("o.publicDoubleArray[0];")); 12.222 assertArrayEquals(o.publicDoubleArray, (double[])e.get("p_double_array"), 1e-10); 12.223 - e.eval("var t_double_arr = java.lang.reflect.Array.newInstance(java.lang.Double.TYPE, 3);" + 12.224 + e.eval("var t_double_arr = new (Java.type(\"double[]\"))(3);" + 12.225 "t_double_arr[0] = 9e10;" + 12.226 "t_double_arr[1] = 0.677777;" + 12.227 "t_double_arr[2] = -0.0000001;" + 12.228 @@ -722,7 +722,7 @@ 12.229 e.eval("var ps_double_array = SharedObject.publicStaticDoubleArray;"); 12.230 assertEquals(SharedObject.publicStaticDoubleArray[0], e.eval("SharedObject.publicStaticDoubleArray[0];")); 12.231 assertArrayEquals(SharedObject.publicStaticDoubleArray, (double[])e.get("ps_double_array"), 1e-10); 12.232 - e.eval("var ts_double_arr = java.lang.reflect.Array.newInstance(java.lang.Double.TYPE, 3);" + 12.233 + e.eval("var ts_double_arr = new (Java.type(\"double[]\"))(3);" + 12.234 "ts_double_arr[0] = 9e10;" + 12.235 "ts_double_arr[1] = 0.677777;" + 12.236 "ts_double_arr[2] = -0.0000001;" + 12.237 @@ -745,7 +745,7 @@ 12.238 e.eval("var pf_double_array = o.publicFinalDoubleArray;"); 12.239 assertEquals(o.publicFinalDoubleArray[0], e.eval("o.publicFinalDoubleArray[0];")); 12.240 assertArrayEquals(o.publicFinalDoubleArray, (double[])e.get("pf_double_array"), 1e-10); 12.241 - e.eval("var tf_double_arr = java.lang.reflect.Array.newInstance(java.lang.Double.TYPE, 3);" + 12.242 + e.eval("var tf_double_arr = new (Java.type(\"double[]\"))(3);" + 12.243 "tf_double_arr[0] = 9e10;" + 12.244 "tf_double_arr[1] = 0.677777;" + 12.245 "tf_double_arr[2] = -0.0000001;" + 12.246 @@ -768,7 +768,7 @@ 12.247 e.eval("var psf_double_array = SharedObject.publicStaticFinalDoubleArray;"); 12.248 assertEquals(SharedObject.publicStaticFinalDoubleArray[0], e.eval("SharedObject.publicStaticFinalDoubleArray[0];")); 12.249 assertArrayEquals(SharedObject.publicStaticFinalDoubleArray, (double[])e.get("psf_double_array"), 1e-10); 12.250 - e.eval("var tsf_double_arr = java.lang.reflect.Array.newInstance(java.lang.Double.TYPE, 3);" + 12.251 + e.eval("var tsf_double_arr = new (Java.type(\"double[]\"))(3);" + 12.252 "tsf_double_arr[0] = 9e10;" + 12.253 "tsf_double_arr[1] = 0.677777;" + 12.254 "tsf_double_arr[2] = -0.0000001;" +
13.1 --- a/test/src/jdk/nashorn/api/javaaccess/ObjectAccessTest.java Thu Jul 18 16:22:25 2013 +0200 13.2 +++ b/test/src/jdk/nashorn/api/javaaccess/ObjectAccessTest.java Thu Jul 18 16:47:45 2013 +0200 13.3 @@ -72,7 +72,7 @@ 13.4 e.eval("var p_object_array = o.publicObjectArray;"); 13.5 assertEquals(o.publicObjectArray[0], e.eval("o.publicObjectArray[0]")); 13.6 assertArrayEquals(o.publicObjectArray, (Object[])e.get("p_object_array")); 13.7 - e.eval("var t_object_arr = java.lang.reflect.Array.newInstance(Person.class, 3);" + 13.8 + e.eval("var t_object_arr = new (Java.type(\"jdk.nashorn.api.javaaccess.Person[]\"))(3);" + 13.9 "t_object_arr[0] = new Person(100);" + 13.10 "t_object_arr[1] = new Person(120);" + 13.11 "t_object_arr[2] = new Person(140);" + 13.12 @@ -96,7 +96,7 @@ 13.13 e.eval("var ps_object_array = SharedObject.publicStaticObjectArray;"); 13.14 assertEquals(SharedObject.publicStaticObjectArray[0], e.eval("SharedObject.publicStaticObjectArray[0]")); 13.15 assertArrayEquals(SharedObject.publicStaticObjectArray, (Object[])e.get("ps_object_array")); 13.16 - e.eval("var ts_object_arr = java.lang.reflect.Array.newInstance(Person.class, 3);" + 13.17 + e.eval("var ts_object_arr = new (Java.type(\"jdk.nashorn.api.javaaccess.Person[]\"))(3);" + 13.18 "ts_object_arr[0] = new Person(100);" + 13.19 "ts_object_arr[1] = new Person(120);" + 13.20 "ts_object_arr[2] = new Person(140);" + 13.21 @@ -120,7 +120,7 @@ 13.22 e.eval("var pf_object_array = o.publicFinalObjectArray;"); 13.23 assertEquals(o.publicFinalObjectArray[0], e.eval("o.publicFinalObjectArray[0]")); 13.24 assertArrayEquals(o.publicFinalObjectArray, (Object[])e.get("pf_object_array")); 13.25 - e.eval("var tf_object_arr = java.lang.reflect.Array.newInstance(Person.class, 3);" + 13.26 + e.eval("var tf_object_arr = new (Java.type(\"jdk.nashorn.api.javaaccess.Person[]\"))(3);" + 13.27 "tf_object_arr[0] = new Person(100);" + 13.28 "tf_object_arr[1] = new Person(120);" + 13.29 "tf_object_arr[2] = new Person(140);" + 13.30 @@ -144,7 +144,7 @@ 13.31 e.eval("var psf_object_array = SharedObject.publicStaticFinalObjectArray;"); 13.32 assertEquals(SharedObject.publicStaticFinalObjectArray[0], e.eval("SharedObject.publicStaticFinalObjectArray[0]")); 13.33 assertArrayEquals(SharedObject.publicStaticFinalObjectArray, (Object[])e.get("psf_object_array")); 13.34 - e.eval("var tsf_object_arr = java.lang.reflect.Array.newInstance(Person.class, 3);" + 13.35 + e.eval("var tsf_object_arr = new (Java.type(\"jdk.nashorn.api.javaaccess.Person[]\"))(3);" + 13.36 "tsf_object_arr[0] = new Person(100);" + 13.37 "tsf_object_arr[1] = new Person(120);" + 13.38 "tsf_object_arr[2] = new Person(140);" +
14.1 --- a/test/src/jdk/nashorn/api/javaaccess/StringAccessTest.java Thu Jul 18 16:22:25 2013 +0200 14.2 +++ b/test/src/jdk/nashorn/api/javaaccess/StringAccessTest.java Thu Jul 18 16:47:45 2013 +0200 14.3 @@ -71,7 +71,7 @@ 14.4 e.eval("var p_string_array = o.publicStringArray;"); 14.5 assertEquals(o.publicStringArray[0], e.eval("o.publicStringArray[0]")); 14.6 assertArrayEquals(o.publicStringArray, (String[])e.get("p_string_array")); 14.7 - e.eval("var t_string_arr = java.lang.reflect.Array.newInstance(java.lang.String.class, 3);" + 14.8 + e.eval("var t_string_arr = new (Java.type(\"java.lang.String[]\"))(3);" + 14.9 "t_string_arr[0] = 'abc';" + 14.10 "t_string_arr[1] = '123';" + 14.11 "t_string_arr[2] = 'xyzzzz';" + 14.12 @@ -95,7 +95,7 @@ 14.13 e.eval("var ps_string_array = SharedObject.publicStaticStringArray;"); 14.14 assertEquals(SharedObject.publicStaticStringArray[0], e.eval("SharedObject.publicStaticStringArray[0]")); 14.15 assertArrayEquals(SharedObject.publicStaticStringArray, (String[])e.get("ps_string_array")); 14.16 - e.eval("var ts_string_arr = java.lang.reflect.Array.newInstance(java.lang.String.class, 3);" + 14.17 + e.eval("var ts_string_arr = new (Java.type(\"java.lang.String[]\"))(3);" + 14.18 "ts_string_arr[0] = 'abc';" + 14.19 "ts_string_arr[1] = '123';" + 14.20 "ts_string_arr[2] = 'xyzzzz';" + 14.21 @@ -119,7 +119,7 @@ 14.22 e.eval("var pf_string_array = o.publicFinalStringArray;"); 14.23 assertEquals(o.publicFinalStringArray[0], e.eval("o.publicFinalStringArray[0]")); 14.24 assertArrayEquals(o.publicFinalStringArray, (String[])e.get("pf_string_array")); 14.25 - e.eval("var tf_string_arr = java.lang.reflect.Array.newInstance(java.lang.String.class, 3);" + 14.26 + e.eval("var tf_string_arr = new (Java.type(\"java.lang.String[]\"))(3);" + 14.27 "tf_string_arr[0] = 'abc';" + 14.28 "tf_string_arr[1] = '123';" + 14.29 "tf_string_arr[2] = 'xyzzzz';" + 14.30 @@ -143,7 +143,7 @@ 14.31 e.eval("var psf_string_array = SharedObject.publicStaticFinalStringArray;"); 14.32 assertEquals(SharedObject.publicStaticFinalStringArray[0], e.eval("SharedObject.publicStaticFinalStringArray[0]")); 14.33 assertArrayEquals(SharedObject.publicStaticFinalStringArray, (String[])e.get("psf_string_array")); 14.34 - e.eval("var tsf_string_arr = java.lang.reflect.Array.newInstance(java.lang.String.class, 3);" + 14.35 + e.eval("var tsf_string_arr = new (Java.type(\"java.lang.String[]\"))(3);" + 14.36 "tsf_string_arr[0] = 'abc';" + 14.37 "tsf_string_arr[1] = '123';" + 14.38 "tsf_string_arr[2] = 'xyzzzz';" +