From e6e31902fcef2ef3b55794120d4544ae354aa9d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9da=20Housni=20Alaoui?= Date: Tue, 24 Oct 2023 18:12:49 +0200 Subject: [PATCH] Let ListAction skip pull requests having no binary data --- .../ws/pullrequest/action/ListAction.java | 16 +++++++++++----- .../ws/pullrequest/action/ListActionTest.java | 9 +++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/mc1arke/sonarqube/plugin/server/pullrequest/ws/pullrequest/action/ListAction.java b/src/main/java/com/github/mc1arke/sonarqube/plugin/server/pullrequest/ws/pullrequest/action/ListAction.java index 1892cc8d0..7ec4de6cf 100644 --- a/src/main/java/com/github/mc1arke/sonarqube/plugin/server/pullrequest/ws/pullrequest/action/ListAction.java +++ b/src/main/java/com/github/mc1arke/sonarqube/plugin/server/pullrequest/ws/pullrequest/action/ListAction.java @@ -19,20 +19,21 @@ import static org.sonar.server.user.AbstractUserSession.insufficientPrivilegesException; +import com.google.common.base.Strings; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; - import javax.annotation.Nullable; - import org.apache.commons.lang.StringUtils; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService; import org.sonar.api.utils.DateUtils; +import org.sonar.api.utils.log.Logger; +import org.sonar.api.utils.log.Loggers; import org.sonar.api.web.UserRole; import org.sonar.core.util.stream.MoreCollectors; import org.sonar.db.DbClient; @@ -51,10 +52,10 @@ import org.sonarqube.ws.ProjectPullRequests; import org.springframework.beans.factory.annotation.Autowired; -import com.google.common.base.Strings; - public class ListAction extends ProjectWsAction { + private static final Logger logger = Loggers.get(ListAction.class); + private final UserSession userSession; private final ProtoBufWriter protoBufWriter; @@ -120,7 +121,12 @@ private static void addPullRequest(ProjectPullRequests.ListWsResponse.Builder re ProjectPullRequests.PullRequest.Builder builder = ProjectPullRequests.PullRequest.newBuilder(); builder.setKey(branch.getKey()); - DbProjectBranches.PullRequestData pullRequestData = Objects.requireNonNull(branch.getPullRequestData(), "Pull request data should be available for branch type PULL_REQUEST"); + DbProjectBranches.PullRequestData pullRequestData = branch.getPullRequestData(); + if (pullRequestData == null) { + logger.info("No pull request data available for branch of type PULL_REQUEST with key '%s'", branch.getKey()); + return; + } + builder.setBranch(pullRequestData.getBranch()); Optional.ofNullable(Strings.emptyToNull(pullRequestData.getUrl())).ifPresent(builder::setUrl); Optional.ofNullable(Strings.emptyToNull(pullRequestData.getTitle())).ifPresent(builder::setTitle); diff --git a/src/test/java/com/github/mc1arke/sonarqube/plugin/server/pullrequest/ws/pullrequest/action/ListActionTest.java b/src/test/java/com/github/mc1arke/sonarqube/plugin/server/pullrequest/ws/pullrequest/action/ListActionTest.java index 0d976d7ca..798d4798f 100644 --- a/src/test/java/com/github/mc1arke/sonarqube/plugin/server/pullrequest/ws/pullrequest/action/ListActionTest.java +++ b/src/test/java/com/github/mc1arke/sonarqube/plugin/server/pullrequest/ws/pullrequest/action/ListActionTest.java @@ -118,7 +118,12 @@ void shouldExecuteRequestWithValidParameter() { .setBranch("prBranch2") .setTitle("title3") .setUrl("url3") - .build()))); + .build()), + new BranchDto() + .setBranchType(BranchType.PULL_REQUEST) + .setKey("prKey4") + .setUuid("uuid5") + .setMergeBranchUuid("uuid2"))); when(branchDao.selectByUuids(any(), any())).thenReturn(List.of(new BranchDto() .setUuid("uuid2") @@ -189,4 +194,4 @@ void shouldNotExecuteRequestIfUserDoesNotHaveAnyPermissions() { verifyNoMoreInteractions(protoBufWriter); } -} \ No newline at end of file +}