I have two checkbox fields. If one is checked, the other cannot/should not be checked and vice versa. I have a Behaviour set up to disable one checkbox if the other is checked, but somehow an issue slipped by. To prevent this from happening again, in addition to the Behaviour, I wanted to add a validator to ensure that the two cannot both be checked in order to Create the issue. Therefore, I set up a Custom Validator on the Create transition. It looks like this:
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.component.ComponentAccessor
import org.apache.log4j.Category;
import com.opensymphony.workflow.InvalidInputException;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.comments.CommentManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.util.ImportUtils;
import com.opensymphony.util.TextUtils
import com.atlassian.jira.component.ComponentAccessor;
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cfValue1 = customFieldManager.getCustomFieldObjectsByName("Custom Field 1")
def cfValue2 = customFieldManager.getCustomFieldObjectsByName("Custom Field 2")
if(cfValue1== 'Yes'){
if(cfValue2 == 'Yes'){
return false
}
return true
}
else{return true}
There's no error being thrown, but the issue can be created with both checkboxes checked (Yes). I would appreciate a suggestion.
Your problem is that value of checkbox custom field is not of String type. I think this custom field contains collection of options. If both fields have only Yes value,the simplest condition is
if(cfValue1 && !cfValue1.isEmpty() && cfValue2 && !cfValue2.isEmpty()){ return false; }
I tried it and tested it by checking both boxes, and the issue was still created. :(
Here's what the validator code looked like:
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.component.ComponentAccessor
import org.apache.log4j.Category;
import com.opensymphony.workflow.InvalidInputException;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.comments.CommentManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.util.ImportUtils;
import com.opensymphony.util.TextUtils
import com.atlassian.jira.component.ComponentAccessor;
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cfValue1 = customFieldManager.getCustomFieldObjectsByName("Custom Field 1")
def cfValue2 = customFieldManager.getCustomFieldObjectsByName("Custom Field 2")
if(cfValue1 && !cfValue1.isEmpty() && cfValue2 && !cfValue2.isEmpty()){ return false;
}
Did I possibly mess it up?
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.