8026248: importClass has to be a varargs function
Reviewed-by: jlaskey, hannesw
This commit is contained in:
parent
d5dda0a437
commit
8cf4738031
@ -41,7 +41,12 @@ Object.defineProperty(this, "JavaAdapter", {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// importPackage
|
||||
// avoid unnecessary chaining of __noSuchProperty__ again
|
||||
// in case user loads this script more than once.
|
||||
if (typeof importPackage == 'undefined') {
|
||||
|
||||
Object.defineProperty(this, "importPackage", {
|
||||
configurable: true, enumerable: false, writable: true,
|
||||
value: (function() {
|
||||
@ -91,6 +96,8 @@ Object.defineProperty(this, "importPackage", {
|
||||
})()
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Object.prototype.__defineGetter__
|
||||
Object.defineProperty(Object.prototype, "__defineGetter__", {
|
||||
configurable: true, enumerable: false, writable: true,
|
||||
@ -344,13 +351,16 @@ Object.defineProperty(String.prototype, "sup", {
|
||||
// Rhino: global.importClass
|
||||
Object.defineProperty(this, "importClass", {
|
||||
configurable: true, enumerable: false, writable: true,
|
||||
value: function(clazz) {
|
||||
if (Java.isType(clazz)) {
|
||||
var className = Java.typeName(clazz);
|
||||
var simpleName = className.substring(className.lastIndexOf('.') + 1);
|
||||
this[simpleName] = clazz;
|
||||
} else {
|
||||
throw new TypeError(clazz + " is not a Java class");
|
||||
value: function() {
|
||||
for (var arg in arguments) {
|
||||
var clazz = arguments[arg];
|
||||
if (Java.isType(clazz)) {
|
||||
var className = Java.typeName(clazz);
|
||||
var simpleName = className.substring(className.lastIndexOf('.') + 1);
|
||||
this[simpleName] = clazz;
|
||||
} else {
|
||||
throw new TypeError(clazz + " is not a Java class");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
51
nashorn/test/script/basic/JDK-8026248.js
Normal file
51
nashorn/test/script/basic/JDK-8026248.js
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 2010, 2013, 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.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* JDK-8026248: importClass has to be a varargs function
|
||||
*
|
||||
* @test
|
||||
* @run
|
||||
*/
|
||||
|
||||
load('nashorn:mozilla_compat.js')
|
||||
|
||||
importClass(java.io.File, java.io.InputStream)
|
||||
|
||||
print(File)
|
||||
print(InputStream)
|
||||
|
||||
importClass(java.util.Map, java.util.HashMap, java.io.PrintStream)
|
||||
|
||||
print(HashMap)
|
||||
print(Map)
|
||||
print(PrintStream)
|
||||
|
||||
importClass.call(this, java.util.Collections, java.util.List);
|
||||
print(Collections)
|
||||
print(List)
|
||||
|
||||
importClass.apply(this, [ java.util.Queue, java.math.BigInteger, java.math.BigDecimal ]);
|
||||
print(Queue)
|
||||
print(BigInteger)
|
||||
print(BigDecimal)
|
10
nashorn/test/script/basic/JDK-8026248.js.EXPECTED
Normal file
10
nashorn/test/script/basic/JDK-8026248.js.EXPECTED
Normal file
@ -0,0 +1,10 @@
|
||||
[JavaClass java.io.File]
|
||||
[JavaClass java.io.InputStream]
|
||||
[JavaClass java.util.HashMap]
|
||||
[JavaClass java.util.Map]
|
||||
[JavaClass java.io.PrintStream]
|
||||
[JavaClass java.util.Collections]
|
||||
[JavaClass java.util.List]
|
||||
[JavaClass java.util.Queue]
|
||||
[JavaClass java.math.BigInteger]
|
||||
[JavaClass java.math.BigDecimal]
|
Loading…
x
Reference in New Issue
Block a user