I tried this little test program:

(function (y) { "x".contains(y) })()

and it fails for me even on 1.8.0_91-b14 with ClassCastException. Arguably, 
since undefined is converted to “undefined” string when the target type is 
String, it would make sense for it to work with CharSequence too.

Bad news is that I can fix this for standalone Nashorn, but you will have to 
upgrade to at least Java 11 to take advantage of it. (Also, I need to publish 
the fix too so it too might take few days.)

In the meantime, can you maybe change the signature of isBlank to take a String 
instead of a CharSequence? I think that’d work.

Attila.

> On 2022. Jun 23., at 17:01, Se Hee Lee <[email protected]> wrote:
> 
> It's Java
> 
> public boolean isBlank(final CharSequence cs) {
>     return StringUtils.isBlank(cs);
> }
> 
> On Thu, Jun 23, 2022 at 4:45 AM Attila Szegedi <[email protected]> wrote:
> Hi,
> 
> I’d like to look into this, but can you tell me how is “$S.isBlank” defined? 
> If it is in Java, what is its method signature?
> 
> Thanks,
>   Attila.
> 
> > On 2022. Jun 6., at 19:17, Se Hee Lee <[email protected]> wrote:
> > 
> > Is there a way to prevent this automatic wrapping?
> > 
> > In the following line, "oh.customAttribute4" is null, and it's passed into
> > isBlank() as "Undefined". And that triggers the ClassCastException. This
> > works fine in JDK 1.8.0_91, but fails in all future versions.
> > 
> > Is there an optional parameter or flag that prevents this from
> > happening??????
> > 
> > We have lots of rules that are based on 'nashorn' scripting engine, and we
> > cannot upgrade to future JDK due to this issue.
> > 
> > if (oh.type == "Sales Order" && $S.isBlank(oh.customAttribute4) &&
> > oh.importType != "Transfer Order" && ol.item.customAttribute1 != "true" &&
> > $S.containsIgnoreCase(vars.highMovingItems, ol.item.number + ",") ||
> > $S.endsWithIgnoreCase(vars.highMovingItems, ol.item.number)) {
> > 
> > Caused by: java.lang.ClassCastException: Cannot cast
> > org.openjdk.nashorn.internal.runtime.Undefined to java.lang.CharSequence
> > 
> > --
> > 
> > 
> > Se Hee Lee / CTO
> > ------------------------------
> > 
> > 11605 Haynes Bridge Rd, Suite 200 | Alpharetta, GA 30009
> > 470-214-3636 | [email protected] | www.deposco.com
> > <https://deposco.com/?utm_source=Email%20Signature>
> > 
> > [image: Twitter]  <https://twitter.com/deposco> [image: Facebook]
> > <https://facebook.com/deposco> [image: Google +]
> > <https://plus.google.com/+Deposco> [image: LinkedIn]
> > <https://www.linkedin.com/company-beta/384437/>
> > 
> > <https://deposco.com/?utm_source=Email%20Signature>
> 
> 
> 
> -- 
> Se Hee Lee / CTO
> 11605 Haynes Bridge Rd, Suite 200 | Alpharetta, GA 30009 
> 470-214-3636 | [email protected] | www.deposco.com 
> 
>        
> 
> 
> 

Reply via email to