I am using scriptrunner postfunction and validator to perform 3 transitions back to back. The problem is that I receive an error message saying
[comment:Please, add a comment.] although a comment has actually been adde as you can see in the screenshot
Here is the code I have used, anyone knows how to fix this?
package CombineTransitions
import com.onresolve.scriptrunner.runner.util.UserMessageUtil
import com.atlassian.jira.issue.Issue;
import org.apache.log4j.Logger
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.issue.Issue;
import CombineTransitions.Configuration_CombineTransitions
import com.atlassian.jira.bc.issue.IssueService.IssueResult
import com.atlassian.jira.bc.issue.IssueService.TransitionValidationResult
import com.atlassian.jira.event.type.EventDispatchOption
import java.util.concurrent.TimeUnit
import java.util.concurrent.ScheduledExecutorService
import java.util.concurrent.Executors
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.workflow.WorkflowTransitionUtil
import com.opensymphony.workflow.WorkflowContext;
import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;
import com.atlassian.jira.util.JiraUtils;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.util.ErrorCollection
import com.atlassian.jira.workflow.WorkflowException
import com.atlassian.jira.issue.fields.CustomField
import com.onresolve.jira.groovy.user.FormField
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.component.ComponentAccessor
import com.opensymphony.workflow.InvalidInputException
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.fields.screen.FieldScreenRenderLayoutItem;
import com.atlassian.jira.issue.fields.screen.FieldScreenRenderTab;
import com.atlassian.jira.issue.fields.screen.FieldScreenRenderer;
def log1 = Logger.getLogger("atlassian-jira.log")
def combineTransitionsHashMap= Configuration_CombineTransitions.getCombineTransitionsHashMap()
def issueStatusTypeId = combineTransitionsHashMap["issueStatusTypeId"] as String;
def transitionFromOpentoFixed = combineTransitionsHashMap["transitionFromOpentoFixed"] as Integer;
def transitionFromFixedToTested = combineTransitionsHashMap["transitionFromFixedToTested"] as Integer;
def transitionFromTestedToCompleted = combineTransitionsHashMap["transitionFromTestedToCompleted"] as Integer;
def fixedStatusName = combineTransitionsHashMap["fixedStatusName"] as String;
def testedStatusName = combineTransitionsHashMap["testedStatusName"] as String;
def completedStatusName = combineTransitionsHashMap["completedStatusName"] as String;
def fixedStatusId = combineTransitionsHashMap["fixedStatusId"] as String;
def testedStatusId = combineTransitionsHashMap["testedStatusId"] as String;
def completedStatusId = combineTransitionsHashMap["completedStatusId"] as String;
def errorMessage = combineTransitionsHashMap["errorMessage"] as String;
if (issue.getStatus().getSimpleStatus().getId().equals(issueStatusTypeId)) {
def ok = false
ok=performTransition(transitionFromOpentoFixed, fixedStatusName, fixedStatusId, errorMessage);
log.warn("MOUNA first boolean "+ok +" "+fixedStatusName)
if(ok){
ok= performTransition(transitionFromFixedToTested, testedStatusName, testedStatusId, errorMessage);
log.warn("MOUNA second boolean "+ok +" "+testedStatusName)
if(ok){
ok= performTransition(transitionFromTestedToCompleted, completedStatusName, completedStatusId, errorMessage);
log.warn("MOUNA third boolean "+ok +" "+completedStatusName)
}
}
}
def performTransition(int transitionToBeDone, String destinationStatus, String statusId , String errorMessage) {
log.warn("MOUNA ORIGINAL STATUS "+ issue.getStatus() + "DEST STATUS "+ destinationStatus)
//issue = ComponentAccessor.getIssueManager().getIssueObject(issue.id)
issue = transientVars.get("issue");
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
String issueKey = issue.getKey()
IssueService issueService = ComponentAccessor.getIssueService()
def issueInputParameters = issueService.newIssueInputParameters()
issueInputParameters.setComment("Transitioning issue from status "+ issue.getStatus().getName()+" to status "+ destinationStatus );
WorkflowTransitionUtil workflowTransitionUtil = (WorkflowTransitionUtil) JiraUtils.loadComponent(WorkflowTransitionUtilImpl.class)
workflowTransitionUtil.setIssue(issue)
workflowTransitionUtil.setAction(transitionToBeDone)
//workflowTransitionUtil.addAdditionalInput(transientVars.get("comment"))
log.warn("MOUNA "+transientVars)
ErrorCollection errorCollection=workflowTransitionUtil.validate()
if (errorCollection.hasAnyErrors()) {
log.warn("MOUNA here 1 "+errorCollection.getErrorMessages().toString())
throw new InvalidInputException(errorCollection.getErrors().toString())
return false;
}else{
ErrorCollection progressErrorCollection=workflowTransitionUtil.progress()
if(progressErrorCollection.hasAnyErrors()){
log.warn("MOUNA here 2 "+progressErrorCollection.getErrors().toString())
throw new InvalidInputException(progressErrorCollection.getErrors().toString())
return true;
}else{
return true;
}
}
}
//@SuppressWarnings("rawtypes")
// Map getPopulatedFieldValuesHolder(WorkflowTransitionUtil workflowTransitionUtil, MutableIssue issue) throws Exception{
// Map fieldValuesHolder = new HashMap();
// FieldScreenRenderer fieldScreenRenderer = workflowTransitionUtil.getFieldScreenRenderer();
// for (FieldScreenRenderTab fieldScreenRenderTab in fieldScreenRenderer.getFieldScreenRenderTabs())
// for (FieldScreenRenderLayoutItem fieldScreenRenderLayoutItem in fieldScreenRenderTab.getFieldScreenRenderLayoutItems())
// if (fieldScreenRenderLayoutItem.isShow(issue)) {
// fieldScreenRenderLayoutItem.populateFromIssue(fieldValuesHolder, issue);
// log.warn("fieldScreenRenderLayoutItem MOUNA "+fieldScreenRenderLayoutItem.getFieldScreenLayoutItem().getFieldScreenTab().getFieldScreen().getName())
// }
// return fieldValuesHolder;
// }
// String getError(String error){
// return error;
// }