JIRA: 6.3.12
Script runner: latest
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.ManagerFactory
import com.atlassian.jira.event.issue.IssueEventDispatcher
import com.opensymphony.workflow.InvalidInputException
bR = (issue.resolution?.id == "6")
passesCondition = true
if (issue.resolution?.id == "6")
{
cfm = componentManager.getCustomFieldManager()
nff = cfm.getCustomFieldObjects(issue).find {it.id == 'customfield_10200'}
cfv = issue.getCustomFieldValue(nff)
if (cfv == null)
{
passesCondition = false
this.invalidInputException = new InvalidInputException("customfield_10200","Defferral Justification field is required when resolving issue as Proposed to defer")
}
}
this.passesCondition=passesCondition
return [:];
When the Validator is supposed to work, I get the following:
An unknown exception occured executing Validator com.atlassian.jira.workflow.SkippableValidator@47141bd3: root cause: No such property: componentManager for class: vl_defer
Please advise.
I don't know, maybe I removed componentManager from the binding as it's deprecated. The quick fix is to add
import com.atlassian.jira.component.ComponentAccessorand replace
cfm = componentManager.getCustomFieldManager()
with
cfm = ComponentAccessor.getCustomFieldManager()
Thank you, Jamie Echlin.
It works now, I updated the plugin and introduced your code fix suggestions.
Thanks for such a great support.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you for your answer, Jamie Echlin.
The error is gone. But the validator does not work any more. It's meant to work this way: do not allow resolve with 'Propose to Defer' resolution if the customfield_10200 is empty.
It worked in JIRA6.2.
What can go wrong? Maybe there is another way to check it?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I don't understand this: this.passesCondition=passesCondition return [:]; Just do: return passesCondition
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
 
 
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.