Hi,
I have this code snipppet:
import com.atlassian.jira.project.version.Version
Collection <Version> fixVersions = issue.getFixVersions()
for (fv in fixVersions) {
log.debug (String.format('issue=%s fv=%s isArchived=%s isReleased=%s', issue.key, fv.getName(),
fv.isArchived(), fv.isReleased()))
if (fv.isReleased()) {
log.debug("yes ${fv.getName()} is released.")
}
}
When i run it using "Groovy Script Tester" from JMWE (Jira Misc Workflow Extensions), i see:
DEBUG: issue=PRJ-90210 fv=foo.1.0 isArchived=true isReleased=true DEBUG: yes foo.1.0 is released. DEBUG: issue=PRJ-90210 fv=bar.3.0 isArchived=false isReleased=false
which is the expected results.
Running this code snippet in the Scriptrunner Script Console
IssueManager issueManager = ComponentAccessor.getIssueManager()
Issue issue = issueManager.getIssueObject('PRJ-90210')
Collection <Version> fixVersions = issue.getFixVersions()
for (fv in fixVersions) {
log.debug (String.format('issue=%s fv=%s isArchived=%s isReleased=%s', issue.key, fv.getName(),
fv.isArchived(), fv.isReleased()))
if (fv.isReleased()) {
log.debug("yes ${fv.getName()} is released.")
}
}
gives the expected output as seen in the "Groovy Script Tester".
However, when i run the same exact code snippet as a Scriptrunner Validator, i only see:
issue=PRJ-90210 fv=bar.3.0 isArchived=false isReleased=false
The archived fixversion (foo.1.0) did NOT show up.
What could be the problem?
Thanks
--Andrew
Hi, I've found a solution to get the archived fix versions in the scriptrunner validators. Here is my code:
import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.component.ComponentAccessor; import com.opensymphony.workflow.InvalidInputException IssueManager issueManager = ComponentAccessor.getIssueManager() Issue myIssue = issueManager.getIssueObject(issue.getKey()) // myIssue -> the issue object in the past.
// issue -> the issue object in validation time
// To avoid false positive when removing all the fixed versions, we are checking if any of these fixed versions of the issue in the past are archived. if (issue.getResolution().name == "Fixed or Completed" && ! (issue.fixVersions || myIssue.fixVersions*.archived.contains(true))) { throw new InvalidInputException("fixVersions", "Fix Version/s is required when specifying Resolution of 'Fixed'") }
As you can see, my solution is to instance another issue object with the same key.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.