@Override public Parser<String, Object> makeParser() { // JavaScript configuration should be checked when it's actually used because someone might still want Druid // nodes to be able to deserialize JavaScript-based objects even though JavaScript is disabled. Preconditions.checkState(config.isEnabled(), "JavaScript is disabled"); parser = parser == null ? new JavaScriptParser(function) : parser; return parser; }
public JavaScriptParser( final String function ) { this.fn = compile(function); }
@Test(expected = EvaluatorException.class) public void testFailure() { final String function = "i am bad javascript"; new JavaScriptParser(function); } }
public JavaScriptParser( final String function ) { this.fn = compile(function); }
@Test public void testParseWithMultiVal() { final String function = "function(str) { var parts = str.split(\"-\"); return { one: [parts[0], parts[1]] } }"; final Parser<String, Object> parser = new JavaScriptParser( function ); String data = "val1-val2"; final Map<String, Object> parsed = parser.parseToMap(data); ImmutableMap.Builder builder = ImmutableMap.builder(); builder.put("one", Lists.newArrayList("val1", "val2")); Assert.assertEquals( "result", builder.build(), parsed ); }
@Test public void testParse() { final String function = "function(str) { var parts = str.split(\"-\"); return { one: parts[0], two: parts[1] } }"; final Parser<String, Object> parser = new JavaScriptParser( function ); String data = "foo-val1"; final Map<String, Object> parsed = parser.parseToMap(data); ImmutableMap.Builder builder = ImmutableMap.builder(); builder.put("one", "foo"); builder.put("two", "val1"); Assert.assertEquals( "result", builder.build(), parsed ); }
@Override public Parser<String, Object> makeParser() { // JavaScript configuration should be checked when it's actually used because someone might still want Druid // nodes to be able to deserialize JavaScript-based objects even though JavaScript is disabled. Preconditions.checkState(config.isEnabled(), "JavaScript is disabled"); parser = parser == null ? new JavaScriptParser(function) : parser; return parser; }