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()); } }
ParserContext parserContext = new ParserContext(); ExpressionCompiler compiler = new ExpressionCompiler(actionString, parserContext); compiler.setVerifying(true); compiler.compile(); List<ErrorDetail> mvelErrors = parserContext.getErrorList(); if (mvelErrors != null) {
@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 ); }
/** * Performs an analysis compileShared, which will populate the ParserContext with type, input and variable information, * but will not produce a payload. * * @param expression - the expression to analyze * @param ctx - the parser context */ public static void analysisCompile(char[] expression, ParserContext ctx) { ExpressionCompiler compiler = new ExpressionCompiler(expression, ctx); compiler.setVerifyOnly(true); compiler.compile(); }
public static Class analyze(char[] expression, ParserContext ctx) { ExpressionCompiler compiler = new ExpressionCompiler(expression, ctx); compiler.setVerifyOnly(true); compiler.compile(); return compiler.getReturnType(); }
public void testParsingStability2() { Map<String, Object> imports = new HashMap<String, Object>(); imports.put("java.awt.Dimension", Dimension.class); final ParserContext parserContext = new ParserContext(imports, null, "sourceFile"); parserContext.setStrictTypeEnforcement(false); ExpressionCompiler compiler = new ExpressionCompiler("( dim.height == 1 || dim.height == ( 1+1) || dim.height == x )", parserContext); compiler.compile(); }
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 void testDuplicateVariableDeclaration() { ParserContext context = new ParserContext(); ExpressionCompiler compiler = new ExpressionCompiler("String x = \"abc\"; Integer x = new Integer( 10 );", context); try { compiler.compile(); fail("Compilation must fail with duplicate variable declaration exception."); } catch (RuntimeException ce) { // success } }
public void testAssertKeyword() { ExpressionCompiler compiler = new ExpressionCompiler("assert 1 == 2;"); Serializable s = compiler.compile(); try { executeExpression(s); } catch (AssertionError e) { return; } assertTrue(false); }
public void testVarInputs3() { ExpressionCompiler compiler = new ExpressionCompiler("addresses['home'].street"); compiler.compile(); assertFalse(compiler.getParserContextState().getInputs().keySet().contains("home")); }
public void testVarInputs4() { ExpressionCompiler compiler = new ExpressionCompiler("System.out.println( message );"); compiler.compile(); assertTrue(compiler.getParserContextState().getInputs().keySet().contains("message")); }
public void testWhileUsingImports() { Map<String, Object> imports = new HashMap<String, Object>(); imports.put("ArrayList", java.util.ArrayList.class); imports.put("List", java.util.List.class); ParserContext context = new ParserContext(imports, null, "testfile"); ExpressionCompiler compiler = new ExpressionCompiler("List list = new ArrayList(); return (list == empty)", context); assertTrue((Boolean) executeExpression(compiler.compile(), new DefaultLocalVariableResolverFactory())); }
public void testEvaluationRegression() { ExpressionCompiler compiler = new ExpressionCompiler("(p.age * 2)"); compiler.compile(); assertTrue(compiler.getParserContextState().getInputs().containsKey("p")); }
public void testStrongTypingModeComparison() { ParserContext parserContext = new ParserContext(); parserContext.setStrongTyping(true); parserContext.addInput("a", Long.class); CompiledExpression compiledExpression = new ExpressionCompiler("a==0", parserContext).compile(); HashMap<String, Object> variables = new HashMap<String, Object>(); variables.put("a", 0l); MVEL.executeExpression(compiledExpression, variables); }
public void testBreakpoints2() { ParserContext ctx = new ParserContext(); ctx.setSourceFile("test.mv"); ctx.setDebugSymbols(true); ExpressionCompiler compiler = new ExpressionCompiler("System.out.println('test the debugger');\n a = 0;", ctx); CompiledExpression compiled = compiler.compile(); }
public void testStrongTyping3() { ParserContext ctx = new ParserContext(); ctx.setStrongTyping(true); try { new ExpressionCompiler("foo.toUC(100.5", ctx).compile(); } catch (Exception e) { // should fail. return; } assertTrue(false); }
public void testJIRA96() { ParserContext ctx = new ParserContext(); ctx.setStrictTypeEnforcement(true); ctx.addInput("fooString", String[].class); ExpressionCompiler compiler = new ExpressionCompiler("fooString[0].toUpperCase()", ctx); compiler.compile(); }
public void testProvidedExternalTypes() { ParserContext ctx = new ParserContext(); ctx.setStrictTypeEnforcement(true); ctx.addInput("foo", Foo.class); ExpressionCompiler compiler = new ExpressionCompiler("foo.bar", ctx); compiler.compile(); }
public void testParameterizedTypeInStrictMode() { ParserContext ctx = new ParserContext(); ctx.setStrongTyping(true); ctx.addInput("foo", HashMap.class, new Class[]{String.class, String.class}); ExpressionCompiler compiler = new ExpressionCompiler("foo.get('bar').toUpperCase()", ctx); compiler.compile(); }
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")); }