return compileExpr(new Expression11(cur.getElement(),cur.getElement().getOwnerDocument().createTextNode(expr)), false, false, null, null, new Object[1]);
}
private OExpression compileExpr(Expression expression, boolean isJoinCondition, boolean isLValue, OVarType rootNodeType, Object requestedResultType, Object[] resultType) {
String expLang = getExpressionLanguage(expression);
ExpressionCompiler ec = findExpLangCompiler(expLang);
ec.setCompilerContext(this);
ExpressionValidator ev = _expressionValidatorFactory.getValidator();
try {
OExpression oexpr;
if (isJoinCondition) {
oexpr = ec.compileJoinCondition(expression);
} else {
oexpr = ec.compile(expression);
resultType[0] = ev.validate(expression, rootNodeType, requestedResultType);
}
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);