/** {@inheritDoc} */ @Override public void evalAttributes(final VoiceXmlInterpreterContext context) throws SemanticError { final DataModel model = context.getDataModel(); final Collection<String> evalAttributes = getEvalAttributes(); if (evalAttributes == null) { return; } // Actually evalute the attributes for (String name : evalAttributes) { final Object expr = attributes.get(name); if (expr != null) { final String exprstring = expr.toString(); final String unescapedExprstring = StringEscapeUtils.unescapeXml(exprstring); Object value = model.evaluateExpression(unescapedExprstring, Object.class); attributes.put(name, value); } } }
/** * Test method for {@link * VarStrategy#execute(org.jvoicexml.interpreter.VoiceXmlInterpreterContext, * org.jvoicexml.interpreter.VoiceXmlInterpreter, * org.jvoicexml.interpreter.FormInterpretationAlgorithm, org.jvoicexml.interpreter.FormItem, * org.jvoicexml.xml.VoiceXmlNode)} . * * @exception Exception Test failed. * @exception JVoiceXMLEvent test failed */ @Test public void testExecuteExpr() throws Exception, JVoiceXMLEvent { final String name = "test"; final String val = "this is a test"; final Block block = createBlock(); final Value value = block.appendChild(Value.class); value.setExpr(name); final DataModel model = getDataModel(); Mockito.when(model.evaluateExpression(name, Object.class)).thenReturn(val); final ValueStrategy strategy = new ValueStrategy(); executeTagStrategy(value, strategy); final SsmlDocument ssml = new SsmlDocument(); final Speak speak = ssml.getSpeak(); speak.addText("this is a test"); final SpeakableText speakable = new SpeakableSsmlText(ssml); final ImplementationPlatform platform = getContext().getImplementationPlatform(); Mockito.verify(platform).queuePrompt(speakable); }