in org.eclipse.mylyn.github.core/src/org/eclipse/mylyn/internal/github/core/issue/IssueConnector.java [290:356]
public IStatus performQuery(TaskRepository repository,
IRepositoryQuery query, TaskDataCollector collector,
ISynchronizationSession session, IProgressMonitor monitor) {
IStatus result = Status.OK_STATUS;
List<String> statuses = QueryUtils.getAttributes(
IssueService.FILTER_STATE, query);
monitor.beginTask(Messages.IssueConector_TaskQuerying, statuses.size());
try {
RepositoryId repo = GitHub.getRepository(repository
.getRepositoryUrl());
GitHubClient client = createClient(repository);
IssueService service = new IssueService(client);
Map<String, String> filterData = new HashMap<>();
String mentions = query.getAttribute(IssueService.FILTER_MENTIONED);
if (mentions != null)
filterData.put(IssueService.FILTER_MENTIONED, mentions);
String assignee = query.getAttribute(IssueService.FILTER_ASSIGNEE);
if (assignee != null)
filterData.put(IssueService.FILTER_ASSIGNEE, assignee);
String milestone = query
.getAttribute(IssueService.FILTER_MILESTONE);
if (milestone != null)
filterData.put(IssueService.FILTER_MILESTONE, milestone);
List<String> labels = QueryUtils.getAttributes(
IssueService.FILTER_LABELS, query);
if (!labels.isEmpty()) {
StringBuilder labelsQuery = new StringBuilder();
for (String label : labels)
labelsQuery.append(label).append(',');
filterData.put(IssueService.FILTER_LABELS,
labelsQuery.toString());
}
String owner = repo.getOwner();
String name = repo.getName();
for (String status : statuses) {
filterData.put(IssueService.FILTER_STATE, status);
List<Issue> issues = service.getIssues(repo.getOwner(),
repo.getName(), filterData);
// collect task data
for (Issue issue : issues) {
if (isPullRequest(issue))
continue;
List<Comment> comments = null;
if (issue.getComments() > 0)
comments = service.getComments(owner, name,
Integer.toString(issue.getNumber()));
TaskData taskData = taskDataHandler.createTaskData(
repository, monitor, owner, name, issue, comments);
collector.accept(taskData);
}
monitor.worked(1);
}
} catch (IOException e) {
result = GitHub.createWrappedStatus(e);
}
monitor.done();
return result;
}