diff --git a/core_api/ScriptingServices/core/threads.js b/core_api/ScriptingServices/core/threads.js index cbf99e8..29c1b3d 100644 --- a/core_api/ScriptingServices/core/threads.js +++ b/core_api/ScriptingServices/core/threads.js @@ -8,7 +8,7 @@ * SAP - initial API and implementation *******************************************************************************/ -/* globals $ java */ +/* globals $ java engine Java Packages */ /* eslint-env node, dirigible */ /** @@ -72,27 +72,52 @@ exports.current = function() { java.lang.Thread.currentThread(); }; +function getClassObject(clazz) { + var objClazz; + if (engine === "nashorn") { + var objType = Java.type(clazz); + objClazz = new objType().getClass(); + } else { + objClazz = java.lang.Class.forName(clazz); + } + return objClazz; +} + Object.prototype.wait = function(millis) { if (millis) { - var objClazz = java.lang.Class.forName('java.lang.Object'); + var objClazz = getClassObject('java.lang.Object'); var waitMethod = objClazz.getMethod('wait', java.lang.Long.TYPE); waitMethod.invoke(this, new java.lang.Long(millis)); } -} +}; Object.prototype.notify = function() { - var objClazz = java.lang.Class.forName('java.lang.Object'); + var objClazz = getClassObject('java.lang.Object'); var notifyMethod = objClazz.getMethod('notify', null); notifyMethod.invoke(this, null); -} +}; Object.prototype.notifyAll = function() { - var objClazz = java.lang.Class.forName('java.lang.Object'); + var objClazz = getClassObject('java.lang.Object'); var notifyAllMethod = objClazz.getMethod('notifyAll', null); notifyAllMethod.invoke(this, null); -} +}; exports.sync = function (f) { + if (engine === "nashorn") { + return Java.synchronized(f); + } return new Packages.org.mozilla.javascript.Synchronizer(f); -} +}; + +//// sync +//Object.prototype.sync = function(func, syncobj) { +// if (arguments.length < 1 || arguments.length > 2 ) { +// throw "sync(function [,object]) parameter count mismatch"; +// } +// if (engine === "nashorn") { +// return Java.synchronized(func, syncobj); +// } +// return new Packages.org.mozilla.javascript.Synchronizer(func); +//}; diff --git a/core_api/ScriptingServices/utils/uuid.js b/core_api/ScriptingServices/utils/uuid.js index 79a5c3a..bca3b1f 100644 --- a/core_api/ScriptingServices/utils/uuid.js +++ b/core_api/ScriptingServices/utils/uuid.js @@ -8,17 +8,16 @@ * SAP - initial API and implementation *******************************************************************************/ -/* globals $ java */ +/* globals $ java engine */ /* eslint-env node, dirigible */ exports.validate = function(uuid) { try { var uuidUtils = $.getUuidUtils(); - if (uuidUtils.fromString) { - uuidUtils.fromString(uuid).toString(); - } else { - // nashorn compatibility + if (engine === "nashorn") { uuidUtils.class.static.fromString(uuid).toString(); + } else { + uuidUtils.fromString(uuid).toString(); } return true; } catch(e) { @@ -31,10 +30,8 @@ exports.validate = function(uuid) { exports.random = function() { var uuidUtils = $.getUuidUtils(); - if (uuidUtils.randomUUID) { - return uuidUtils.randomUUID().toString(); - } else { - // nashorn + if (engine === "nashorn") { return uuidUtils.class.static.randomUUID().toString(); } + return uuidUtils.randomUUID().toString(); }; diff --git a/core_api/ScriptingServices/utils/xml.js b/core_api/ScriptingServices/utils/xml.js index e67803b..4c5f041 100644 --- a/core_api/ScriptingServices/utils/xml.js +++ b/core_api/ScriptingServices/utils/xml.js @@ -12,7 +12,7 @@ /* eslint-env node, dirigible */ exports.fromJson = function(json) { - return $.getXmlUtils().fromJson(json); + return $.getXmlUtils().fromJson(JSON.stringify(json)); }; exports.toJson = function(xml) { diff --git a/core_api/ScriptingServices/utils/xss.js b/core_api/ScriptingServices/utils/xss.js index 9fd2207..8780795 100644 --- a/core_api/ScriptingServices/utils/xss.js +++ b/core_api/ScriptingServices/utils/xss.js @@ -8,13 +8,19 @@ * SAP - initial API and implementation *******************************************************************************/ -/* globals $ java */ +/* globals $ java engine */ /* eslint-env node, dirigible */ exports.escapeCsv = function(data) { try { - var value = $.getXssUtils().escapeCsv(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.escapeCsv(data); + } else { + value = $.getXssUtils().escapeCsv(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -22,8 +28,14 @@ exports.escapeCsv = function(data) { exports.escapeHtml = function(data) { try { - var value = $.getXssUtils().escapeHtml(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.escapeHtml(data); + } else { + value = $.getXssUtils().escapeHtml(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -31,8 +43,14 @@ exports.escapeHtml = function(data) { exports.escapeJava = function(data) { try { - var value = $.getXssUtils().escapeJava(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.escapeJava(data); + } else { + value = $.getXssUtils().escapeJava(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -40,8 +58,14 @@ exports.escapeJava = function(data) { exports.escapeJavaScript = function(data) { try { - var value = $.getXssUtils().escapeJavaScript(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.escapeJavaScript(data); + } else { + value = $.getXssUtils().escapeJavaScript(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -49,8 +73,14 @@ exports.escapeJavaScript = function(data) { exports.escapeSql = function(data) { try { - var value = $.getXssUtils().escapeSql(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.escapeSql(data); + } else { + value = $.getXssUtils().escapeSql(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -58,8 +88,14 @@ exports.escapeSql = function(data) { exports.escapeXml = function(data) { try { - var value = $.getXssUtils().escapeXml(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.escapeXml(data); + } else { + value = $.getXssUtils().escapeXml(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -67,8 +103,14 @@ exports.escapeXml = function(data) { exports.unescapeCsv = function(data) { try { - var value = $.getXssUtils().unescapeCsv(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.unescapeCsv(data); + } else { + value = $.getXssUtils().unescapeCsv(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -76,8 +118,14 @@ exports.unescapeCsv = function(data) { exports.unescapeHtml = function(data) { try { - var value = $.getXssUtils().unescapeHtml(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.unescapeHtml(data); + } else { + value = $.getXssUtils().unescapeHtml(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -85,8 +133,14 @@ exports.unescapeHtml = function(data) { exports.unescapeJava = function(data) { try { - var value = $.getXssUtils().unescapeJava(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.unescapeJava(data); + } else { + value = $.getXssUtils().unescapeJava(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -94,8 +148,14 @@ exports.unescapeJava = function(data) { exports.unescapeJavaScript = function(data) { try { - var value = $.getXssUtils().unescapeJavaScript(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.unescapeJavaScript(data); + } else { + value = $.getXssUtils().unescapeJavaScript(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -103,8 +163,14 @@ exports.unescapeJavaScript = function(data) { exports.unescapeSql = function(data) { try { - var value = $.getXssUtils().unescapeSql(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.unescapeSql(data); + } else { + value = $.getXssUtils().unescapeSql(data); + } } catch(e) { + console.error(e); return null; } return value; @@ -112,8 +178,14 @@ exports.unescapeSql = function(data) { exports.unescapeXml = function(data) { try { - var value = $.getXssUtils().unescapeXml(data); + var value; + if (engine === "nashorn") { + value = $.getXssUtils().class.static.unescapeXml(data); + } else { + value = $.getXssUtils().unescapeXml(data); + } } catch(e) { + console.error(e); return null; } return value;