Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

Date validation: Cannot read property "DUE_DATE"

I am trying to do date validation.Two fileds are involved here one is in-build "Due date" and the second is the custom field extended date. But when the script is triggered i get the below error:

!ENTRY com.ibm.team.workitem.common 4 0 2016-06-09 19:31:57.154
!MESSAGE Error invoking validator com.ibm.team.workitem.valueproviders.VALIDATOR._e6trIC4oEeaDz9yQi8uE-Q
!STACK 0
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.validate(ScriptAttributeValueProvider.java:149)
 at com.ibm.team.workitem.common.internal.attributeValueProviders.AttributeValueProviderRegistry$SafeValidator.validate(AttributeValueProviderRegistry.java:152)
 at com.ibm.team.workitem.common.internal.model.impl.AttributeImpl.validate(AttributeImpl.java:928)
 at sun.reflect.GeneratedMethodAccessor108.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
 at java.lang.reflect.Method.invoke(Method.java:611)
 at com.ibm.team.repository.common.internal.util.ItemStore$ItemInvocationHandler.invoke(ItemStore.java:597)
 at com.sun.proxy.$Proxy41.validate(Unknown Source)
 at com.ibm.team.workitem.client.internal.util.WorkItemEventResolver$InternalBackgroundJob.resolve(WorkItemEventResolver.java:261)
 at com.ibm.team.workitem.client.internal.util.WorkItemEventResolver$InternalBackgroundJob.runProtected(WorkItemEventResolver.java:89)
 at com.ibm.team.foundation.client.util.FoundationJob.run(FoundationJob.java:68)
 at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot read property "DUE_DATE" from undefined (date-validator.js#24)
 at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3557)
 at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3535)
 at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3563)
 at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3582)
 at org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3595)
 at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1381)
 at org.mozilla.javascript.gen.c19._c2(date-validator.js:24)
 at org.mozilla.javascript.gen.c19.call(date-validator.js)
 at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401)
 at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003)
 at org.mozilla.javascript.gen.c19.call(date-validator.js)
 at com.ibm.team.rtc.common.scriptengine.internal.bridge.proxy.AbstractInvocationHandler$MethodHandler$1.run(AbstractInvocationHandler.java:160)
 at com.ibm.team.rtc.common.scriptengine.environment.AbstractScriptEnvironment.execute(AbstractScriptEnvironment.java:74)
 at com.ibm.team.rtc.common.scriptengine.internal.bridge.proxy.AbstractInvocationHandler$MethodHandler.invoke(AbstractInvocationHandler.java:156)
 at com.ibm.team.rtc.common.scriptengine.internal.bridge.proxy.AbstractInvocationHandler.invokeGeneric(AbstractInvocationHandler.java:141)
 at com.ibm.team.rtc.common.scriptengine.internal.bridge.proxy.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:95)
 at com.sun.proxy.$Proxy55.validate(Unknown Source)
 at com.ibm.team.workitem.shared.common.internal.valueProviders.ScriptAttributeValueProvider.validate(ScriptAttributeValueProvider.java:147)
 ... 11 more

Below is my javascriot code for the same. --

dojo.provide("org.example.DateValidator");

dojo.require("com.ibm.team.workitem.api.common.Severity");
dojo.require("com.ibm.team.workitem.api.common.Status");
dojo.require("dojo.date"); // We need the date class from Dojo to compare two dates
dojo.require("dojo.date.stamp"); // We need the stamp class to work with ISO date strings

(function() {
var Severity = com.ibm.team.workitem.api.common.Severity;
var Status = com.ibm.team.workitem.api.common.Status;
var WorkItemAttributes = com.ibm.team.workitem.api.common.WorkItemAttributes;
var DateValidator = dojo.declare("org.example.DateValidator", null, {

    validate: function(attributeId, workItem, configuration) {
         console.log("hi");
        // Get the configuration parameters about the severity and error message of this validator
        var severity= configuration.getChild("parameters").getStringDefault("severity", Severity.ERROR.name);
        var message= configuration.getChild("parameters").getStringDefault("message", "");
        console.log(message);
        // Get the Due date attribute
  var dateRequiredBy=dojo.date.stamp.fromISOString(workItem.getValue(WorkItemAttributes.DUE_DATE));

         // Get the current attribute's value and make a Date object from it
  var extendedDate=dojo.date.stamp.fromISOString(workItem.getValue(attributeId));
        console.log(dateRequiredBy);
  console.log(extendedDate);
  // Compare the two dates and make sure extendedDate is not earlier than dateRequiredBy
  //If the dateRequiredBy > extendedDate = +ve else -ve
        if (dojo.date.compare(dateRequiredBy, extendedDate) <= 0) {
            return Status.OK_STATUS;
        } else {
            return new Status(Severity[severity], message);
        }
    }
});
})();

The above code was workin fine in RTC version 3.0.1. recently i have upgraded to RTC 4.0.3 and the script does't work here. WorkItemAttributes.DUE_DATE is not supported or changed in RTC 4.0.3

Please advice what is the issue here ?

Thanks 

0 votes



One answer

Permanent link

Hi All!

Found the issue!!

the below line of code was missing-

dojo.require("com.ibm.team.workitem.api.common.WorkItemAttributes");

Thanks

0 votes

Your answer

Register or log in to post 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.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details
× 10,938

Question asked: Jun 09 '16, 10:07 a.m.

Question was seen: 1,734 times

Last updated: Jun 09 '16, 10:31 a.m.

Confirmation Cancel Confirm