mirror of
https://gitee.com/dolphinscheduler/DolphinScheduler.git
synced 2024-12-01 19:58:29 +08:00
[Improvement-16534][Master] Switch task support includes method (#16594)
This commit is contained in:
parent
2ff487cb7b
commit
b97f6fcb26
@ -40,9 +40,38 @@ public class SwitchTaskUtils {
|
||||
|
||||
private static final NashornSandbox sandbox;
|
||||
private static final String rgex = "['\"]*\\$\\{(.*?)\\}['\"]*";
|
||||
public static final String NASHORN_POLYFILL_ARRAY_PROTOTYPE_INCLUDES =
|
||||
"if (!Array.prototype.includes) {" +
|
||||
" Object.defineProperty(Array.prototype, 'includes', {" +
|
||||
" value: function(valueToFind, fromIndex) {" +
|
||||
" if (this == null) {" +
|
||||
" throw new TypeError('\"this\" is null or not defined');" +
|
||||
" }" +
|
||||
" var o = Object(this);" +
|
||||
" var len = o.length >>> 0;" +
|
||||
" if (len === 0) { return false; }" +
|
||||
" var n = fromIndex | 0;" +
|
||||
" var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);" +
|
||||
" function sameValueZero(x, y) {" +
|
||||
" return x === y || (typeof x === 'number' && " +
|
||||
" typeof y === 'number' && isNaN(x) && isNaN(y));" +
|
||||
" }" +
|
||||
" while (k < len) {" +
|
||||
" if (sameValueZero(o[k], valueToFind)) { return true; }" +
|
||||
" k++;" +
|
||||
" }" +
|
||||
" return false;" +
|
||||
" }" +
|
||||
" });" +
|
||||
"}";
|
||||
|
||||
static {
|
||||
sandbox = NashornSandboxes.create();
|
||||
try {
|
||||
sandbox.eval(NASHORN_POLYFILL_ARRAY_PROTOTYPE_INCLUDES);
|
||||
} catch (ScriptException e) {
|
||||
log.error("failed to load Nashorn polyfill", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean evaluate(String expression) throws ScriptException {
|
||||
|
@ -71,4 +71,16 @@ public class SwitchTaskUtilsTest {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIncludes() throws ScriptException {
|
||||
String content = "['abc','def'].includes('abc')";
|
||||
boolean result = SwitchTaskUtils.evaluate(content);
|
||||
Assertions.assertTrue(result);
|
||||
|
||||
SwitchTaskUtils.evaluate(SwitchTaskUtils.NASHORN_POLYFILL_ARRAY_PROTOTYPE_INCLUDES);
|
||||
result = SwitchTaskUtils.evaluate(content);
|
||||
Assertions.assertTrue(result);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user