如何从所有相关问题中获取选民名单

时间:2015-01-13 21:24:41

标签: java jira jira-plugin

我正在尝试创建一个执行以下操作的JIRA插件:

  1. 针对每个问题,处理由"重复"链接的所有链接问题。或"由"复制(或其他预定义的链接类型)。
  2. 对于每个此类问题,请在该问题上获得选民的列表(不一定是List个对象)。
  3. 我的问题是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。)

    但是,我在AbstractJiraContextProvidergetContextMap的javadocs中看不到任何解释,因此我甚至不确定它是否是正确的方法。

    在我自己的研究中,我发现课程ViewVotersCollection<UserBean> getVoters()方法,这是我可以使用的方法,但我不知道如何获取或构建这样的对象以某种方式与特定问题相互作用。

    我正在寻找一个可以替换我的2行模拟代码的工作代码。

2 个答案:

答案 0 :(得分:1)

1)使用IssueLinkService中的一种方法。也许getIssueLinks

2)issueVoterAccessor.getVoterUserkeys

应将IssueLinkService和IssueVoterAccessor的实例作为参数注入到VotersCount的构造函数中。

答案 1 :(得分:0)

我使用以下方法解决了这个问题:

  1. 通过指定的链接类型获取与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());
    }
    
  2. 让所有选民参加Issue issue

    ComponentAccessor.getVoteManager().getVoterUserkeys(issue);
    
  3. 我后来证明,我可以延长CalculatedCFType并覆盖getValueFromIssue,将当前问题作为参数而不是使用

    Issue currentIssue = (Issue) jiraHelper.getContextParams().get("issue");