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 0ebbaea7 JEXL-317: regression fix, in derived class, method with same signature of a private base method is accessible; 0ebbaea7 is described below commit 0ebbaea7ec667712878d05d2b5ab94c693f5daef Author: henrib <hen...@apache.org> AuthorDate: Mon Aug 29 15:37:43 2022 +0200 JEXL-317: regression fix, in derived class, method with same signature of a private base method is accessible; --- .../jexl3/internal/introspection/Permissions.java | 5 ---- .../internal/introspection/PermissionsTest.java | 30 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/apache/commons/jexl3/internal/introspection/Permissions.java b/src/main/java/org/apache/commons/jexl3/internal/introspection/Permissions.java index 582bce3e..177cf7a4 100644 --- a/src/main/java/org/apache/commons/jexl3/internal/introspection/Permissions.java +++ b/src/main/java/org/apache/commons/jexl3/internal/introspection/Permissions.java @@ -367,11 +367,6 @@ public class Permissions implements JexlPermissions { * @return true if denied, false otherwise */ private boolean deny(Method method) { - // private are denied - int modifiers = method.getModifiers(); - if (Modifier.isPrivate(modifiers)) { - return true; - } // is method annotated with nojexl ? final NoJexl nojexl = method.getAnnotation(NoJexl.class); if (nojexl != null) { diff --git a/src/test/java/org/apache/commons/jexl3/internal/introspection/PermissionsTest.java b/src/test/java/org/apache/commons/jexl3/internal/introspection/PermissionsTest.java index d516601c..6bf36179 100644 --- a/src/test/java/org/apache/commons/jexl3/internal/introspection/PermissionsTest.java +++ b/src/test/java/org/apache/commons/jexl3/internal/introspection/PermissionsTest.java @@ -16,6 +16,7 @@ */ package org.apache.commons.jexl3.internal.introspection; +import org.apache.commons.jexl3.JexlArithmetic; import org.apache.commons.jexl3.JexlBuilder; import org.apache.commons.jexl3.JexlContext; import org.apache.commons.jexl3.JexlEngine; @@ -372,4 +373,33 @@ public class PermissionsTest { Object result = script.execute(context, a); Assert.assertNotNull(result); } + + public class I33Arithmetic extends JexlArithmetic { + public I33Arithmetic(boolean astrict) { + super(astrict); + } + + /** + * Same name signature as default private method. + * @param s the string + * @return a double, NaN if fail + */ + public double parseDouble(String s) { + try { + return Double.parseDouble(s); + } catch (NumberFormatException nfe) { + return Double.NaN; + } + } + } + + @Test public void testPrivateOverload1() throws Exception { + String src = "parseDouble(\"PHM1\".substring(3)).intValue()"; + JexlArithmetic jexla = new I33Arithmetic(true); + JexlEngine jexl = new JexlBuilder().safe(false).arithmetic(jexla).create(); + JexlScript script = jexl.createScript(src); + Assert.assertNotNull(script); + Object result = script.execute(null); + Assert.assertEquals(1, result); + } }