Hello everyone,
I have browsed extensively on this error, and people either say that the field name is wrong or the field value is wrong in their cases but I have tried all possible combinations to no avail.
I am using Java API for JIRA to create a new bug, and my company has a field called "Detected by Test Type" (customfield_15870). The accepted values are "Integration Testing", "Functional Testing" and "Performance Testing". Each look like this (I did a getField on this field from an existing bug and got individual values)
value: "Performance Testing" id: "12345" self: "https:///rest/api/2/customFieldOption/12345" disabled: false
This tells me I got the field name correct, and the individual values correct too.
Here is my code:
Map<String, Object> cascadingValues = new HashMap<String, Object>();
cascadingvalues.put("value", "Performance Testing");
cascadingvalues.put("id", "12345");
cascadingvalues.put("disabled", false);
cascadingvalues.put("self", "https://<url>/rest/api/2/customFieldOption/12345");
iib.setFieldValue("customfield_15870", new ComplexIssueInputFieldValue(cascadingValues));
I have tried these options as well:
iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("value", "Performance Testing"));
iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("id", "Performance Testing"));
iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("value", "12345"));
iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("id", "12345"));
And yet, it throws me the "Option id 'null' is not valid" error. Can someone please help?
Here is the stack trace:
RestClientException{statusCode=Optional.of(400), errorCollections=[ErrorCollection{status=400, errors={customfield_15870=Option id 'null' is not valid}, errorMessages=[]}]}
at com.atlassian.jira.rest.client.internal.async.DelegatingPromise.claim(DelegatingPromise.java:47)
at com.bla.jira.IssueWriterBeta.createIssue(IssueWriterBeta.java:340)
at com.bla.almutil.ConnectToJira.createEpic(ConnectToJira.java:282)
at com.bla.almutil.ConnectToJira.main(ConnectToJira.java:378)
Caused by: RestClientException{statusCode=Optional.of(400), errorCollections=[ErrorCollection{status=400, errors={customfield_15870=Option id 'null' is not valid}, errorMessages=[]}]}
at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:173)
at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:167)
at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(ResponsePromiseMapFunction.java:48)
at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(ResponsePromiseMapFunction.java:12)
at com.atlassian.util.concurrent.Promises$Of$3.apply(Promises.java:295)
at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:185)
at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072)
at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:253)
at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:161)
at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:146)
at com.google.common.util.concurrent.AbstractFuture.done(AbstractFuture.java:235)
at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:172)
at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:53)
at com.atlassian.util.concurrent.Promises$Of$3.apply(Promises.java:295)
at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:185)
at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072)
at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:253)
at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:161)
at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:146)
at com.google.common.util.concurrent.AbstractFuture.done(AbstractFuture.java:235)
at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:172)
at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:53)
at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$1$1.run(SettableFuturePromiseHttpPromiseAsyncClient.java:46)
at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$ThreadLocalDelegateRunnable$1.run(SettableFuturePromiseHttpPromiseAsyncClient.java:197)
at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient.runInContext(SettableFuturePromiseHttpPromiseAsyncClient.java:90)
at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$ThreadLocalDelegateRunnable.run(SettableFuturePromiseHttpPromiseAsyncClient.java:192)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Thank you in advance!
Is this a Cascading Select List field? If so, is the child value required? It looks like you're setting the first value, but not the second.
To set the second value, I think this should work (or something very similar)
"customfield_15870": {"id":"12345", "child":{"id":"23456"}}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.