Skip to content

Commit 7dde70e

Browse files
authored
fix filter for draft merge request (#403)
1 parent 438ce39 commit 7dde70e

File tree

1 file changed

+27
-34
lines changed

1 file changed

+27
-34
lines changed

src/main/java/io/jenkins/plugins/gitlabbranchsource/GitLabSCMSource.java

+27-34
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@
4848
import java.util.Objects;
4949
import java.util.Set;
5050
import java.util.concurrent.ConcurrentHashMap;
51-
import java.util.function.Predicate;
5251
import java.util.logging.Level;
5352
import java.util.logging.Logger;
5453
import java.util.stream.Collectors;
54+
import java.util.stream.Stream;
5555
import jenkins.model.Jenkins;
5656
import jenkins.plugins.git.AbstractGitSCMSource;
5757
import jenkins.plugins.git.GitTagSCMRevision;
@@ -86,6 +86,7 @@
8686
import jenkins.scm.impl.trait.Selection;
8787
import org.apache.commons.lang.StringUtils;
8888
import org.gitlab4j.api.Constants;
89+
import org.gitlab4j.api.Constants.MergeRequestState;
8990
import org.gitlab4j.api.GitLabApi;
9091
import org.gitlab4j.api.GitLabApiException;
9192
import org.gitlab4j.api.models.AccessLevel;
@@ -332,41 +333,33 @@ protected void retrieve(
332333
if (request.isFetchBranches()) {
333334
request.setBranches(gitLabApi.getRepositoryApi().getBranches(gitlabProject));
334335
}
335-
Predicate<MergeRequest> filter = ignore -> false;
336-
if (ctx.alwaysIgnoreMRWorkInProgress()) {
337-
filter = mr -> !mr.getWorkInProgress();
338-
}
339336
if (request.isFetchMRs() && gitlabProject.getMergeRequestsEnabled()) {
340-
// If not authenticated GitLabApi cannot detect if it is a fork
341-
// If `forkedFromProject` is null it doesn't mean anything
342-
if (gitlabProject.getForkedFromProject() == null) {
343-
listener.getLogger()
344-
.format("%nUnable to detect if it is a mirror or not still fetching MRs anyway...%n");
345-
List<MergeRequest> mrs = gitLabApi
346-
.getMergeRequestApi()
347-
.getMergeRequests(gitlabProject, Constants.MergeRequestState.OPENED);
348-
mrs = mrs.stream()
349-
.filter(mr -> mr.getSourceProjectId() != null)
350-
.filter(filter)
351-
.collect(Collectors.toList());
352-
request.setMergeRequests(mrs);
353-
} else if (ctx.buildMRForksNotMirror()) {
354-
listener.getLogger()
355-
.format("%nCollecting MRs for fork except those that target its upstream...%n");
356-
List<MergeRequest> mrs = gitLabApi
357-
.getMergeRequestApi()
358-
.getMergeRequests(gitlabProject, Constants.MergeRequestState.OPENED);
359-
mrs = mrs.stream()
360-
.filter(mr -> mr.getSourceProjectId() != null
361-
&& !mr.getTargetProjectId()
362-
.equals(gitlabProject
363-
.getForkedFromProject()
364-
.getId()))
365-
.filter(filter)
366-
.collect(Collectors.toList());
367-
request.setMergeRequests(mrs);
368-
} else {
337+
if (!ctx.buildMRForksNotMirror() && gitlabProject.getForkedFromProject() != null) {
369338
listener.getLogger().format("%nIgnoring merge requests as project is a mirror...%n");
339+
} else {
340+
// If not authenticated GitLabApi cannot detect if it is a fork
341+
// If `forkedFromProject` is null it doesn't mean anything
342+
listener.getLogger()
343+
.format(
344+
gitlabProject.getForkedFromProject() == null
345+
? "%nUnable to detect if it is a mirror or not still fetching MRs anyway...%n"
346+
: "%nCollecting MRs for fork except those that target its upstream...%n");
347+
Stream<MergeRequest> mrs =
348+
gitLabApi
349+
.getMergeRequestApi()
350+
.getMergeRequests(gitlabProject, MergeRequestState.OPENED)
351+
.stream()
352+
.filter(mr -> mr.getSourceProjectId() != null);
353+
if (ctx.buildMRForksNotMirror()) {
354+
mrs = mrs.filter(mr -> !mr.getTargetProjectId()
355+
.equals(gitlabProject.getForkedFromProject().getId()));
356+
}
357+
358+
if (ctx.alwaysIgnoreMRWorkInProgress()) {
359+
mrs = mrs.filter(mr -> !mr.getWorkInProgress());
360+
}
361+
362+
request.setMergeRequests(mrs.collect(Collectors.toList()));
370363
}
371364
}
372365
if (request.isFetchTags()) {

0 commit comments

Comments
 (0)