2016-08-23 77 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来获取值