false);
}
private OExpression compileExpr(Expression expression, boolean isJoinCondition, boolean isLValue) {
String expLang = getExpressionLanguage(expression);
ExpressionCompiler ec = findExpLangCompiler(expLang);
ec.setCompilerContext(this);
try {
OExpression oexpr = (isJoinCondition) ? ec.compileJoinCondition(expression) : ec.compile(expression);
oexpr.debugInfo = createDebugInfo(expression, expression.toString());
OExpressionLanguage expLanguage = _expLanguages.get(expLang);
if (expLanguage == null) {
expLanguage = new OExpressionLanguage(_oprocess, ec.getProperties());
expLanguage.debugInfo = createDebugInfo(_processDef, "Expression Language: " + expLang);
expLanguage.expressionLanguageUri = expLang;
_expLanguages.put(expLang, expLanguage);
_oprocess.expressionLanguages.add(expLanguage);
}
oexpr.expressionLanguage = expLanguage;
// Cleaning up expression compiler for furter compilation
ec.setCompilerContext(null);
return oexpr;
} catch (CompilationException ce) {
if (ce.getCompilationMessage().source == null)
ce.getCompilationMessage().setSource(expression);