Refine search
public static Object eval(final String expression) { ExpressionCompiler compiler = new ExpressionCompiler(getRevisedExpression(expression), WID_PARSER_CONTEXT); if(KiePolicyHelper.isPolicyEnabled()) { return AccessController.doPrivileged(new PrivilegedAction<Object>() { @Override public Object run() { return MVEL.executeExpression(compiler.compile(), new HashMap()); } }, KiePolicyHelper.getAccessContext()); } else { return MVEL.executeExpression(compiler.compile(), new HashMap()); } }
} else if ("mvel".equals(droolsAction.getDialect())) { try { ParserContext parserContext = new ParserContext(); ExpressionCompiler compiler = new ExpressionCompiler(actionString, parserContext); compiler.setVerifying(true); compiler.compile(); List<ErrorDetail> mvelErrors = parserContext.getErrorList(); if (mvelErrors != null) { for (Iterator<ErrorDetail> iterator = mvelErrors.iterator(); iterator.hasNext(); ) {
@Test public void testDebugSymbolCount() { String expr = "System.out.println( \"a1\" );\n" + "System.out.println( \"a2\" );\n" + "System.out.println( \"a3\" );\n" + "System.out.println( \"a4\" );\n"; ParserContext context = new ParserContext(); context.setDebugSymbols( true ); context.addImport( "System", System.class ); context.setStrictTypeEnforcement( true ); //context.setDebugSymbols( true ); context.setSourceFile( "mysource" ); ExpressionCompiler compiler = new ExpressionCompiler( expr, context ); Serializable compiledExpression = compiler.compile(); String s = DebugTools.decompile( compiledExpression ); System.out.println( "s " + s ); int fromIndex = 0; int count = 0; while ( (fromIndex = s.indexOf( "DEBUG_SYMBOL", fromIndex + 1 )) > -1 ) { count++; } assertEquals( 4, count ); }
public static Object eval(String str, Map vars) { ExpressionCompiler compiler = new ExpressionCompiler(str.trim()); ParserContext context = new ParserContext(); context.addPackageImport("org.jbpm.task"); context.addPackageImport("org.jbpm.task.service"); context.addPackageImport("org.jbpm.task.query"); context.addPackageImport("java.util"); vars.put("now", new Date()); return MVEL.executeExpression(compiler.compile(context), vars); }
public void testConcatWithLineBreaks() { ParserContext ctx = new ParserContext(); ctx.setDebugSymbols(true); ctx.setSourceFile("source.mv"); ExpressionCompiler parser = new ExpressionCompiler("\"foo\"+\n\"bar\"", ctx); assertEquals("foobar", executeExpression(parser.compile())); }
public void testJIRA161() { Serializable s = MVEL.compileExpression("1==-(-1)", ParserContext.create().stronglyTyped()); assertEquals(1 == -(-1), MVEL.executeExpression(s)); ParserContext ctx = new ParserContext(); ctx.setStrongTyping(true); CompiledExpression compiledExpression = new ExpressionCompiler("1==-(-1)", ctx).compile(); assertEquals(1 == -(-1), MVEL.executeExpression(compiledExpression)); }
ParserContext ctx = new ParserContext(pCtx.getParserConfiguration(), pCtx, true); if (!pCtx.isFunctionContext()) { singleton = true; pCtx.declareFunction(this); ctx.setIndexAllocation(false); ExpressionCompiler compiler = new ExpressionCompiler(expr, blockStart, blockOffset, ctx); compiler.setVerifyOnly(true); compiler.compile(); ctx.setIndexAllocation(true);
public void testMultiVarDeclr() { String ex = "var a, b, c"; ParserContext ctx = new ParserContext(); ExpressionCompiler compiler = new ExpressionCompiler(ex, ctx); compiler.setVerifyOnly(true); compiler.compile(); assertEquals(3, ctx.getVariables().size()); }
pCtx.declareFunction(this); ParserContext ctx = new ParserContext(pCtx.getParserConfiguration()); ctx.setIndexAllocation(true); ExpressionCompiler compiler = new ExpressionCompiler(block); compiler.setVerifyOnly(true); compiler.compile(ctx);
public void testDynamicImports3() { String expression = "import java.util.*; HashMap map = new HashMap(); map.size()"; ExpressionCompiler compiler = new ExpressionCompiler(expression); Serializable s = compiler.compile(); assertEquals(0, executeExpression(s, new DefaultLocalVariableResolverFactory())); assertEquals(0, MVEL.eval(expression, new HashMap())); }
public void testDebugSymbolsSingleStatement() { String ex = "System.out.println( Cheese.STILTON );"; ParserContext ctx = new ParserContext(); ctx.setStrongTyping(true); ctx.addImport(Cheese.class); try { ExpressionCompiler compiler = new ExpressionCompiler(ex, ctx); CompiledExpression expr = compiler.compile(); // executing the following line with a MVEL.executeExpression() works fine // but executeDebugger() fails MVEL.executeDebugger(expr, null, (VariableResolverFactory) null); } catch (Throwable e) { e.printStackTrace(); fail("Should not raise exception: " + e.getMessage()); } }
public void testStrictTypingCompilation4() throws NoSuchMethodException { ParserContext ctx = new ParserContext(); ctx.addImport(Foo.class); ctx.setStrictTypeEnforcement(true); ExpressionCompiler compiler = new ExpressionCompiler("x_a = new Foo()", ctx); compiler.compile(); assertEquals(Foo.class, ctx.getVariables().get("x_a")); }
main_loop: while ((tk = nextToken()) != null) { Map<String, CompiledExpression> cec = pCtx.getCompiledExpressionCache(); Map<String, Class> rtc = pCtx.getReturnTypeCache(); CompiledExpression compiled = cec.get(key); Class rt = rtc.get(key); if (compiled == null) { ExpressionCompiler subCompiler = new ExpressionCompiler(expr, tk.getStart(), tk.getOffset(), pCtx); compiled = subCompiler._compile(); rt = subCompiler.getReturnType(); cec.put(key, compiled); rtc.put(key, rt); if ((tkOp = nextTokenSkipSymbols()) != null && tkOp.isOperator() && !tkOp.isOperator(Operator.TERNARY) && !tkOp.isOperator(Operator.TERNARY_ELSE)) { if ((tkLA = nextTokenSkipSymbols()) != null && tkLA.isLiteral() && tkOp.getOperator() < 34 && ((lastOp == -1 || (lastOp < PTABLE.length && PTABLE[lastOp] < PTABLE[tkOp.getOperator()])))) { if (isArithmeticOperator(op)) { if (!compileReduce(op, astBuild)) continue; reduce(); while ((tkOp2 = nextTokenSkipSymbols()) != null) { if (isBooleanOperator(tkOp2.getOperator())) { astBuild.addTokenNode(new LiteralNode(stk.pop(), pCtx), verify(pCtx, tkOp2)); break;
public void testMapsWithVariableAsKey() { String ex = "aMap[aKey] == 'aValue'"; ParserContext ctx = new ParserContext(); ctx.setStrongTyping(false); ExpressionCompiler compiler = new ExpressionCompiler(ex, ctx); compiler.setVerifyOnly(true); compiler.compile(); Set<String> requiredInputs = compiler.getParserContextState().getInputs().keySet(); assertTrue(requiredInputs.contains("aMap")); assertTrue(requiredInputs.contains("aKey")); }
@Override public Object run() { return MVEL.executeExpression(compiler.compile(), new HashMap()); } }, KiePolicyHelper.getAccessContext());
public void testVarInputs2() { ParserContext ctx = new ParserContext(); ExpressionCompiler compiler = new ExpressionCompiler("test != foo && bo.addSomething(trouble); String bleh = foo; twa = bleh;", ctx); compiler.compile(); System.out.println(ctx.getVarOrInputType("bleh")); }
public static Class analyze(char[] expression, ParserContext ctx) { ExpressionCompiler compiler = new ExpressionCompiler(expression, ctx); compiler.setVerifyOnly(true); compiler.compile(); return compiler.getReturnType(); }
if (pCtx == null) pCtx = getParserContext(); while ((tk = nextToken()) != null) { ExpressionCompiler subCompiler = new ExpressionCompiler(tk.getNameAsArray(), pCtx); tk.setAccessor(subCompiler._compile()); returnType = subCompiler.getReturnType(); if ((tkOp = nextTokenSkipSymbols()) != null && tkOp.isOperator() && !tkOp.isOperator(Operator.TERNARY) && !tkOp.isOperator(Operator.TERNARY_ELSE)) { if ((tkLA = nextTokenSkipSymbols()) != null && tkLA.isLiteral() && tkOp.getOperator() < 34 && ((lastOp == -1 || (lastOp < PTABLE.length && PTABLE[lastOp] < PTABLE[tkOp.getOperator()])))) { if (isArithmeticOperator(op)) { if (!compileReduce(op, astBuild)) continue; reduce(); while ((tkOp2 = nextTokenSkipSymbols()) != null) { if (isBooleanOperator(tkOp2.getOperator())) { astBuild.addTokenNode(new LiteralNode(stk.pop()), verify(pCtx, tkOp2)); break; else if ((tkLA2 = nextTokenSkipSymbols()) != null) { if (isArithmeticOperator(op)) {
public static Serializable compileExpression(char[] expression, int start, int offset, ParserContext ctx) { ExpressionCompiler c = new ExpressionCompiler(expression, start, offset, ctx); return optimizeTree(c._compile()); }
if (pCtx.hasVarOrInput(property)) { ctx = getSubComponentType(pCtx.getVarOrInputType(property)); else if (pCtx.hasImport(property)) { resolvedExternally = false; ctx = getSubComponentType(pCtx.getImport(property)); ExpressionCompiler compiler = new ExpressionCompiler(new String(expr, start, cursor - start)); compiler.setVerifyOnly(true); compiler.compile(pCtx);