2014-01-29 4 views
0


Я использую JRJC jira-rest-java-client-2.0.0-m2.
Моя цель - копировать настраиваемое поле из проблемы и создавать новую проблему со значением. Это обычно работает прекрасно:Jira 6.1.6 Java REST api - Невозможно установить пользовательское значение выпадающего списка

Field trigger = issue.getFieldByName("Trigger"); 
if (trigger != null) { 
    newIssue.setFieldValue(trigger.getId(), trigger.getValue()); 
} 

(The newIssue является объектом типа IssueInputBuilder, вопрос типа выпуска)

Но она не работает с выпадающим списком (выбором одного элемента), это бросает следующее исключение:

com.atlassian.jira.rest.client.domain.input.CannotTransformValueException: Any of available transformers was able to transform given value. Value is: org.codehaus.jettison.json.JSONObject: {"self":"http:\/\/localhost:8080\/rest\/api\/2\/customFieldOption\/10100","value":"SQL Statement","id":"10100"} 
    at com.atlassian.jira.rest.client.domain.input.ValueTransformerManager.apply(ValueTransformerManager.java:83) 
    at com.atlassian.jira.rest.client.domain.input.IssueInputBuilder.setFieldValue(IssueInputBuilder.java:135) 
    at com.sonydadc.lfiala.jira.CopyUtil.copy(CopyUtil.java:152) 
    at com.sonydadc.lfiala.jira.JiraUtil.copyTask(JiraUtil.java:90) 
    at com.sonydadc.lfiala.jira.Start.main(Start.java:13) 

Установка значения непосредственно не работает Eiter:

Field trigger = issue.getFieldByName("Trigger"); 
     if (trigger != null) { 
      newIssue.setFieldValue(trigger.getId(), trigger); 
     } 

Когда я попробовать это, это исключение:

com.atlassian.jira.rest.client.RestClientException: Could not find valid 'id' or 'value' in the Parent Option object. 
    at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:165) 
    at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:159) 
    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:285) 
    at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:162) 
    at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072) 
... 

Эти исключения вышвырнут, когда JIRA-клиент пытается установить значение в issueinputbuilder.
Как это решить?

Спасибо заранее, Лоренц

EDIT я попробовал то же самое с новейшими M25 версии JIRA-отдых-Java-клиент-апи и JIRA-отдых-Java-клиент-ядро, и он не сделал работа либо

FYI У меня уже есть googled. много. Я не нашел ничего, что могло бы решить мою проблему (по крайней мере, не на первых страницах: /)

ответ

4

Хорошо я решил это сам :)

Если кто-то удивляется, вот как:

IssueField trigger = issue.getFieldByName("Trigger"); 
     if (trigger != null) { 
      JSONObject triggerJO = (JSONObject) trigger.getValue(); 
      newIssue.setFieldValue(trigger.getId(), ComplexIssueInputFieldValue.with("value", triggerJO.get("value"))); 
     } 

Это выполняется с новыми версиями api m25 (jira-rest-java-client-api и jira-rest-java-client-core).