Openbravo Issue Tracking System - Openbravo ERP
View Issue Details
0036842Openbravo ERPA. Platformpublic2017-09-12 09:032017-09-14 13:39
alostale 
caristu 
normalmajorhave not tried
closedfixed 
5
 
3.0PR17Q33.0PR17Q3 
alostale
Core
No
0036842: jre8: js defaults containing Dates fail
When there is a default JavaScript value evaluated in server and it use JavaScript Date objects it fails when running in Java 8.
1. Open new Purchase Order Report
   -> ERROR:
      - Starting Date field is not defaulted (it should be default to today)
      - See openbravo.log:
ERROR org.openbravo.client.application.process.DefaultsProcessActionHandler - Error trying getting defaults and Filter Expressions for process: Cannot cast jdk.nashorn.internal.objects.NativeDate to java.util.Date
java.lang.ClassCastException: Cannot cast jdk.nashorn.internal.objects.NativeDate to java.util.Date
    at java.lang.invoke.MethodHandleImpl.newClassCastException(MethodHandleImpl.java:361)
    at java.lang.invoke.MethodHandleImpl.castReference(MethodHandleImpl.java:356)
    at jdk.nashorn.internal.scripts.Script$1$\^eval\_.:program(<eval>:1)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
    at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
    at org.openbravo.client.application.ParameterUtils.getJSExpressionResult(ParameterUtils.java:281)
    at org.openbravo.client.application.ParameterUtils.getParameterDefaultValue(ParameterUtils.java:220)
In Java 8 JavaScript engine was changed from Rhino to Nashorn. JavaScript Dates evaluated in server, returned a java.util.Date in Rhino, but with Nashorn they are evaluated to jdk.nashorn.internal.objects.NativeDate. It will be necessary to implement proper casting (through reflection?) to support both Java 7 and 8.
No tags attached.
blocks defect 0036834 closed caristu jre8: js defaults containing Dates fail 
Issue History
2017-09-13 08:14alostaleTypedefect => backport
2017-09-13 08:14alostaleTarget Version => 3.0PR17Q3
2017-09-13 10:25hgbotCheckin
2017-09-13 10:25hgbotNote Added: 0099008
2017-09-13 10:25hgbotStatusscheduled => resolved
2017-09-13 10:25hgbotResolutionopen => fixed
2017-09-13 10:25hgbotFixed in SCM revision => http://code.openbravo.com/erp/backports/3.0PR17Q3/rev/415490026f0582e63aca0fedf1b348d71b2e97ab [^]
2017-09-13 10:25caristuReview Assigned To => alostale
2017-09-14 13:39alostaleNote Added: 0099042
2017-09-14 13:39alostaleStatusresolved => closed
2017-09-14 13:39alostaleFixed in Version => 3.0PR17Q3

Notes
(0099008)
hgbot   
2017-09-13 10:25   
Repository: erp/backports/3.0PR17Q3
Changeset: 415490026f0582e63aca0fedf1b348d71b2e97ab
Author: Carlos Aristu <carlos.aristu <at> openbravo.com>
Date: Wed Sep 13 10:24:26 2017 +0200
URL: http://code.openbravo.com/erp/backports/3.0PR17Q3/rev/415490026f0582e63aca0fedf1b348d71b2e97ab [^]

fixes issue 36842: js defaults containing Dates fail in JRE8

  In Java 8 JavaScript engine was changed from Rhino to Nashorn. JavaScript Dates evaluated in server, returned a java.util.Date in Rhino, but with Nashorn they are evaluated to jdk.nashorn.internal.objects.NativeDate.

  This change caused a ClassCastException in JRE8 when invoking the methods of OBBindings which receive a java.util.Date as an argument. To fix the problem those methods have been overloaded by receiving an Object as argument. Therefore these methods will be invoked when working with JRE8, and we use reflection to retrieve the time information avoiding using classes which are not supported in JRE7.

---
M modules/org.openbravo.client.application/src/org/openbravo/client/application/OBBindings.java
---
(0099042)
alostale   
2017-09-14 13:39   
reviewed

tested with java 7 and 8 in both cases working correctly