如何从所有链接的问题中获取选民名单
How to get voters lists from all linked issues
我正在尝试创建一个执行以下操作的 JIRA 插件:
- 对于每个问题,获取所有 linked 问题,这些问题由 "duplicates" 或 "is duplicated by"(或其他预定义的 link 类型)linked。
- 对于每个此类问题,获取该问题的选民列表(不一定是
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
。)
但是,我在 javadoc 中没有看到 AbstractJiraContextProvider
和 getContextMap
的解释,所以我什至不确定这是否是正确的方法。
在我自己的研究中,我发现 class ViewVoters
具有方法 Collection<UserBean> getVoters()
,这是我可以使用的东西,但我不知道如何获取或以与给定问题交互的方式构建这样的对象。
我正在寻找一个工作代码来替换我的 2 行模拟代码。
1) 使用 IssueLinkService 中的方法之一。也许 getIssueLinks
2) issueVoterAccessor.getVoterUserkeys
IssueLinkService 和 IssueVoterAccessor 的实例应该作为参数注入到 VotersCount 的构造函数中。
我使用以下方法解决了它:
要通过指定的 link 类型将问题 link 编辑到 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");
我正在尝试创建一个执行以下操作的 JIRA 插件:
- 对于每个问题,获取所有 linked 问题,这些问题由 "duplicates" 或 "is duplicated by"(或其他预定义的 link 类型)linked。
- 对于每个此类问题,获取该问题的选民列表(不一定是
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
。)
但是,我在 javadoc 中没有看到 AbstractJiraContextProvider
和 getContextMap
的解释,所以我什至不确定这是否是正确的方法。
在我自己的研究中,我发现 class ViewVoters
具有方法 Collection<UserBean> getVoters()
,这是我可以使用的东西,但我不知道如何获取或以与给定问题交互的方式构建这样的对象。
我正在寻找一个工作代码来替换我的 2 行模拟代码。
1) 使用 IssueLinkService 中的方法之一。也许 getIssueLinks
2) issueVoterAccessor.getVoterUserkeys
IssueLinkService 和 IssueVoterAccessor 的实例应该作为参数注入到 VotersCount 的构造函数中。
我使用以下方法解决了它:
要通过指定的 link 类型将问题 link 编辑到
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");