/** * Converts an {@code Iterable} of {@code ActivityItem}s to an {@code Iterable} of {@code StreamsEntry}s, * while respecting a set of filters specified by a {@code ActivityRequest}. * * @param request the {@code ActivityRequest} containing the filters * @param activityItems {@code ActivityItem}s to convert * @return the filtered {@code Iterable} of {@code StreamsEntry}s */ private Iterable<StreamsEntry> toStreamsEntries(final ActivityRequest request, Iterable<ActivityItem> activityItems, Supplier<Boolean> cancelled) { // we use Iterables.size immediately after we return from here, so we might as well create a list now return ImmutableList.copyOf(take(request.getMaxResults(), catOptions(transform(activityItems, toStreamsEntry(request.getContextUri(), cancelled))))); }
private void addRevisionsToContext(final URI baseUri, final ImmutableMap.Builder<String, Object> context, final int numRevsToList) { Supplier<Iterable<FileRevisionData>> revisionSupplier = revisions; // Use the memoized revisions if there are only a small number of revisions. if (isEmpty(drop(MEMOIZED_REVISIONS_LIMIT, memoizedRevisions.get()))) { revisionSupplier = memoizedRevisions; } final Iterable<FileRevisionData> revs = take(numRevsToList, memoizedRevisions.get()); final ImmutableMap<FileRevisionData, String> revisionUris = getRevisionUriMap(baseUri, revs); context.put("uriMap", revisionUris); context.put("revisions", revs); context.put("summary", summaryInfoRenderer.apply(buildSummaryInfo(drop(numRevsToList, revisionSupplier.get()), changeSet.getNumFileRevisions() - numRevsToList))); }
public Iterable<FileRevisionData> get() { return memoize(revisions.get()); } });
@Override public StreamsFeed call() throws Exception { // COMMIT (aka "push") is the only FishEye verb currently supported if (!inActivities(request).apply(pair(changeset(), push()))) { return buildFeed(ImmutableList.<StreamsEntry>of()); } return buildFeed(take(request.getMaxResults(), mergeSorted(getChangesets(request, Suppliers.forAtomicBoolean(cancelled)), byPostedDate()))); }
if (!isEmpty(users)) changesets = mergeSorted(transform(users, toChangesetsPerUser(request, repository.getName(), cancelled)), byCommitDate); isEmpty(getNotIssueKeys(request)) ? Predicates.<ChangesetDataFE>alwaysTrue() : commitComment(not(containsAnyIssueKey(getNotIssueKeys(request)))), hasCorrectBranch(request))); return memoize(take(request.getMaxResults(), catOptions(transform(filter(changesets, filters), toStreamsEntry(baseUri, repository)))));
private static Clause and(Iterable<Clause> clauses) { if (isEmpty(clauses)) { return newClauseBuilder().buildClause(); } return foldl(drop(1, clauses), newClauseBuilder(get(clauses, 0)), AndClauses.INSTANCE).buildClause(); }
private static Clause or(Iterable<Clause> clauses) { if (isEmpty(clauses)) { return newClauseBuilder().buildClause(); } return foldl(drop(1, clauses), newClauseBuilder(get(clauses, 0)), OrClauses.INSTANCE).buildClause(); }
@Override public StreamsFeed call() throws Exception { Iterable<StreamsEntry> entries = getCrucibleEntries(request); Iterable<StreamsEntry> sortedEntries = byPostedDate().sortedCopy(entries); return new StreamsFeed(i18nResolver.getText("streams.feed.crucible.title"), take(request.getMaxResults(), sortedEntries), none(String.class)); }
public Iterable<StreamsEntry> getCrucibleEntries(final ActivityRequest activityRequest) { Iterable<Pair<StreamsCrucibleActivityItem, ActivityVerb>> activityItem = finder.getNotificationsFor(activityRequest); Iterable<Pair<Pair<StreamsCrucibleActivityItem, ActivityVerb>, ActivityRequest>> logEntries = transform(aggregator.aggregate(activityItem), new PairRequestWithActivityItem(activityRequest)); return memoize(catOptions(transform(logEntries, new Function<Pair<Pair<StreamsCrucibleActivityItem, ActivityVerb>, ActivityRequest>, Option<StreamsEntry>>() { @Override public Option<StreamsEntry> apply(Pair<Pair<StreamsCrucibleActivityItem, ActivityVerb>, ActivityRequest> activityEntry) { // getting entry properties may be expensive, so check for interrupts here CancelledException.throwIfInterrupted(); return crucibleEntryFactory.getEntryFromActivityItem(activityEntry, activityRequest.getContextUri()); } }))); }
@Override public StreamsFeed call() { final Iterable<StreamsEntry> entries = getStreamsEntries(request, Suppliers.forAtomicBoolean(cancelled)); return new StreamsFeed(i18nResolver.getText("portlet.activityfeed.name"), take(request.getMaxResults(), entries), some(i18nResolver.getText("portlet.activityfeed.description"))); }
transform(take(request.getMaxResults() * 2, filter(transform(activityItems, toReviewActivityPair()), and(ImmutableList.of( notPhantomReview(),
@Override public StreamsFeed call() throws Exception { final Iterable<Issue> issues = issueFinder.find(request); Iterable<JiraActivityItem> activityItems = orderByDate.sortedCopy(extractActivity(issues, request, Suppliers.forAtomicBoolean(cancelled))); Iterable<AggregatedJiraActivityItem> activities = jiraActivityItemAggregator.aggregate(activityItems); final Iterable<StreamsEntry> entries = jiraEntryFactory.getEntries(activities, request); final String title = RenderingUtilities.htmlEncode( jiraApplicationProperties.getDefaultBackedString(APKeys.JIRA_TITLE) + " - " + authenticationContext.getI18nHelper().getText("portlet.activityfeed.name")); return new StreamsFeed(title, take(request.getMaxResults(), entries), none(String.class)); }