Rhino on JDK7 treats Boolean as an object - e.g. to return 'false' one needs to return 'null'
1.1 --- a/boot-script/src/main/java/net/java/html/boot/script/ScriptPresenter.java Tue Apr 19 20:31:18 2016 +0200
1.2 +++ b/boot-script/src/main/java/net/java/html/boot/script/ScriptPresenter.java Thu Apr 21 08:58:57 2016 +0200
1.3 @@ -74,6 +74,17 @@
1.4 final class ScriptPresenter implements Fn.KeepAlive,
1.5 Presenter, Fn.FromJavaScript, Fn.ToJavaScript, Executor {
1.6 private static final Logger LOG = Logger.getLogger(ScriptPresenter.class.getName());
1.7 + private static final boolean JDK7;
1.8 + static {
1.9 + boolean jdk7;
1.10 + try {
1.11 + Class.forName("java.lang.FunctionalInterface");
1.12 + jdk7 = false;
1.13 + } catch (ClassNotFoundException ex) {
1.14 + jdk7 = true;
1.15 + }
1.16 + JDK7 = jdk7;
1.17 + }
1.18 private final ScriptEngine eng;
1.19 private final Executor exc;
1.20
1.21 @@ -220,6 +231,11 @@
1.22 throw new IllegalStateException(ex);
1.23 }
1.24 } else {
1.25 + if (JDK7) {
1.26 + if (toReturn instanceof Boolean) {
1.27 + return ((Boolean)toReturn) ? true : null;
1.28 + }
1.29 + }
1.30 return toReturn;
1.31 }
1.32 }