You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by he...@apache.org on 2023/03/16 20:34:23 UTC
[commons-jexl] 01/03: JEXL-394: let classmap/permmissions see synthetic/bridge methods (as long as they are public);
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
commit b40bbc023bad5be5a7b37ff9fe4dbe0ecb576377
Author: henrib <he...@apache.org>
AuthorDate: Thu Mar 16 21:32:15 2023 +0100
JEXL-394: let classmap/permmissions see synthetic/bridge methods (as long as they are public);
---
pom.xml | 3 +++
.../commons/jexl3/internal/introspection/ClassMap.java | 2 +-
.../apache/commons/jexl3/introspection/JexlPermissions.java | 2 +-
src/test/java/org/apache/commons/jexl3/Issues300Test.java | 13 +++++++++++++
4 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index bbd437a1..4e9e07a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,6 +62,9 @@
<commons.jacoco.lineRatio>0.85</commons.jacoco.lineRatio>
<commons.jacoco.haltOnFailure>false</commons.jacoco.haltOnFailure>
+ <!-- Cyclone -->
+ <commons.cyclonedx.version>2.7.5</commons.cyclonedx.version>
+
<!--
Encoding of Java source files: ensures that the compiler and
the javadoc generator use the right encoding. Subprojects may
diff --git a/src/main/java/org/apache/commons/jexl3/internal/introspection/ClassMap.java b/src/main/java/org/apache/commons/jexl3/internal/introspection/ClassMap.java
index 0fabac30..ca8bee6f 100644
--- a/src/main/java/org/apache/commons/jexl3/internal/introspection/ClassMap.java
+++ b/src/main/java/org/apache/commons/jexl3/internal/introspection/ClassMap.java
@@ -322,7 +322,7 @@ final class ClassMap {
final Method[] methods = clazz.getDeclaredMethods();
for (final Method mi : methods) {
// method must be public, not a bridge, not synthetic
- if (!Modifier.isPublic(mi.getModifiers()) || mi.isBridge() || mi.isSynthetic()) {
+ if (!Modifier.isPublic(mi.getModifiers())) {
continue;
}
// add method to byKey cache; do not override
diff --git a/src/main/java/org/apache/commons/jexl3/introspection/JexlPermissions.java b/src/main/java/org/apache/commons/jexl3/introspection/JexlPermissions.java
index 3af353ed..8fde342b 100644
--- a/src/main/java/org/apache/commons/jexl3/introspection/JexlPermissions.java
+++ b/src/main/java/org/apache/commons/jexl3/introspection/JexlPermissions.java
@@ -313,7 +313,7 @@ public interface JexlPermissions {
return false;
}
// method must be public
- if (!Modifier.isPublic(method.getModifiers()) || method.isBridge() || method.isSynthetic()) {
+ if (!Modifier.isPublic(method.getModifiers())) {
return false;
}
return true;
diff --git a/src/test/java/org/apache/commons/jexl3/Issues300Test.java b/src/test/java/org/apache/commons/jexl3/Issues300Test.java
index e83dfa01..7e98bddc 100644
--- a/src/test/java/org/apache/commons/jexl3/Issues300Test.java
+++ b/src/test/java/org/apache/commons/jexl3/Issues300Test.java
@@ -24,6 +24,8 @@ import org.junit.Test;
import java.io.StringReader;
import java.io.StringWriter;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.math.MathContext;
import java.util.ArrayList;
import java.util.Arrays;
@@ -1274,4 +1276,15 @@ public class Issues300Test {
Assert.assertEquals(0, dow.intValue());
}
+ @Test public void testIssue394() {
+ StringBuilder x = new StringBuilder("foobar");
+ Assert.assertEquals("foobar", x.toString());
+ String src = "x -> x.setLength(3)";
+ JexlEngine jexl = new JexlBuilder().create();
+ JexlScript script = jexl.createScript(src);
+ Object result = script.execute(null, x);
+ Assert.assertEquals("foo", x.toString());
+ }
+
+
}