org.mozilla.javascript.EcmaError: TypeError: Cannot find function lastIndexOf
Hi, when I am opening Work Item I am getting an error:
2016-05-12 15:08:23,179 [Default Executor-thread-22758 @@ 15:08 jazzadmin <com.ibm.team.dashboard.viewDashboard/Work Items@c9744e2c-b848-4fc8-887f-60117b541f74> /ccm/service/com.ibm.team.workitem.common.internal.rest.IWorkItemRestService/allValues] ERROR com.ibm.team.workitem.common - Error invoking value provider 'Expected Provider' associated with the attribute 'Expected Amount Year0' in the project area with id '_Gf11gBggEea1KYcnS7uVGg'. You can link to the project area definition using a URL similar to https://thehostname:9443/jazz/process/project-areas/_Gf11gBggEea1KYcnS7uVGg, where the host name, port and jazz context are configured for your installation. Contact your project area administrator for assistance. com.ibm.team.repository.common.TeamRepositoryException: Unexpected exception type at com.ibm.team.workitem.shared.common.internal.valueProviders.ScriptAttributeValueProvider.handleException(ScriptAttributeValueProvider.java:281) at com.ibm.team.workitem.shared.common.internal.valueProviders.ScriptAttributeValueProvider.getValue(ScriptAttributeValueProvider.java:69) .. at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1018) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627) at java.lang.Thread.run(Thread.java:809) Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot find function lastIndexOf in object 0. (expected-provider.js#106) at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3557) at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3535) ..I have a Calculated Value script defined, the one mentioned in this error message (expected-provider.js#106), and attribute to which it was define should be update only if Dependent attributes were changed, what did not happened in this case. What is even more interesting if those Dependent attributes are changed this "lastIndexOf" is working fine, see the attached screen shot: There is also one more question about the line mentioned in the error message, 106 is empty what can we checked in the attached above screen shot. |
3 answers
It's looks like the variable "identifier" is treated as an "object" rather than a "string" when the error is thrown. The error says "object 0". The "object" type does not have a lastIndexOf() function, hence the error. You can add a line console.log(typeof identifier) to confirm this.
If at the time when the error is thrown, the value of "identifier" is correct, you can force it into a string by padding space or a dot (.) at the beginning of the value. Without debugging, it's hard to say what the value actually is and how it causes the error. I'm not too worried about the line number though as long as you can see which line throws the error. |
Hi Donald,
Thank you for your suggestion. You have right, this function was not recognized because the value which should be assigned were not during the Work Item opening. After I added a condition to check if those values were set correctly this issue was solved, see example below: var deliveryDateValue = workItem.getValue('avppipeline.workitemtype.deliveryDate'); var deliveryEndDateValue = workItem.getValue('avppipeline.workitemtype.deliveryEndDate'); var amountValue = workItem.getValue('avppipeline.workitemtype.amount');But when I am saving Work Item with all those value recalculated (all correctly calculated and shown) all of them are set to zero. It looks like there is something else related. What is still wondering me is the fact why this script is executed on Work Item opening , considering the documentation Work Items attribute customization it should not: Script-based calculated valuesNote: You can find general information about script-based attribute customization in the Using scripts for attribute customization section.If you configure a Script-based calculated value, the script will be executed in three cases:
and also what is going on when when Work Item is saved? I should add that brake points set in this script are not reached when Work Item is saved, or when it is reloaded, so in cases when there are some problems. In case when a Dependent attributes are changed debugging in Chrome works fine. Comments
Donald Nong
commented May 15 '16, 7:53 p.m.
When you save the work item, the script will be executed on the server, so the break points will not have any effects as they are tied to the browser. You will need to use the console.log() technique for debugging. I cannot explain how the script is executed but based on my observation, it will be executed at least twice in the browser - when the editor is loaded, and when the depending attribute is changed.
|
Hi Donald, you are right. In fact I noticed that you can debug those scripts using the RTC Eclipse Client to simulate how they are working on the server side.
|
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.