Skip to content

Commit

Permalink
compatibility fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
delchev committed Jun 28, 2016
1 parent 4d2b81a commit 2441c39
Show file tree
Hide file tree
Showing 4 changed files with 125 additions and 31 deletions.
41 changes: 33 additions & 8 deletions core_api/ScriptingServices/core/threads.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
* SAP - initial API and implementation
*******************************************************************************/

/* globals $ java */
/* globals $ java engine Java Packages */
/* eslint-env node, dirigible */

/**
Expand Down Expand Up @@ -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);
//};

15 changes: 6 additions & 9 deletions core_api/ScriptingServices/utils/uuid.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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();
};
2 changes: 1 addition & 1 deletion core_api/ScriptingServices/utils/xml.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
98 changes: 85 additions & 13 deletions core_api/ScriptingServices/utils/xss.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,112 +8,184 @@
* 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;
};

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;
};

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;
};

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;
};

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;
};

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;
};

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;
};

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;
};

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;
};

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;
};

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;
};

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;
Expand Down

0 comments on commit 2441c39

Please sign in to comment.