/* Generated By:JJTree: Do not edit this line. ASTUserDefinedInclude.java Version 4.3 */ /* JavaCCOptions:MULTI=true,NODE_USES_PARSER=true,VISITOR=false,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ package org.openntf.formula.ast; import org.openntf.formula.EvaluateException; import org.openntf.formula.FormulaContext; import org.openntf.formula.FormulaParseException; import org.openntf.formula.FormulaReturnException; import org.openntf.formula.ValueHolder; import org.openntf.formula.parse.AtFormulaParserImpl; public class ASTUserDefinedInclude extends SimpleNode { private Node staticInc; public ASTUserDefinedInclude(final AtFormulaParserImpl p, final int id) { super(p, id); } public void init() throws FormulaParseException { // Is this a static or a dynamic import if (children[0] instanceof ASTValueString) { ASTValueString child = (ASTValueString) children[0]; String key = child.evaluate(null).getString(0); staticInc = (Node) parser.getInclude(key); } } @Override public ValueHolder evaluate(final FormulaContext ctx) throws FormulaReturnException { if (staticInc != null) return staticInc.evaluate(ctx); // TODO RPR: This is not yet implemented! ValueHolder vh = children[0].evaluate(ctx); String key = vh.getString(0); Node inc = (Node) ctx.getParser().getInclude(key); if (inc == null) { return ValueHolder.valueOf(new EvaluateException(codeLine, codeColumn, new IllegalArgumentException("'" + key + "' could not be included"))); } return inc.evaluate(ctx); } } /* JavaCC - OriginalChecksum=df1231d5cd4699152b313be5d9bef577 (do not edit this line) */