Do we need better documentation on the site? Gary
On Mon, Aug 7, 2023, 5:45 AM Henri Biestro <hen...@apache.org> wrote: > Hi; > JEXL 3.3. has increased default security by restricting permissions to a > very narrow set of allowed classes. In your case, you need to allow JEXL to > introspect your package by configuring your permissions. Have a look at > JexlPermissions javadoc for more explanations. > On JEXL 3.3, with Java 17, If your test class resides in the 'org.example' > package, the following code does run without errors. > ... > Map<String, Object> funcs = new HashMap<String, Object>(); > funcs.put("math", new MyMath()); > JexlPermissions permissions = JexlPermissions.parse("org.example.*"); > JexlEngine jexl = new > JexlBuilder().permissions(permissions).namespaces(funcs).create(); > JexlContext jc = new MapContext(); > jc.set("pi", Math.PI); > JexlExpression e = jexl.createExpression("math:cos(pi)"); > Object result = e.evaluate(jc); > System.out.println("Result: " + result); > ... > > Cheers > > On 2023/08/06 06:54:05 Aditya Kumar1 wrote: > > Hi, > > > > I was trying to expose my own functions using JEXL library. I am trying > the below example. > > > > > > public static class MyMath { > > public double cos(final double x) { > > return Math.cos(x); > > } > > } > > > > public static void testCustomFunction2() { > > > > try { > > Map<String, Object> funcs = new HashMap<String, Object>(); > > funcs.put("math", new MyMath()); > > JexlEngine jexl = new > JexlBuilder().namespaces(funcs).create(); > > JexlContext jc = new MapContext(); > > jc.set("pi", Math.PI); > > JexlExpression e = jexl.createExpression("math:cos(pi)"); > > Object result = e.evaluate(jc); > > System.out.println("Result: " + result); > > } > > catch (JexlException e) { > > Throwable original = e.getCause(); > > System.out.println(e.getMessage()); > > original.printStackTrace(); > > //do something with the original > > } > > } > > > > which is given at below link: > > > https://commons.apache.org/proper/commons-jexl/apidocs/org/apache/commons/jexl3/package-summary.html#usage > > > > When I run the above code, I get below exception. > > > > org.example.Main.testCustomFunction2:93@1:9 unsolvable function/method > 'cos(Float)' > > Exception in thread "main" java.lang.NullPointerException > > at org.example.Main.testCustomFunction2(Main.java:100) > > at org.example.Main.main(Main.java:33) > > > > Can someone, please help me with this? I think, this is a supported way > to use custom functions or exposing my own/wrapper functions. I am using > Java 11 to run the above example. > > > > Thanks, > > Aditya > > > > > > > > — > > Aditya Kumar1 > > Technology Architect > > Precisely.com > > > > ATTENTION: -----The information contained in this message (including > any files transmitted with this message) may contain proprietary, trade > secret or other confidential and/or legally privileged information. Any > pricing information contained in this message or in any files transmitted > with this message is always confidential and cannot be shared with any > third parties without prior written approval from Precisely. This message > is intended to be read only by the individual or entity to whom it is > addressed or by their designee. If the reader of this message is not the > intended recipient, you are on notice that any use, disclosure, copying or > distribution of this message, in any form, is strictly prohibited. If you > have received this message in error, please immediately notify the sender > and/or Precisely and destroy all copies of this message in your possession, > custody or control. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > >