private List<JiraActivityItem> extractActivity(final Iterable<Issue> issues, final ActivityRequest request, Supplier<Boolean> cancelled)
{
final ApplicationUser user = authenticationContext.getUser();
Predicate<String> inUsers = inUsers(request);
Predicate<Date> containsDate = inDateRange(request);
Predicate<Option<Pair<ActivityObjectType, ActivityVerb>>> hasActivity = isDefined();
Predicate<Pair<ActivityObjectType, ActivityVerb>> inJiraActivities = inActivities(request);
ImmutableList.Builder<JiraActivityItem> builder = ImmutableList.builder();
ChangeHistoryQuery changeHistories = new ChangeHistoryQuery(issueHistoryReader, issues, user);
IssueActivityExtractor issueActivityExtractor = new IssueActivityExtractor(user, commentManager,
helper, builder, changeHistories, inUsers, containsDate, inJiraActivities);
for (final Issue issue : issues)
{
if (cancelled.get())
{
throw new CancelledException();
}
issueActivityExtractor.extract(issue);
}
return builder.build();
}