我正在尝试创建一个执行以下操作的JIRA插件:
List
个对象)。我的问题是javadoc几乎没有信息。按照教程,我目前有:
public class VotersCount extends AbstractJiraContextProvider {
@Override
public Map<String, Integer> getContextMap(User user, JiraHelper jiraHelper) {
Map<String, Integer> contextMap = new HashMap<>();
Issue currentIssue = (Issue) jiraHelper.getContextParams().get("issue");
// Issue[] linkedIssues = currentIssue.getLinkedIssuesBy(...); //Step 1 mock code
// Voter[] voters = linkedissues[3].getVoters(); //Step 2 mock code
int count = voters.length; //Pretend there is some calculation here
contextMap.put("votersCount", count);
return contextMap;
}
}
(我在.vm文件中使用votersCount
。)
但是,我在AbstractJiraContextProvider
和getContextMap
的javadocs中看不到任何解释,因此我甚至不确定它是否是正确的方法。
在我自己的研究中,我发现课程ViewVoters
有Collection<UserBean> getVoters()
方法,这是我可以使用的方法,但我不知道如何获取或构建这样的对象以某种方式与特定问题相互作用。
我正在寻找一个可以替换我的2行模拟代码的工作代码。
答案 0 :(得分:1)
1)使用IssueLinkService中的一种方法。也许getIssueLinks
2)issueVoterAccessor.getVoterUserkeys
应将IssueLinkService和IssueVoterAccessor的实例作为参数注入到VotersCount的构造函数中。
答案 1 :(得分:0)
我使用以下方法解决了这个问题:
通过指定的链接类型获取与Issue issue
相关联的问题:
LinkCollection linkCollection = ComponentAccessor.getIssueLinkManager().getLinkCollectionOverrideSecurity(issue);
Set<IssueLinkType> linkTypes = linkCollection.getLinkTypes();
// Perform operations on the set to get the issues you want.
for (IssueLinkType linkType : linkTypes) {
List<Issue> l1 = linkCollection.getOutwardIssues(linkType.getName());
List<Issue> l2 = linkCollection.getInwardIssues(linkType.getName());
}
让所有选民参加Issue issue
:
ComponentAccessor.getVoteManager().getVoterUserkeys(issue);
我后来证明,我可以延长CalculatedCFType
并覆盖getValueFromIssue
,将当前问题作为参数而不是使用
Issue currentIssue = (Issue) jiraHelper.getContextParams().get("issue");