Hi,
After searching around this site and Google and refering to the Script Runner confluence page I just can't get my validator script to work and need some help.
I am trying to implement a simple validator script that will check the following for the issue being transitioned:
1) there must be at least 1 linked issue with a name of Test
2) assuming statement 1 above is true then all linked issues with a name of Test must be in a specific status
The code I have so far is:
import com.atlassian.jira.ComponentManager import org.apache.log4j.Category import com.atlassian.jira.issue.link.IssueLink; import com.opensymphony.workflow.InvalidInputException log = Category.getInstance("com.onresolve.jira.groovy.LinkedIssues") testlinkType = ["Test"] linkMgr = ComponentManager.getInstance().getIssueLinkManager() // We are looking for the Inward Link of "Is Tested By" for (IssueLink link in linkMgr.getInwardLinks(issue.id)) { if ((testlinkType.contains(link.issueLinkType.name))) { if (!link.getSourceObject().getStatusObject() == "Template") { invalidInputException = new InvalidInputException("Linked issue " + link.getId() + " is not in a status of Template") } } }
Any help would be greatly appreciated.
Thanks.
I figured it out - I was not using the getName() method i.e. link.getSourceObject().getStatusObject().getName())
Would you mind posting the complete script? I'm looking to check status of linked issues as well.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I would like the complete script too since I'm trying to do the exact same thing. Could you post it?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi All,
Sorry for such a late response!
Here is the script I created in the end.
Steve
import com.atlassian.jira.ComponentManager import org.apache.log4j.Category import com.atlassian.jira.issue.link.IssueLink; import com.opensymphony.workflow.InvalidInputException log = Category.getInstance("com.onresolve.jira.groovy.LinkedIssues") log.debug("issue key: " + issue.key) passesCondition = true testlinkType = ["Test"] testlinkStatus = ["Template"] linkMgr = ComponentManager.getInstance().getIssueLinkManager() // Check for at least 1 inward Test issue if (!linkMgr.getInwardLinks(issue.getId())*.issueLinkType.name.contains('Test')) { log.debug("no Test issue links exist") invalidInputException = new InvalidInputException("There must be at least 1 'is tested by' link") throw invalidInputException // return false } // We are looking for the Inward Link of "Is Tested By" for (IssueLink link in linkMgr.getInwardLinks(issue.id)) { log.debug("linked issue type: " + link.issueLinkType.name) log.debug("linked issue key: " + link.getSourceObject().getKey()) log.debug("linked issue status (name): " + link.getSourceObject().getStatusObject().getName()) log.debug("linked issue status (id): " + link.getSourceObject().getStatusObject().getId()) if ((testlinkType.contains(link.issueLinkType.name))) { log.debug("we have a Test issue")
// The issue needs to be in a Template status if (!link.getSourceObject().getStatusObject().getName().contains("Template")) { log.debug("issue " + link.getSourceObject().getKey() + " is not in Template state") invalidInputException = new InvalidInputException("Linked issue " + link.getSourceObject().getKey() + " is not in a status of Template") throw invalidInputException } } }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, wonder if you can help? I need a script which validates the issue type before transition to next status.
So for example on transtion to "Review & Planning" the issue type must be set to "Bug", Change Control", "GAP", "Enhancement" or "Configuration".
Thanks!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Updated for JIRA 7-
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.link.IssueLinkManager import org.apache.log4j.Category import com.atlassian.jira.issue.link.IssueLink; import com.opensymphony.workflow.InvalidInputException def Category log = Category.getInstance("com.onresolve.jira.groovy.LinkedIssues") log.debug("issue key: " + issue.key) Boolean passesCondition = true String testlinkType = ["Test Case"] String testlinkStatus = ["Active"] IssueLinkManager linkMgr = ComponentAccessor.getIssueLinkManager() // Check for at least 1 inward Test issue if (!linkMgr.getInwardLinks(issue.getId())*.issueLinkType.name.contains('Test Case')) { log.debug("no Test Case issue links exist") invalidInputException = new InvalidInputException("There must be at least 1 'executes' link") throw invalidInputException // return false } // We are looking for the Inward Link of "Is Tested By" for (IssueLink link in linkMgr.getInwardLinks(issue.id)) { log.debug("linked issue type: " + link.issueLinkType.name) log.debug("linked issue key: " + link.getSourceObject().getKey()) log.debug("linked issue status (name): " + link.getSourceObject().getStatus().getName()) log.debug("linked issue status (id): " + link.getSourceObject().getStatus().getId()) if ((testlinkType.contains(link.issueLinkType.name))) { log.debug("we have a Test Case issue") // The issue needs to be in an Active status if (!link.getSourceObject().getStatus().getName().contains("Active")) { log.debug("issue " + link.getSourceObject().getKey() + " is not in Active state") invalidInputException = new InvalidInputException("Linked issue " + link.getSourceObject().getKey() + " is not in a status of Active") throw invalidInputException } } }
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.