This is an automated email from the ASF dual-hosted git repository.
henrib pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
The following commit(s) were added to refs/heads/master by this push:
new 09ffe9aa JEXL: checkstyle
09ffe9aa is described below
commit 09ffe9aabc92b08c3b1ba5a369a655707a5e5cb7
Author: Henrib <[email protected]>
AuthorDate: Tue Feb 3 19:16:22 2026 +0100
JEXL: checkstyle
---
.../org/apache/commons/jexl3/Issues400Test.java | 131 ++++++++++++++++-----
1 file changed, 101 insertions(+), 30 deletions(-)
diff --git a/src/test/java/org/apache/commons/jexl3/Issues400Test.java
b/src/test/java/org/apache/commons/jexl3/Issues400Test.java
index ae33d5eb..2deb4ab9 100644
--- a/src/test/java/org/apache/commons/jexl3/Issues400Test.java
+++ b/src/test/java/org/apache/commons/jexl3/Issues400Test.java
@@ -322,7 +322,8 @@ public class Issues400Test {
options.setLexical(true);
final JexlEngine jexl = builder.create();
final JexlScript script = jexl.createScript("var c = 42; var f = y ->
c += y; f(z)", "z");
- final JexlException.Variable xvar =
assertThrows(JexlException.Variable.class, () -> script.execute(null, 12), "c
should be const");
+ final JexlException.Variable xvar =
assertThrows(JexlException.Variable.class,
+ () -> script.execute(null, 12), "c should be const");
assertEquals("c", xvar.getVariable());
}
@@ -330,8 +331,11 @@ public class Issues400Test {
void test413c() {
final JexlBuilder builder = new JexlBuilder();
final JexlEngine jexl = builder.create();
- final JexlScript script = jexl.createScript("#pragma jexl.options
'+constCapture'\nvar c = 42; var f = y -> c += y; f(z)", "z");
- final JexlException.Variable xvar =
assertThrows(JexlException.Variable.class, () -> script.execute(null, 12), "c
should be const");
+ final String pragma = "#pragma jexl.options '+constCapture'\n"
+ + "var c = 42; var f = y -> c += y; f(z)";
+ final JexlScript script = jexl.createScript(pragma, "z");
+ final JexlException.Variable xvar = assertThrows(
+ JexlException.Variable.class, () -> script.execute(null, 12), "c
should be const");
assertEquals("c", xvar.getVariable());
}
@@ -339,7 +343,9 @@ public class Issues400Test {
void test413d() {
final JexlBuilder builder = new JexlBuilder().features(new
JexlFeatures().constCapture(true));
final JexlEngine jexl = builder.create();
- final JexlException.Parsing xparse =
assertThrows(JexlException.Parsing.class, () -> jexl.createScript("var c = 42;
var f = y -> c += y; f(z)", "z"), "c should be const");
+ final JexlException.Parsing xparse =
assertThrows(JexlException.Parsing.class,
+ () -> jexl.createScript("var c = 42; var f = y -> c += y; f(z)",
"z"),
+ "c should be const");
assertTrue(xparse.getMessage().contains("const"));
}
@@ -378,7 +384,10 @@ public class Issues400Test {
assertFalse(RESTRICTED.allow(currentTimeMillis));
// An engine with the System class as namespace and the positive
permissions
- final JexlEngine jexl = new
JexlBuilder().namespaces(Collections.singletonMap("sns",
System.class)).permissions(permissions).create();
+ final JexlEngine jexl = new JexlBuilder()
+ .namespaces(Collections.singletonMap("sns", System.class))
+ .permissions(permissions)
+ .create();
final AtomicLong result = new AtomicLong();
assertEquals(0, result.get());
@@ -501,7 +510,8 @@ public class Issues400Test {
@Test
void test431a() {
final JexlEngine jexl = new JexlBuilder().create();
- final String src = "let x = 0; try { x += 19 } catch (let error) {
return 169 } try { x += 23 } catch (let error) { return 169 }";
+ final String src = "let x = 0; try { x += 19 } catch (let error) {
return 169 } "
+ + "try { x += 23 } catch (let error) { return 169 }";
final JexlScript script = jexl.createScript(src);
assertNotNull(script);
final Object result = script.execute(null);
@@ -515,7 +525,8 @@ public class Issues400Test {
@Test
void test431b() {
final JexlEngine jexl = new JexlBuilder().create();
- final String src = "let x = 0; try(let error) { x += 19 } catch (let
error) { return 169 } try { x += 23 } catch (let error) { return 169 }";
+ final String src = "let x = 0; try(let error) { x += 19 } catch (let
error) { return 169 } "
+ + "try { x += 23 } catch (let error) { return 169 }";
final JexlScript script = jexl.createScript(src);
assertNotNull(script);
final Object result = script.execute(null);
@@ -613,7 +624,14 @@ public class Issues400Test {
@Test
void test437a() {
final JexlEngine jexl = new JexlBuilder().create();
- final String src = "let values = [...]\n" + "function append(const
value) {\n" + " values.add(value)\n" + "}\n" + "\n" + "append(1)\n" +
"append(2)\n" + "return values ";
+ final String src = "let values = [...]\n"
+ + "function append(const value) {\n"
+ + " values.add(value)\n"
+ + "}\n"
+ + "\n"
+ + "append(1)\n"
+ + "append(2)\n"
+ + "return values ";
final JexlScript script = jexl.createScript(src);
assertNotNull(script);
final Object result = script.execute(null);
@@ -627,7 +645,13 @@ public class Issues400Test {
final JexlFeatures features =
JexlFeatures.createDefault().ambiguousStatement(true);
assertTrue(features.supportsAmbiguousStatement());
final JexlEngine jexl = new JexlBuilder().features(features).create();
- final String src = "let values = [...]" + "function append(const
value) {" + " values.add(value)" + "}" + "append(1)" + "append(2)" + "return
values ";
+ final String src = "let values = [...]"
+ + "function append(const value) {"
+ + " values.add(value)"
+ + "}"
+ + "append(1)"
+ + "append(2)"
+ + "return values ";
final JexlScript script = jexl.createScript(src);
assertNotNull(script);
final Object result = script.execute(null);
@@ -741,7 +765,12 @@ public class Issues400Test {
@Test
void test438() {// no local, no lambda, no loops, no-side effects
- final JexlFeatures f = new
JexlFeatures().localVar(false).lambda(false).loops(false).sideEffect(false).sideEffectGlobal(false);
+ final JexlFeatures f = new JexlFeatures()
+ .localVar(false)
+ .lambda(false)
+ .loops(false)
+ .sideEffect(false)
+ .sideEffectGlobal(false);
final JexlBuilder builder = new
JexlBuilder().parserFactory(SQLParser::new).cache(32).features(f);
final JexlEngine sqle = builder.create();
Assertions.assertTrue((boolean) sqle.createScript("a <> 25",
"a").execute(null, 24));
@@ -785,7 +814,9 @@ public class Issues400Test {
@Test
void testIssue447() {
final JexlEngine jexl = new JexlBuilder().create();
- final String src = "const c = `${a}\n?= ${b}`; function foo(const
left, const right) { `${left}\n?== ${right}` } c+foo(a, b)";
+ final String src = "const c = `${a}\n?= ${b}`; "
+ + "function foo(const left, const right) { `${left}\n?== ${right}`
} "
+ + "c+foo(a, b)";
final JexlScript script = jexl.createScript(src, "a", "b");
final Object result = script.execute(null, "a", "b");
Assertions.assertEquals("a\n?= ba\n?== b", result);
@@ -818,27 +849,36 @@ public class Issues400Test {
@Test
void test450a() {
JexlEngine jexl0 = new
JexlBuilder().silent(false).permissions(JexlPermissions.RESTRICTED).create();
- assertThrows(JexlException.Method.class, () ->
jexl0.newInstance("org.apache.commons.jexl3.internal.introspection.Uberspect",
null, null), "should not be able to create Uberspect with RESTRICTED");
- JexlPermissions perm = new
JexlPermissions.ClassPermissions(org.apache.commons.jexl3.internal.introspection.Uberspect.class);
+ assertThrows(JexlException.Method.class,
+ () ->
jexl0.newInstance("org.apache.commons.jexl3.internal.introspection.Uberspect",
null, null),
+ "should not be able to create Uberspect with RESTRICTED");
+ JexlPermissions perm = new JexlPermissions.ClassPermissions(
+ org.apache.commons.jexl3.internal.introspection.Uberspect.class);
JexlEngine jexl1 = new
JexlBuilder().silent(false).permissions(perm).create();
-
assertNotNull(jexl1.newInstance("org.apache.commons.jexl3.internal.introspection.Uberspect",
null, null), "should able to create Uberspect with Uberspect permission");
+ assertNotNull(jexl1.newInstance(
+ "org.apache.commons.jexl3.internal.introspection.Uberspect", null,
null),
+ "should able to create Uberspect with Uberspect permission");
}
@Test
void test450b() {
// cannot load System with RESTRICTED
- assertThrows(JexlException.Method.class, () ->
run450b(JexlPermissions.RESTRICTED), "should not be able to load System with
RESTRICTED");
+ assertThrows(JexlException.Method.class, () ->
run450b(JexlPermissions.RESTRICTED),
+ "should not be able to load System with RESTRICTED");
// can load System with UNRESTRICTED
assertEquals(java.lang.System.class, run450b(UNRESTRICTED));
// need to explicitly allow Uberspect and the current class loader to
load System
- JexlPermissions perm = new
JexlPermissions.ClassPermissions(getClass().getClassLoader().getClass(),
org.apache.commons.jexl3.internal.introspection.Uberspect.class);
+ JexlPermissions perm = new JexlPermissions.ClassPermissions(
+ getClass().getClassLoader().getClass(),
+ org.apache.commons.jexl3.internal.introspection.Uberspect.class);
assertEquals(java.lang.System.class, run450b(perm));
}
private static Object run450b(JexlPermissions perm) {
JexlEngine jexl = new
JexlBuilder().silent(false).permissions(perm).create();
- String uscript =
"new('org.apache.commons.jexl3.internal.introspection.Uberspect', null, null,
perm).getClassLoader().loadClass('java.lang.System')";
+ String uscript =
"new('org.apache.commons.jexl3.internal.introspection.Uberspect', "
+ + "null, null,
perm).getClassLoader().loadClass('java.lang.System')";
JexlScript u0 = jexl.createScript(uscript, "perm");
return u0.execute(null, perm);
}
@@ -847,25 +887,41 @@ public class Issues400Test {
void test450c() {
// can reach and invoke System::currentTimeMillis with UNRESTRICTED
assertNotNull(run450c(UNRESTRICTED));
- // need explicit permissions to ClassPermissions and Uberspect to
reach and invoke System::currentTimeMillis
- JexlPermissions perm = new
JexlPermissions.ClassPermissions(JexlPermissions.ClassPermissions.class,
org.apache.commons.jexl3.internal.introspection.Uberspect.class);
+ // need explicit permissions to ClassPermissions and Uberspect to
reach and invoke
+ // System::currentTimeMillis
+ JexlPermissions perm = new JexlPermissions.ClassPermissions(
+ JexlPermissions.ClassPermissions.class,
+ org.apache.commons.jexl3.internal.introspection.Uberspect.class);
assertNotNull(run450c(perm));
// cannot reach and invoke System::currentTimeMillis with RESTRICTED
- assertThrows(JxltEngine.Exception.class, () ->
run450c(JexlPermissions.RESTRICTED), "should not be able to load System with
RESTRICTED");
+ assertThrows(JxltEngine.Exception.class, () ->
run450c(JexlPermissions.RESTRICTED),
+ "should not be able to load System with RESTRICTED");
}
private static Object run450c(JexlPermissions perm) {
JexlBuilder builder = new
JexlBuilder().silent(false).permissions(perm);
- Object result = new TemplateEngine(new Engine32(builder), false, 2,
'$', '#').createExpression("${x = new
('org.apache.commons.jexl3.internal.introspection.Uberspect', null, null,
UNRESTRICTED);" + "sys = x?.getClassLoader()?.loadClass('java.lang.System') ?:
SYSTEM;" + // fail to create uberspect with java 8
- "p =
new('org.apache.commons.jexl3.introspection.JexlPermissions$ClassPermissions',
[sys]);" + "c =
new('org.apache.commons.jexl3.internal.introspection.Uberspect', null, null,
p);" + "z =
c.getMethod(sys,'currentTimeMillis').invoke(x,null);}").evaluate(new
BrkContext());
+ Object result = new TemplateEngine(new Engine32(builder), false, 2,
'$', '#')
+ .createExpression(
+ "${x = new
('org.apache.commons.jexl3.internal.introspection.Uberspect', "
+ + "null, null, UNRESTRICTED);"
+ + "sys = x?.getClassLoader()?.loadClass('java.lang.System') ?:
SYSTEM;"
+ + "p =
new('org.apache.commons.jexl3.introspection.JexlPermissions$ClassPermissions',
[sys]);"
+ + "c =
new('org.apache.commons.jexl3.internal.introspection.Uberspect', null, null,
p);"
+ + "z = c.getMethod(sys,'currentTimeMillis').invoke(x,null);}")
+ .evaluate(new BrkContext());
return result;
}
@Test
void test450() {
- assertNotNull(run450(JexlPermissions.UNRESTRICTED), "should be able to
reach and invoke System::currentTimeMillis with UNRESTRICTED");
- assertNotNull(run450(new
JexlPermissions.ClassPermissions(org.apache.commons.jexl3.internal.TemplateEngine.class)),
"should be able to reach and invoke System::currentTimeMillis with
TemplateEngine permission");
- assertThrows(JexlException.Method.class, () -> run450(RESTRICTED),
"should not be able to reach and invoke System::currentTimeMillis with
RESTRICTED");
+ assertNotNull(run450(JexlPermissions.UNRESTRICTED),
+ "should be able to reach and invoke System::currentTimeMillis with
UNRESTRICTED");
+ assertNotNull(
+ run450(new JexlPermissions.ClassPermissions(
+ org.apache.commons.jexl3.internal.TemplateEngine.class)),
+ "should be able to reach and invoke System::currentTimeMillis with
TemplateEngine permission");
+ assertThrows(JexlException.Method.class, () -> run450(RESTRICTED),
+ "should not be able to reach and invoke System::currentTimeMillis
with RESTRICTED");
}
public static class Engine33 extends Engine32 {
@@ -878,15 +934,29 @@ public class Issues400Test {
}
static JexlBuilder createBuilder() {
- JexlPermissions perm = new
JexlPermissions.ClassPermissions(Issues400Test.class.getClassLoader().getClass(),
JexlPermissions.ClassPermissions.class,
org.apache.commons.jexl3.internal.TemplateEngine.class,
org.apache.commons.jexl3.internal.introspection.Uberspect.class);
+ JexlPermissions perm = new JexlPermissions.ClassPermissions(
+ Issues400Test.class.getClassLoader().getClass(),
+ JexlPermissions.ClassPermissions.class,
+ org.apache.commons.jexl3.internal.TemplateEngine.class,
+
org.apache.commons.jexl3.internal.introspection.Uberspect.class);
return new
JexlBuilder().safe(false).silent(false).permissions(perm);
}
}
private static Object run450(JexlPermissions perm) {
- JexlEngine jexl = new
JexlBuilder().silent(false).strict(true).safe(false).permissions(perm).create();
- return
jexl.createScript("new('org.apache.commons.jexl3.internal.TemplateEngine'," +
"new('org.apache.commons.jexl3.Issues400Test$Engine33'),false,256,'$'.charAt(0),'#'.charAt(0))"
+ ".createExpression(" + "\"#{x = new
('org.apache.commons.jexl3.internal.introspection.Uberspect', null, null);" +
"sys = x?.getClassLoader().loadClass('java.lang.System') ?: SYSTEM;" + // fail
to load System on Java 8
- "p =
new('org.apache.commons.jexl3.introspection.JexlPermissions$ClassPermissions',
[sys]);" + "c =
new('org.apache.commons.jexl3.internal.introspection.Uberspect', null, null,
p);" + "z = c.getMethod(sys,'currentTimeMillis').invoke(x,null);}\")" +
".evaluate(new('org.apache.commons.jexl3.Issues400Test$BrkContext'))").execute(null);
+ JexlEngine jexl = new
JexlBuilder().silent(false).strict(true).safe(false)
+ .permissions(perm).create();
+ String script =
"new('org.apache.commons.jexl3.internal.TemplateEngine',"
+ +
"new('org.apache.commons.jexl3.Issues400Test$Engine33'),false,256,"
+ + "'$'.charAt(0),'#'.charAt(0))"
+ + ".createExpression("
+ + "\"#{x = new
('org.apache.commons.jexl3.internal.introspection.Uberspect', null, null);"
+ + "sys = x?.getClassLoader().loadClass('java.lang.System') ?:
SYSTEM;"
+ + "p =
new('org.apache.commons.jexl3.introspection.JexlPermissions$ClassPermissions',
[sys]);"
+ + "c =
new('org.apache.commons.jexl3.internal.introspection.Uberspect', null, null,
p);"
+ + "z = c.getMethod(sys,'currentTimeMillis').invoke(x,null);}\")"
+ +
".evaluate(new('org.apache.commons.jexl3.Issues400Test$BrkContext'))";
+ return jexl.createScript(script).execute(null);
}
@Test
@@ -907,7 +977,8 @@ public class Issues400Test {
// sandbox allows reading properties, permissions allow getSimpleName
assertEquals("Object", jexl451.createScript("o.class.simpleName",
"o").execute(null, new Object()));
// sandbox allows reading properties, permissions forbids
getClassLoader
- assertThrows(JexlException.Property.class, () ->
jexl451.createScript("o.class.classLoader", "o").execute(null, new Object()));
+ assertThrows(JexlException.Property.class,
+ () -> jexl451.createScript("o.class.classLoader",
"o").execute(null, new Object()));
}
}