/** Test Delegate Method Call */ public void testCase1() throws Exception { ContextA contextA = new ContextA(); ContextB contextB = new ContextB(); OOEEContext context = OOEEContextFactory.createOOEEContext(); context.setParsingContextObject("$", contextA); context.setEvaluationContextObject("$", contextA); context.setParsingContextObject("#", contextB); context.setEvaluationContextObject("#", contextB); String expressionStr = "$setValue(\"a\")"; Expression expression = ExpressionParser.parse(expressionStr, context); ExpressionEvaluator.evaluate(expression, context); expressionStr = "#setValue(\"b\")"; expression = ExpressionParser.parse(expressionStr, context); ExpressionEvaluator.evaluate(expression, context); expressionStr = "$var"; expression = ExpressionParser.parse(expressionStr, context); Object value = ExpressionEvaluator.evaluate(expression, context); assertEquals("a", value); expressionStr = "#var"; expression = ExpressionParser.parse(expressionStr, context); value = ExpressionEvaluator.evaluate(expression, context); assertEquals("b", value); SerializeUtil.serializeData(expression); SerializeUtil.serializeData(context); }
/** * add @CurrentUser, external parsingContext should be MultiParsingCongtext * * @param variables the variables of the LogicNode, or the Output Data of DisplayNode. request * context * @param globalVariables the Global variables of the WebChunk. session context * @return */ public static OpExecuteContext getOpParsingContext( List<ParamType> variables, List<ParamType> globalVariables) { OpExecuteContext op = new OpExecuteContext(); OOEEContext external = OOEEContextFactory.createOOEEContext(); DefaultParsingContext global = getHttpSessionParsingContext(globalVariables); // set CurrentUser in session parsing context DefaultParsingContext local = getHttpRequestParsingContext(variables); if (logger.isDebugEnabled()) logger.debug("local: {}", local); external.setParsingContextObject(WebflowConstants.REQUEST_PARSING_CONTEXT_PREFIX, local); external.setParsingContextObject(WebflowConstants.SESSION_PARSING_CONTEXT_PREFIX, global); op.setExternalParseContext(external); op.setParsingContextObject(WebflowConstants.REQUEST_PARSING_CONTEXT_PREFIX, local); op.setParsingContextObject(WebflowConstants.SESSION_PARSING_CONTEXT_PREFIX, global); return op; }
public void testCase2() throws Exception { ContextA contextA = new ContextA(); OOEEContext context = OOEEContextFactory.createOOEEContext(); context.setParsingContextObject("$", contextA); context.setEvaluationContextObject("$", contextA); String expressionStr = "$setValue(\"a\")"; Expression expression = ExpressionParser.parse(expressionStr, context); ExpressionEvaluator.evaluate(expression, context); expressionStr = "$var\"aa\""; try { expression = ExpressionParser.parse(expressionStr, context); fail("no exception happend"); } catch (Exception e) { assertTrue(true); } }
/** * Parse the expression using default OOEEContext as the Parsing Context * * @param expressionString * @return parsedexpression * @throws ParsingException if the expression string is invalid * @see #parse(String) */ public static Expression parse(String expressionString) throws ParsingException { return parse(expressionString, OOEEContextFactory.createOOEEContext()); }