Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Invalid value while set field options dinamically in behaviour validation script

SWATI MISHRA August 14, 2018

Hi All,

On a create issue screen, we want to have a custom field which should store all the Issues created in a Project and is of some specific type.

We are able to see all the issues in the option of the select list custom field. But getting error "Invalid value '10371' passed for customfield 'Parent Design Feature'. Allowed values are: 10100[None], -1" while trying to create it.

Below is the script that we are using :

import org.apache.log4j.Category

import com.atlassian.jira.ComponentManager

import com.atlassian.jira.issue.Issue

import com.atlassian.jira.project.Project

import com.atlassian.jira.issue.link.IssueLink

import com.atlassian.jira.component.ComponentAccessor

import com.atlassian.jira.bc.issue.IssueService

import com.atlassian.jira.bc.issue.IssueService.TransitionValidationResult

import com.atlassian.crowd.embedded.api.User

import com.atlassian.jira.issue.MutableIssue;

import com.atlassian.jira.issue.CustomFieldManager;

import com.atlassian.jira.issue.fields.CustomField;

import com.atlassian.jira.issue.link.IssueLinkManager

import com.atlassian.jira.issue.link.IssueLinkType

import com.atlassian.jira.issue.link.IssueLinkTypeManager

import com.atlassian.jira.bc.issue.search.SearchService;

import com.atlassian.jira.web.bean.PagerFilter;

import com.atlassian.jira.workflow.WorkflowTransitionUtil;

import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;

import com.atlassian.jira.util.JiraUtils;

import groovy.sql.Sql;

import java.sql.Driver

def driver = Class.forName('com.mysql.jdbc.Driver').newInstance() as Driver

def props = new Properties()

props.setProperty("user", "root")

props.setProperty("password", "root")

 

def design_parent_feature = getFieldByName("Parent Design Feature")

log.info('design_parent_feature.getFieldId().........'+design_parent_feature.getFieldId())

def customField = customFieldManager.getCustomFieldObject(design_parent_feature.getFieldId()) // Pick list Field that dictates other fields on form based on its value

log.info('design_parent_feature.getFieldId().....'+design_parent_feature.getFieldId())

def optionsManager = ComponentAccessor.getOptionsManager()

 

def config = customField.getRelevantConfig(getIssueContext())

def options = optionsManager.getOptions(config)

    log.info('options :'+options)

 

def projectKey = getIssueContext().getProjectObject().getKey()

def issueTypeName = getIssueContext().getIssueType().getName()

log.info('issueTypeName'+issueTypeName)

List<String> issueDesc = new ArrayList<String>()

Map<String,String> optionLinkedMap = new LinkedHashMap<String,String>()

if(issueTypeName == "Epic"){

    Map<String,String> option_issue_Map = new LinkedHashMap<String,String>()

    log.info('inside the epic loop')

def jqlSearch = "issuetype  = Design_Feature_Issue AND project in ('Design Workspace')";

log.info('jqlSearch: ' + jqlSearch)

    List<Issue> issueFeatureValues = new ArrayList<Issue>()

    HashMap<String,String> issueMap = new HashMap<String,String>()

 getFilterResult (jqlSearch).each{Issue issue1 ->

    log.info(issue1.getKey() + " " + issue1.getStatus().name + " " + issue1.getStatus().getName());

     log.info('adding issue into the list.....')

    issueFeatureValues.add(issue1)

     issueMap.put(issue1.getKey(),issue1.getStatus().getName())

     String issueDescString = issue1.getKey() +"  "+issue1.getSummary()

     issueDesc.add(issue1.getSummary())

     log.info('issueDesc....'+issueDesc)

     String str = issue1.getKey()

     int indexOfHyphen = str.indexOf('-')

     String issueKey = str.substring(indexOfHyphen+1,str.length())

     log.info("issueKey....."+issueKey)

     def conn = driver.connect("jdbc:mysql://localhost:3306/jiradb", props)

 def sql = new Sql(conn)

 def sqlStmt = "select jiraissue.id from jiraissue, project where project.pKey = 'DW' and issuenum ="+issueKey+" and jiraissue.project = project.ID"

    try {

            sql.eachRow(sqlStmt) {

            log.info('it fom the SQL.......'+it)

            String id = it.id;

            log.info('it.id fom the SQL.......'+it.id)

            log.info('id fom the SQL.......'+id)

            optionLinkedMap.put(id,issue1.getSummary())

            option_issue_Map.putAll(optionLinkedMap)

            }

}

finally {

    sql.close()

}

 }

        design_parent_feature.setFieldOptions(option_issue_Map)

}

 

List<Issue> getFilterResult(String jqlSearch)

{

    def user = ComponentAccessor.jiraAuthenticationContext.getLoggedInUser()

    SearchService searchService = ComponentAccessor.getComponent(SearchService.class)

    SearchService.ParseResult parseResult =  searchService.parseQuery(user, jqlSearch)

    List<Issue> issues = null

    if (parseResult.isValid()) {

       def searchResult = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter())     

       issues = searchResult.issues

    }

    else {

        return null;

    }

    return issues

}  

0 answers

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events