This commit is contained in:
walterhiggins 2014-03-11 19:57:40 +00:00
parent 30d1d89e91
commit 360b7df75b
3 changed files with 31 additions and 19 deletions

View File

@ -2,7 +2,7 @@
## Version 2.0.6
Fixed issues #122 #123
Fixed issues #115 #122 #123
Improved background processing of Drone build commands.

View File

@ -640,15 +640,7 @@ function __onEnable ( __engine, __plugin, __script )
global.self = sender;
global.__engine = __engine;
try {
if ( typeof eval == 'undefined' ) {
jsResult = __engine.eval(fnBody);
} else {
/*
nashorn
https://bugs.openjdk.java.net/browse/JDK-8034055
*/
jsResult = eval( fnBody );
}
jsResult = __engine.eval(fnBody);
if ( typeof jsResult != 'undefined' ) {
if ( jsResult == null) {
sender.sendMessage('(null)');
@ -661,8 +653,13 @@ function __onEnable ( __engine, __plugin, __script )
sender.sendMessage( 'Error while trying to evaluate javascript: ' + fnBody + ', Error: '+ e );
throw e;
} finally {
delete global.self;
delete global.__engine;
/*
wph 20140312 don't delete self on nashorn until https://bugs.openjdk.java.net/browse/JDK-8034055 is fixed
*/
if ( typeof Java === 'undefined' ) { // Java is an object in Nashorn
delete global.self;
delete global.__engine;
}
}
}
if ( cmdName == 'jsp' ) {

View File

@ -36,6 +36,15 @@ var _getProperties = function( o ) {
typeofProperty;
if ( _isJavaObject( o ) ) {
/*
fix for issue #115 - java objects are not iterable
see: http://mail.openjdk.java.net/pipermail/nashorn-dev/2014-March/002790.html
*/
if ( typeof Object.bindProperties === 'function' ) {
var placeholder = {};
Object.bindProperties(placeholder, o);
o = placeholder;
}
propertyLoop:
for ( i in o ) {
//
@ -45,7 +54,7 @@ var _getProperties = function( o ) {
for ( j = 0; j < _javaLangObjectMethods.length; j++ ) {
if ( _javaLangObjectMethods[j] == i ) {
continue propertyLoop;
}
}
}
typeofProperty = null;
try {
@ -71,9 +80,9 @@ var _getProperties = function( o ) {
if ( i.match( /^[^_]/ ) ) {
if ( typeof o[i] == 'function' ) {
result.push( i+'()' );
} else {
} else {
result.push( i );
}
}
}
}
}
@ -130,6 +139,8 @@ var onTabCompleteJS = function( result, cmdSender, pluginCmd, cmdAlias, cmdArgs
symbol = global[name];
//print('DEBUG: name=' + name + ',symbol=' + symbol);
lastGoodSymbol = symbol;
if ( typeof symbol !== 'undefined' ) {
for ( i = 1; i < parts.length; i++ ) {
@ -140,10 +151,14 @@ var onTabCompleteJS = function( result, cmdSender, pluginCmd, cmdAlias, cmdArgs
symbol = symbol[name]; // this causes problem in jre8 if name is ''
if ( typeof symbol == 'undefined' ) {
break;
}
}
// nashorn - object[missingProperty] returns null not undefined
if ( symbol == null ) {
break;
}
lastGoodSymbol = symbol;
}
if ( typeof symbol == 'undefined' ) {
if ( typeof symbol == 'undefined' || symbol === null) {
//
// look up partial matches against last good symbol
//
@ -165,8 +180,8 @@ var onTabCompleteJS = function( result, cmdSender, pluginCmd, cmdAlias, cmdArgs
//
//print('debug:case Y: ScriptCraft.co');
li = statement.lastIndexOf(name);
for ( i = 0; i < objectProps.length; i++ ) {
li = statement.lastIndexOf(name);
for ( i = 0; i < objectProps.length; i++ ) {
if ( objectProps[i].indexOf(name) == 0 ) {
candidate = lastSymbol.substring( 0, lastSymbol.lastIndexOf( name ) );
candidate = candidate + objectProps[i];