Hi I have following code to set field as required and the following code works as expected:
import com.onresolve.jira.groovy.user.FormField
FormField num = getFieldByName("Change Request Number");
num.setRequired(true)
I would like to write a wapper class around to avoid duplicate code every where.
Created groovy file called FieldAttr.groovy in behaviourutil folder
package behaviourutil
import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
@BaseScript FieldBehaviours fieldBehaviours
def showRequired(String field) {
log.info("inside showRequired...." + field);
FormField sField = getFieldByName(field)
sField.setRequired(true)
}
Issue is with following code, where trying to import above groovy code
import behaviourutil.FieldAttr
def d = new FieldAttr()
d.showRequired("Change Request Number");
This gives me following error:
Script function failed on issue: (create issue) project/issuetype: fieldId: customfield_11122, file: <inline script>
java.lang.NullPointerException: Cannot invoke method getFieldIdByName() on null object
at com.onresolve.jira.groovy.Behaviour$getFieldIdByName$2.call(Unknown Source)
at com.onresolve.jira.groovy.user.FieldBehaviours.getFieldByName(FieldBehaviours.groovy:53)
at com.onresolve.jira.groovy.user.FieldBehaviours$getFieldByName.callCurrent(Unknown Source)
at behaviourutil.FieldAttr.showRequired(FieldAttr.groovy:19)
at behaviourutil.FieldAttr$showRequired.call(Unknown Source)
at Script1.run(Script1.groovy:5)
I think the issue is that you can't use the BaseScript annotation on a utility script quite like that.
A utility class for two lines of code seems a bit like overkill, but you might be able to workaround it by using Groovy's means of turning methods into closures.
package behaviourutil import com.onresolve.jira.groovy.user.FormField class FieldAttr { static def showRequired(String field, getFieldByName) { FormField sField = getFieldByName(field) sField.setRequired(true) } }
Then your behaviour script would just be:
import behaviourutil.FieldAttr log.debug("Go!") FieldAttr.showRequired("TextFieldA", this.&getFieldByName)
A bit hacky, and if your method isn't actually more involved than that, I would just reduplicate the two lines of code, personally.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.