You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Dmitri Blinov (JIRA)" <ji...@apache.org> on 2016/07/10 15:41:10 UTC
[jira] [Created] (JEXL-204) Script is not interrupted by a method
call throwing Exception
Dmitri Blinov created JEXL-204:
----------------------------------
Summary: Script is not interrupted by a method call throwing Exception
Key: JEXL-204
URL: https://issues.apache.org/jira/browse/JEXL-204
Project: Commons JEXL
Issue Type: Bug
Affects Versions: 3.0
Reporter: Dmitri Blinov
The following test case fails with the message
{quote}
java.lang.AssertionError: should have thrown a Cancel
at org.junit.Assert.fail(Assert.java:88)
at org.apache.commons.jexl3.ScriptInterruptableTest.testExceptionCancellable(ScriptInterruptableTest.java:73)
{quote}
{code}
@SuppressWarnings({"UnnecessaryBoxing", "AssertEqualsBetweenInconvertibleTypes"})
public class ScriptInterruptableTest extends JexlTestCase {
//Logger LOGGER = Logger.getLogger(VarTest.class.getName());
public ScriptInterruptableTest() {
super("ScriptInterruptableTest");
}
public static class DummyInterrupt {
public int except() throws Exception {
throw new Exception("Cancelled by purpose");
}
}
public static class TestContext extends MapContext implements JexlContext.NamespaceResolver {
@Override
public Object resolveNamespace(String name) {
return name == null ? this : null;
}
}
@Test
public void testExceptionCancellable() throws Exception {
JexlEngine jexl = new JexlBuilder().silent(true).strict(false).cancellable(true).create();
JexlContext ctxt = new TestContext();
ctxt.set("x", new DummyInterrupt());
// run an interrupt
JexlScript sint = jexl.createScript("x.except(); return 42");
Object t = null;
Script.Callable c = (Script.Callable) sint.callable(ctxt);
try {
t = c.call();
if (c.isCancellable()) {
Assert.fail("should have thrown a Cancel");
}
} catch (JexlException.Cancel xjexl) {
if (!c.isCancellable()) {
Assert.fail("should not have thrown " + xjexl);
}
}
Assert.assertTrue(c.isCancelled());
Assert.assertNotEquals(42, t);
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)