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
>
>

Reply via email to