/** * Run all contributors until any of them returns false or the list is exhausted. If from parameter is not null, contributors * will be run starting from the next one after that. */ public static void getVariantsFromContributors(final CompletionParameters parameters, final String prefix, final CompletionContributor from, final Consumer<CompletionResult> consumer) { final List<CompletionContributor> contributors = CompletionContributor.forParameters(parameters); for (int i = contributors.indexOf(from) + 1; i < contributors.size(); i++) { final CompletionContributor contributor = contributors.get(i); CompletionResultSet result = createResultSet(parameters, prefix, consumer, contributor); contributor.fillCompletionVariants(parameters, result); if (result.isStopped()) { return; } } }
@Override protected void addCompletionVariants(@NotNull final String text, int offset, @NotNull final String prefix, @NotNull final CompletionResultSet result) { if (Strings.isNullOrEmpty(prefix)) { return; } try { List<SuggestedReviewerInfo> suggestedReviewers = gerritApi.changes() .id(changeInfo._number).suggestReviewers(prefix).withLimit(20).get(); if (result.isStopped()) { return; } for (SuggestedReviewerInfo suggestedReviewer : suggestedReviewers) { Optional<LookupElementBuilder> lookupElementBuilderOptional = buildLookupElement(suggestedReviewer); if (lookupElementBuilderOptional.isPresent()) { result.addElement(lookupElementBuilderOptional.get()); } } } catch (RestApiException e) { throw Throwables.propagate(e); } } };