Opened 9 years ago
Closed 9 years ago
#14428 closed defect (invalid)
javax.script.ScriptException not caught when invoking opening_hours.js
| Reported by: | ypid23 | Owned by: | team |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Core validator | Version: | |
| Keywords: | opening_hours | Cc: |
Description
Hi
Unfortunately opening_hours.js can crash with certain values. Can you catch this exception and show a warning in the validation. opening_hours.js is not expected to crash for values following the syntax.
This was first reported upstream and is a known problem: https://github.com/opening-hours/opening_hours.js/issues/209
Steps to reproduce:
- Try to validate "Monday - Friday: 8:30 AM-5:30PM, Saturday: 9AM-1PM" from v1 of https://www.openstreetmap.org/way/422234085
- Check console log
2017-02-28 16:13:28.673 SEVERE: javax.script.ScriptException: TypeError: Cannot read property "0" from undefined in <eval> at line number 43. Cause: jdk.nashorn.internal.runtime.ECMAException: TypeError: Cannot
read property "0" from undefined
javax.script.ScriptException: TypeError: Cannot read property "0" from undefined in <eval> at line number 43
at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)
at jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:392)
at jdk.nashorn.api.scripting.NashornScriptEngine.invokeMethod(NashornScriptEngine.java:199)
at org.openstreetmap.josm.data.validation.tests.OpeningHourTest.checkOpeningHourSyntax(OpeningHourTest.java:214)
at org.openstreetmap.josm.data.validation.tests.OpeningHourTest.checkOpeningHourSyntax(OpeningHourTest.java:183)
at org.openstreetmap.josm.data.validation.tests.OpeningHourTest.check(OpeningHourTest.java:258)
at org.openstreetmap.josm.data.validation.tests.OpeningHourTest.check(OpeningHourTest.java:265)
at org.openstreetmap.josm.data.validation.Test$TagTest.visit(Test.java:128)
at org.openstreetmap.josm.data.osm.Way.accept(Way.java:211)
at org.openstreetmap.josm.data.validation.Test.visit(Test.java:211)
at org.openstreetmap.josm.actions.ValidateAction$ValidationTask.realRun(ValidateAction.java:166)
at org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun(PleaseWaitRunnable.java:93)
at org.openstreetmap.josm.gui.PleaseWaitRunnable.run(PleaseWaitRunnable.java:141)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: <eval>:43 TypeError: Cannot read property "0" from undefined
at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172)
at jdk.nashorn.internal.runtime.Undefined.get(Undefined.java:157)
at jdk.nashorn.internal.scripts.Script$Recompilation$117$212984AAA$\^eval\_.opening_hours#L:43#L:43#formatWarnErrorMessage(<eval>:43)
at jdk.nashorn.internal.scripts.Script$Recompilation$108$219955A$\^eval\_.opening_hours#L:43#L:43#getWarnings(<eval>:44)
at jdk.nashorn.internal.scripts.Script$Recompilation$100$281175$\^eval\_.opening_hours#L:43#L:43#getWarnings-1(<eval>:45)
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.ScriptObjectMirror.callMember(ScriptObjectMirror.java:199)
at jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:386)
... 16 more
Attachments (0)
Change History (3)
comment:1 by , 9 years ago
| Milestone: | → 17.03 |
|---|
comment:2 by , 9 years ago
| Milestone: | 17.03 |
|---|
comment:3 by , 9 years ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
I'm closing this issue. When the root cause will be fixed in the library we'll update with pelasure :)



The exception is already catched. As it is a bug in the library I don't see the point to present it to the user, it doesn't mean the value is incorrect.