2016-08-23 76 views
0

我正在將一些代碼從Jira Soap Api遷移到Jira Rest API。我有一個行的遺留代碼,看起來像的:從jira soap api遷移到jira rest api:與getCustomFieldValues相關的問題

String estimationTypes = issue.getCustomFieldValues().find{it.customfieldId == SOME_STRING_VALUE_HERE}?.values.toString()

issue變量是com.atlassian.jira.rpc.soap.beans.RemoteIssue型的,我試圖遷移,並使用新的Issue接口(com.atlassian.jira.issue.Issue)的實現,等等我在尋找getCustomFieldValues()方法的等效被定義爲

public RemoteCustomFieldValue[] getCustomFieldValues() { 
     return this.customFieldValues; 
    } 

但我沒有找到它。問題接口定義Object getCustomFieldValue(CustomField customField)這是不一樣的。那麼我怎樣才能使用相當於getCustomFieldValues的方法呢?

我想,如果我有一個像

List<CustomField> getCustomFields()的方法,然後我就能夠創建一個方法:像

public List<Object> getCustomFieldValues() { 
    List<Object> result = new ArrayList<>() 
    List<CustomField> customFields = getCustomFields() 
    for(CustomField cs: customFields) { 
     result.add(issue.getCustomFieldValue(cs)) 
    } 
    return result  
} 

我的目標是使移民與上最小的可能影響遺留代碼。在那裏,我希望儘可能地模仿遺留代碼的行爲。任何幫助或指示高度讚賞。

+1

好像'com.atlassian.jira.issue.CustomFieldManager'是您正確的 - 它提供了一些'名單 getCustomFields()'查詢。 – xerx593

+0

@ xerx593謝謝。 CustomFieldManager是否是jira-java-rest-api的一部分?有沒有辦法做到這一點,而不使用java rest api並直接訪問jira-rest-api端點? – alainlompo

+0

@alainlompo,你可以勾選這個[link](https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-查詢問題)從atlassian文檔並使用'soapui'來測試它。 – Rao

回答

0

在我曾經使用過的最有趣的API之一進行了大量研究和捲曲之後,我在Atlassian知識庫here上找到了一些非常有用的信息。該文本的目標是多選自定義字段,但對其他類型的自定義字段也是有用的。

它明確提到JIRA的REST API沒有提供簡單檢索多選項自定義字段的所有可用選項的方法。因此,這裏使用的方法被認爲是一種解決方法。因此,我們可以使用

  • 的創建問題元API(here
  • 或者編輯問題元API(here

Showing the custom field allowed values

繼兩元的API鏈接,參數從創建meta api很簡單,但在編輯meta api的情況下,有一個請求參數叫做overrideScreenSecurity,它與附加用戶和直接訪問附加組件市場fr相關om web界面,但在我的情況並不相關,默認(false)值對我來說很好。

在這裏,我可以解析JSON來獲取值