8020820: Limit access to static members of reflective classes

Thu, 18 Jul 2013 16:47:45 +0200

author
attila
date
Thu, 18 Jul 2013 16:47:45 +0200
changeset 458
4b06441b7624
parent 457
624f8be5c3fe
child 459
0cfa27ed82fe

8020820: Limit access to static members of reflective classes
Reviewed-by: jlaskey, sundar

make/build.xml file | annotate | diff | comparison | revisions
src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java file | annotate | diff | comparison | revisions
test/script/basic/JDK-8010946-2.js file | annotate | diff | comparison | revisions
test/script/basic/JDK-8010946-2.js.EXPECTED file | annotate | diff | comparison | revisions
test/script/basic/NASHORN-473.js file | annotate | diff | comparison | revisions
test/script/basic/classloader.js file | annotate | diff | comparison | revisions
test/script/basic/classloader.js.EXPECTED file | annotate | diff | comparison | revisions
test/script/basic/javaarray.js file | annotate | diff | comparison | revisions
test/script/sandbox/classloader.js.EXPECTED file | annotate | diff | comparison | revisions
test/script/sandbox/reflection.js file | annotate | diff | comparison | revisions
test/src/jdk/nashorn/api/javaaccess/BooleanAccessTest.java file | annotate | diff | comparison | revisions
test/src/jdk/nashorn/api/javaaccess/NumberAccessTest.java file | annotate | diff | comparison | revisions
test/src/jdk/nashorn/api/javaaccess/ObjectAccessTest.java file | annotate | diff | comparison | revisions
test/src/jdk/nashorn/api/javaaccess/StringAccessTest.java file | annotate | diff | comparison | revisions
     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';" +

mercurial