protected boolean processAtomicExpression( RuleBuildContext context, Pattern pattern, BaseDescr d, String expr, Map<String, OperatorDescr> aliases ) { if ( d instanceof AtomicExprDescr ) { Matcher m = evalRegexp.matcher( ((AtomicExprDescr) d).getExpression() ); if ( m.find() ) { // MVELDumper already stripped the eval // this will build the eval using the specified dialect PredicateDescr pdescr = new PredicateDescr( context.getRuleDescr().getResource(), expr ); pdescr.copyLocation( d ); buildEval( context, pattern, pdescr, aliases, expr, true ); return true; } } return false; }
public RuleConditionElement build(RuleBuildContext context, BaseDescr descr, Pattern prefixPattern) { if (prefixPattern == null) { return build(context, descr); } EvalDescr evalDescr = (EvalDescr) descr; PredicateDescr predicateDescr = new PredicateDescr( context.getRuleDescr().getResource(), evalDescr.getContent() ); AnalysisResult analysis = buildAnalysis(context, prefixPattern, predicateDescr, null ); Declaration[] declarations = getUsedDeclarations(context, prefixPattern, analysis); return buildEval(context, evalDescr, analysis, declarations); }
protected void createAndBuildPredicate( RuleBuildContext context, Pattern pattern, BaseDescr base, String expr, Map<String, OperatorDescr> aliases ) { Dialect dialect = context.getDialect(); MVELDialect mvelDialect = (MVELDialect) context.getDialect( "mvel" ); context.setDialect( mvelDialect ); PredicateDescr pdescr = new PredicateDescr( context.getRuleDescr().getResource(), expr ); pdescr.copyParameters( base ); pdescr.copyLocation( base ); buildEval( context, pattern, pdescr, aliases, expr, false ); // fall back to original dialect context.setDialect(dialect); }
public MVELCompilationUnit buildCompilationUnit(RuleBuildContext context, Pattern pattern, String expression, Map<String, OperatorDescr> aliases) { Dialect dialect = context.getDialect(); context.setDialect( context.getDialect( "mvel" ) ); PredicateDescr predicateDescr = new PredicateDescr( context.getRuleDescr().getResource(), expression ); AnalysisResult analysis = buildAnalysis(context, pattern, predicateDescr, aliases); if ( analysis == null ) { // something bad happened return null; } Declaration[][] usedDeclarations = getUsedDeclarations(context, pattern, analysis); MVELCompilationUnit compilationUnit = buildCompilationUnit(context, usedDeclarations[0], usedDeclarations[1], predicateDescr, analysis); context.setDialect(dialect); return compilationUnit; }