aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Duda <michal.duda@sonarsource.com>2018-12-17 11:54:38 +0100
committerSonarTech <sonartech@sonarsource.com>2019-01-18 20:21:02 +0100
commit829f3ccf0c5418d1974efe917c4e5475df4e4141 (patch)
tree8c9ced0c03084cf797eae88bc5893a864e043dff
parentb5cc29188339a2bf7187de25be38853553a81482 (diff)
downloadsonarqube-829f3ccf0c5418d1974efe917c4e5475df4e4141.tar.gz
sonarqube-829f3ccf0c5418d1974efe917c4e5475df4e4141.zip
replace Protobuf.setNullable with Optional.ofNullable
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueLocationsTest.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/batch/IssuesAction.java14
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/batch/ProjectAction.java8
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/branch/pr/ws/ListAction.java10
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/branch/ws/ListAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/ce/ws/TaskFormatter.java30
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java16
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/duplication/ws/ShowResponseBuilder.java17
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/favorite/ws/SearchAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/issue/ws/ChangelogAction.java12
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchResponseFormat.java34
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentDtoToWsComponent.java13
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/measure/ws/MeasureDtoToWsMeasure.java7
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/measure/ws/MetricDtoToWsMetric.java12
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/measure/ws/SearchHistoryAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/notification/ws/AddAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/notification/ws/ListAction.java5
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/notification/ws/RemoveAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/organization/ws/OrganizationsWsSupport.java8
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchAction.java8
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchMembersAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java8
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java18
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/PermissionTemplateDtoToPermissionTemplateResponse.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateGroupsAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateUsersAction.java8
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java7
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/project/ws/ProvisionedAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchAction.java17
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchMyProjectsAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/CreateEventAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java14
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/UpdateEventAction.java8
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/projectlink/ws/SearchAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java2
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java2
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/CopyAction.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/InheritanceAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchAction.java12
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchGroupsAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchUsersAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ShowAction.java10
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/rule/ws/ActiveRuleCompleter.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/rule/ws/CreateAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/setting/ws/ListDefinitionsAction.java14
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/user/ws/CurrentAction.java11
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/user/ws/IdentityProvidersAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/webhook/ws/WebhookWsSupport.java10
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchActionTest.java14
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/favorite/ws/RemoveActionTest.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/favorite/ws/SearchActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java16
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java4
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java10
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/notification/ws/AddActionTest.java8
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/notification/ws/RemoveActionTest.java8
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/organization/ws/RemoveMemberActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/project/ws/CreateActionTest.java10
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/project/ws/IndexActionTest.java8
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/project/ws/SearchActionTest.java18
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java20
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java12
-rw-r--r--sonar-core/src/main/java/org/sonar/core/util/Protobuf.java39
-rw-r--r--sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java31
88 files changed, 343 insertions, 422 deletions
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueLocationsTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueLocationsTest.java
index 599d3af20e8..d8e502c46da 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueLocationsTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueLocationsTest.java
@@ -22,10 +22,10 @@ package org.sonar.ce.task.projectanalysis.issue;
import javax.annotation.Nullable;
import org.junit.Test;
import org.sonar.core.issue.DefaultIssue;
-import org.sonar.core.util.Protobuf;
import org.sonar.db.protobuf.DbCommons;
import org.sonar.db.protobuf.DbIssues;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
public class IssueLocationsTest {
@@ -102,7 +102,7 @@ public class IssueLocationsTest {
private static DbIssues.Location newLocation(@Nullable String componentId, int startLine, int endLine) {
DbIssues.Location.Builder builder = DbIssues.Location.newBuilder()
.setTextRange(DbCommons.TextRange.newBuilder().setStartLine(startLine).setEndLine(endLine).build());
- Protobuf.setNullable(componentId, builder::setComponentId);
+ ofNullable(componentId).ifPresent(builder::setComponentId);
return builder.build();
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/batch/IssuesAction.java b/server/sonar-server/src/main/java/org/sonar/server/batch/IssuesAction.java
index bb6af68da8d..b1f127ef490 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/batch/IssuesAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/batch/IssuesAction.java
@@ -44,10 +44,10 @@ import org.sonarqube.ws.MediaTypes;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.collect.Maps.newHashMap;
import static java.lang.String.format;
+import static java.util.Optional.ofNullable;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.ws.KeyExamples.KEY_BRANCH_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
@@ -133,17 +133,17 @@ public class IssuesAction implements BatchWsAction {
issueBuilder.setKey(issue.getKey());
String moduleUuid = extractModuleUuid(issue);
issueBuilder.setModuleKey(keysByUUid.get(moduleUuid));
- setNullable(issue.getFilePath(), issueBuilder::setPath);
+ ofNullable(issue.getFilePath()).ifPresent(issueBuilder::setPath);
issueBuilder.setRuleRepository(issue.getRuleRepo());
issueBuilder.setRuleKey(issue.getRule());
- setNullable(issue.getChecksum(), issueBuilder::setChecksum);
- setNullable(issue.getAssigneeUuid(), issueBuilder::setAssigneeLogin);
- setNullable(issue.getLine(), issueBuilder::setLine);
- setNullable(issue.getMessage(), issueBuilder::setMsg);
+ ofNullable(issue.getChecksum()).ifPresent(issueBuilder::setChecksum);
+ ofNullable(issue.getAssigneeUuid()).ifPresent(issueBuilder::setAssigneeLogin);
+ ofNullable(issue.getLine()).ifPresent(issueBuilder::setLine);
+ ofNullable(issue.getMessage()).ifPresent(issueBuilder::setMsg);
issueBuilder.setSeverity(org.sonar.scanner.protocol.Constants.Severity.valueOf(issue.getSeverity()));
issueBuilder.setManualSeverity(issue.isManualSeverity());
issueBuilder.setStatus(issue.getStatus());
- setNullable(issue.getResolution(), issueBuilder::setResolution);
+ ofNullable(issue.getResolution()).ifPresent(issueBuilder::setResolution);
issueBuilder.setType(RuleType.valueOf(issue.getType()).name());
issueBuilder.setCreationDate(issue.getIssueCreationTime());
try {
diff --git a/server/sonar-server/src/main/java/org/sonar/server/batch/ProjectAction.java b/server/sonar-server/src/main/java/org/sonar/server/batch/ProjectAction.java
index 5e8cfb22de8..d8b2783b2f9 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/batch/ProjectAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/batch/ProjectAction.java
@@ -34,7 +34,7 @@ import org.sonar.scanner.protocol.input.SingleProjectRepository;
import org.sonarqube.ws.Batch.WsProjectResponse;
import org.sonarqube.ws.Batch.WsProjectResponse.FileData.Builder;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.ws.KeyExamples.KEY_BRANCH_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PULL_REQUEST_EXAMPLE_001;
@@ -110,7 +110,7 @@ public class ProjectAction implements BatchWsAction {
private static WsProjectResponse buildResponse(ProjectRepositories data) {
WsProjectResponse.Builder response = WsProjectResponse.newBuilder();
- setNullable(data.lastAnalysisDate(), response::setLastAnalysisDate, Date::getTime);
+ ofNullable(data.lastAnalysisDate()).map(Date::getTime).ifPresent(response::setLastAnalysisDate);
response.setTimestamp(data.timestamp());
if (data instanceof SingleProjectRepository) {
response.putAllFileDataByPath(buildFileDataByPath((SingleProjectRepository) data));
@@ -142,8 +142,8 @@ public class ProjectAction implements BatchWsAction {
private static WsProjectResponse.FileData toFileDataResponse(FileData fileData) {
Builder fileDataBuilder = WsProjectResponse.FileData.newBuilder();
- setNullable(fileData.hash(), fileDataBuilder::setHash);
- setNullable(fileData.revision(), fileDataBuilder::setRevision);
+ ofNullable(fileData.hash()).ifPresent(fileDataBuilder::setHash);
+ ofNullable(fileData.revision()).ifPresent(fileDataBuilder::setRevision);
return fileDataBuilder.build();
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/branch/pr/ws/ListAction.java b/server/sonar-server/src/main/java/org/sonar/server/branch/pr/ws/ListAction.java
index 81e138bb948..281ba36202d 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/branch/pr/ws/ListAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/branch/pr/ws/ListAction.java
@@ -47,11 +47,11 @@ import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.emptyToNull;
import static java.util.Collections.singletonList;
import static java.util.Objects.requireNonNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.measures.CoreMetrics.ALERT_STATUS_KEY;
import static org.sonar.api.resources.Qualifiers.PROJECT;
import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
import static org.sonar.db.component.BranchType.PULL_REQUEST;
@@ -141,8 +141,8 @@ public class ListAction implements PullRequestWsAction {
DbProjectBranches.PullRequestData pullRequestData = requireNonNull(branch.getPullRequestData(), "Pull request data should be available for branch type PULL_REQUEST");
builder.setBranch(pullRequestData.getBranch());
- setNullable(emptyToNull(pullRequestData.getUrl()), builder::setUrl);
- setNullable(emptyToNull(pullRequestData.getTitle()), builder::setTitle);
+ ofNullable(emptyToNull(pullRequestData.getUrl())).ifPresent(builder::setUrl);
+ ofNullable(emptyToNull(pullRequestData.getTitle())).ifPresent(builder::setTitle);
if (mergeBranch.isPresent()) {
String mergeBranchKey = mergeBranch.get().getKey();
@@ -150,7 +150,7 @@ public class ListAction implements PullRequestWsAction {
} else {
builder.setIsOrphan(true);
}
- setNullable(analysisDate, builder::setAnalysisDate);
+ ofNullable(analysisDate).ifPresent(builder::setAnalysisDate);
setQualityGate(builder, qualityGateMeasure, branchStatistics);
response.addPullRequests(builder);
}
@@ -158,7 +158,7 @@ public class ListAction implements PullRequestWsAction {
private static void setQualityGate(ProjectPullRequests.PullRequest.Builder builder, @Nullable LiveMeasureDto qualityGateMeasure, @Nullable BranchStatistics branchStatistics) {
ProjectPullRequests.Status.Builder statusBuilder = ProjectPullRequests.Status.newBuilder();
if (qualityGateMeasure != null) {
- setNullable(qualityGateMeasure.getDataAsString(), statusBuilder::setQualityGateStatus);
+ ofNullable(qualityGateMeasure.getDataAsString()).ifPresent(statusBuilder::setQualityGateStatus);
}
statusBuilder.setBugs(branchStatistics == null ? 0L : branchStatistics.getBugs());
statusBuilder.setVulnerabilities(branchStatistics == null ? 0L : branchStatistics.getVulnerabilities());
diff --git a/server/sonar-server/src/main/java/org/sonar/server/branch/ws/ListAction.java b/server/sonar-server/src/main/java/org/sonar/server/branch/ws/ListAction.java
index 0547ed51e68..0cfcbadb08e 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/branch/ws/ListAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/branch/ws/ListAction.java
@@ -51,12 +51,12 @@ import org.sonarqube.ws.ProjectBranches;
import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.measures.CoreMetrics.ALERT_STATUS_KEY;
import static org.sonar.api.resources.Qualifiers.APP;
import static org.sonar.api.resources.Qualifiers.PROJECT;
import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
import static org.sonar.db.component.BranchType.LONG;
@@ -144,7 +144,7 @@ public class ListAction implements BranchWsAction {
private static ProjectBranches.Branch.Builder toBranchBuilder(BranchDto branch, Optional<BranchDto> mergeBranch) {
ProjectBranches.Branch.Builder builder = ProjectBranches.Branch.newBuilder();
String branchKey = branch.getKey();
- setNullable(branchKey, builder::setName);
+ ofNullable(branchKey).ifPresent(builder::setName);
builder.setIsMain(branch.isMain());
builder.setType(Common.BranchType.valueOf(branch.getBranchType().name()));
if (branch.getBranchType() == SHORT) {
@@ -162,7 +162,7 @@ public class ListAction implements BranchWsAction {
@Nullable BranchStatistics branchStatistics) {
ProjectBranches.Status.Builder statusBuilder = ProjectBranches.Status.newBuilder();
if (qualityGateMeasure != null) {
- setNullable(qualityGateMeasure.getDataAsString(), statusBuilder::setQualityGateStatus);
+ ofNullable(qualityGateMeasure.getDataAsString()).ifPresent(statusBuilder::setQualityGateStatus);
}
if (branch.getBranchType() == BranchType.SHORT) {
statusBuilder.setBugs(branchStatistics == null ? 0L : branchStatistics.getBugs());
diff --git a/server/sonar-server/src/main/java/org/sonar/server/ce/ws/TaskFormatter.java b/server/sonar-server/src/main/java/org/sonar/server/ce/ws/TaskFormatter.java
index 7b076b196ef..d970b821f96 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/ce/ws/TaskFormatter.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/ce/ws/TaskFormatter.java
@@ -48,8 +48,8 @@ import static com.google.common.base.Preconditions.checkState;
import static java.lang.String.format;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.DateUtils.formatDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
@@ -79,7 +79,7 @@ public class TaskFormatter {
private Ce.Task formatQueue(CeQueueDto dto, DtoCache cache) {
Ce.Task.Builder builder = Ce.Task.newBuilder();
String organizationKey = cache.getOrganizationKey(dto.getComponentUuid());
- setNullable(organizationKey, builder::setOrganization);
+ ofNullable(organizationKey).ifPresent(builder::setOrganization);
if (dto.getComponentUuid() != null) {
builder.setComponentId(dto.getComponentUuid());
setComponent(builder, dto.getComponentUuid(), cache);
@@ -90,8 +90,8 @@ public class TaskFormatter {
builder.setLogs(false);
cache.getUser(dto.getSubmitterUuid()).ifPresent(user -> builder.setSubmitterLogin(user.getLogin()));
builder.setSubmittedAt(formatDateTime(new Date(dto.getCreatedAt())));
- setNullable(dto.getStartedAt(), builder::setStartedAt, DateUtils::formatDateTime);
- setNullable(computeExecutionTimeMs(dto), builder::setExecutionTimeMs);
+ ofNullable(dto.getStartedAt()).map(DateUtils::formatDateTime).ifPresent(builder::setStartedAt);
+ ofNullable(computeExecutionTimeMs(dto)).ifPresent(builder::setExecutionTimeMs);
setBranchOrPullRequest(builder, dto.getUuid(), cache);
return builder.build();
}
@@ -110,25 +110,25 @@ public class TaskFormatter {
private static Ce.Task formatActivity(CeActivityDto dto, DtoCache cache, @Nullable String scannerContext, List<String> warnings) {
Ce.Task.Builder builder = Ce.Task.newBuilder();
String organizationKey = cache.getOrganizationKey(dto.getComponentUuid());
- setNullable(organizationKey, builder::setOrganization);
+ ofNullable(organizationKey).ifPresent(builder::setOrganization);
builder.setId(dto.getUuid());
builder.setStatus(Ce.TaskStatus.valueOf(dto.getStatus().name()));
builder.setType(dto.getTaskType());
builder.setLogs(false);
- setNullable(dto.getComponentUuid(), uuid -> setComponent(builder, uuid, cache).setComponentId(uuid));
+ ofNullable(dto.getComponentUuid()).ifPresent(uuid -> setComponent(builder, uuid, cache).setComponentId(uuid));
String analysisUuid = dto.getAnalysisUuid();
- setNullable(analysisUuid, builder::setAnalysisId);
+ ofNullable(analysisUuid).ifPresent(builder::setAnalysisId);
setBranchOrPullRequest(builder, dto.getUuid(), cache);
- setNullable(analysisUuid, builder::setAnalysisId);
+ ofNullable(analysisUuid).ifPresent(builder::setAnalysisId);
cache.getUser(dto.getSubmitterUuid()).ifPresent(user -> builder.setSubmitterLogin(user.getLogin()));
builder.setSubmittedAt(formatDateTime(new Date(dto.getSubmittedAt())));
- setNullable(dto.getStartedAt(), builder::setStartedAt, DateUtils::formatDateTime);
- setNullable(dto.getExecutedAt(), builder::setExecutedAt, DateUtils::formatDateTime);
- setNullable(dto.getExecutionTimeMs(), builder::setExecutionTimeMs);
- setNullable(dto.getErrorMessage(), builder::setErrorMessage);
- setNullable(dto.getErrorStacktrace(), builder::setErrorStacktrace);
- setNullable(dto.getErrorType(), builder::setErrorType);
- setNullable(scannerContext, builder::setScannerContext);
+ ofNullable(dto.getStartedAt()).map(DateUtils::formatDateTime).ifPresent(builder::setStartedAt);
+ ofNullable(dto.getExecutedAt()).map(DateUtils::formatDateTime).ifPresent(builder::setExecutedAt);
+ ofNullable(dto.getExecutionTimeMs()).ifPresent(builder::setExecutionTimeMs);
+ ofNullable(dto.getErrorMessage()).ifPresent(builder::setErrorMessage);
+ ofNullable(dto.getErrorStacktrace()).ifPresent(builder::setErrorStacktrace);
+ ofNullable(dto.getErrorType()).ifPresent(builder::setErrorType);
+ ofNullable(scannerContext).ifPresent(builder::setScannerContext);
builder.setHasScannerContext(dto.isHasScannerContext());
builder.setWarningCount(dto.getWarningCount());
warnings.forEach(builder::addWarnings);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java
index ffcfdf628e3..884ba916526 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java
@@ -32,8 +32,8 @@ import org.sonarqube.ws.Components;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.emptyToNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.DateUtils.formatDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
class ComponentDtoToWsComponent {
@@ -61,17 +61,17 @@ class ComponentDtoToWsComponent {
.setKey(dto.getKey())
.setName(dto.name())
.setQualifier(dto.qualifier());
- setNullable(emptyToNull(dto.getBranch()), wsComponent::setBranch);
- setNullable(emptyToNull(dto.getPullRequest()), wsComponent::setPullRequest);
- setNullable(emptyToNull(dto.path()), wsComponent::setPath);
- setNullable(emptyToNull(dto.description()), wsComponent::setDescription);
- setNullable(emptyToNull(dto.language()), wsComponent::setLanguage);
+ ofNullable(emptyToNull(dto.getBranch())).ifPresent(wsComponent::setBranch);
+ ofNullable(emptyToNull(dto.getPullRequest())).ifPresent(wsComponent::setPullRequest);
+ ofNullable(emptyToNull(dto.path())).ifPresent(wsComponent::setPath);
+ ofNullable(emptyToNull(dto.description())).ifPresent(wsComponent::setDescription);
+ ofNullable(emptyToNull(dto.language())).ifPresent(wsComponent::setLanguage);
setTags(dto, wsComponent);
lastAnalysis.ifPresent(
analysis -> {
wsComponent.setAnalysisDate(formatDateTime(analysis.getCreatedAt()));
- setNullable(analysis.getPeriodDate(), leak -> wsComponent.setLeakPeriodDate(formatDateTime(leak)));
- setNullable(analysis.getVersion(), wsComponent::setVersion);
+ ofNullable(analysis.getPeriodDate()).ifPresent(leak -> wsComponent.setLeakPeriodDate(formatDateTime(leak)));
+ ofNullable(analysis.getVersion()).ifPresent(wsComponent::setVersion);
});
if (QUALIFIERS_WITH_VISIBILITY.contains(dto.qualifier())) {
wsComponent.setVisibility(Visibility.getLabel(dto.isPrivate()));
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java
index de024cfe4d6..e4128d600fb 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchAction.java
@@ -50,8 +50,8 @@ import org.sonarqube.ws.Components.SearchWsResponse;
import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;
+import static java.util.Optional.ofNullable;
import static java.util.stream.Collectors.toMap;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toHashSet;
import static org.sonar.server.es.SearchOptions.MAX_LIMIT;
import static org.sonar.server.util.LanguageParamUtils.getExampleValue;
@@ -203,7 +203,7 @@ public class SearchAction implements ComponentsWsAction {
.setProject(projectKey)
.setName(dto.name())
.setQualifier(dto.qualifier());
- setNullable(dto.language(), builder::setLanguage);
+ ofNullable(dto.language()).ifPresent(builder::setLanguage);
return builder.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java
index e5bb65f18fa..f9bf6565af1 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/SearchProjectsAction.java
@@ -69,11 +69,11 @@ import static com.google.common.collect.Sets.newHashSet;
import static java.lang.String.format;
import static java.util.Collections.emptyMap;
import static java.util.Objects.requireNonNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.measures.CoreMetrics.ALERT_STATUS_KEY;
import static org.sonar.api.server.ws.WebService.Param.FACETS;
import static org.sonar.api.server.ws.WebService.Param.FIELDS;
import static org.sonar.api.utils.DateUtils.formatDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.db.measure.ProjectMeasuresIndexerIterator.METRIC_KEYS;
import static org.sonar.server.component.ws.ProjectMeasuresQueryFactory.IS_FAVORITE_CRITERION;
@@ -464,7 +464,7 @@ public class SearchProjectsAction implements ComponentsWsAction {
wsComponent.setAnalysisDate(formatDateTime(snapshotDto.getCreatedAt()));
}
if (request.getAdditionalFields().contains(LEAK_PERIOD_DATE)) {
- setNullable(snapshotDto.getPeriodDate(), leakPeriodDate -> wsComponent.setLeakPeriodDate(formatDateTime(leakPeriodDate)));
+ ofNullable(snapshotDto.getPeriodDate()).ifPresent(leakPeriodDate -> wsComponent.setLeakPeriodDate(formatDateTime(leakPeriodDate)));
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/duplication/ws/ShowResponseBuilder.java b/server/sonar-server/src/main/java/org/sonar/server/duplication/ws/ShowResponseBuilder.java
index f476153f297..20dac116a43 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/duplication/ws/ShowResponseBuilder.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/duplication/ws/ShowResponseBuilder.java
@@ -36,7 +36,7 @@ import org.sonarqube.ws.Duplications;
import org.sonarqube.ws.Duplications.Block;
import org.sonarqube.ws.Duplications.ShowResponse;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
public class ShowResponseBuilder {
@@ -46,7 +46,8 @@ public class ShowResponseBuilder {
this.componentDao = dbClient.componentDao();
}
- @VisibleForTesting ShowResponseBuilder(ComponentDao componentDao) {
+ @VisibleForTesting
+ ShowResponseBuilder(ComponentDao componentDao) {
this.componentDao = componentDao;
}
@@ -110,8 +111,8 @@ public class ShowResponseBuilder {
String keyWithoutBranch = ComponentDto.removeBranchAndPullRequestFromKey(componentKey);
wsFile.setKey(keyWithoutBranch);
wsFile.setName(StringUtils.substringAfterLast(keyWithoutBranch, ":"));
- setNullable(branch, wsFile::setBranch);
- setNullable(pullRequest, wsFile::setPullRequest);
+ ofNullable(branch).ifPresent(wsFile::setBranch);
+ ofNullable(pullRequest).ifPresent(wsFile::setPullRequest);
return wsFile.build();
}
@@ -121,7 +122,8 @@ public class ShowResponseBuilder {
wsFile.setKey(file.getKey());
wsFile.setUuid(file.uuid());
wsFile.setName(file.longName());
- setNullable(project, p -> {
+ // Do not return sub project if sub project and project are the same
+ ofNullable(project).ifPresent(p -> {
wsFile.setProject(p.getKey());
wsFile.setProjectUuid(p.uuid());
wsFile.setProjectName(p.longName());
@@ -132,9 +134,8 @@ public class ShowResponseBuilder {
wsFile.setSubProjectUuid(subProject.uuid());
wsFile.setSubProjectName(subProject.longName());
}
- setNullable(branch, wsFile::setBranch);
- setNullable(pullRequest, wsFile::setPullRequest);
- return wsFile;
+ ofNullable(branch).ifPresent(wsFile::setBranch);
+ ofNullable(pullRequest).ifPresent(wsFile::setPullRequest);
});
return wsFile.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/favorite/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/favorite/ws/SearchAction.java
index 24cc7ddaee4..9617362f189 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/favorite/ws/SearchAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/favorite/ws/SearchAction.java
@@ -40,7 +40,7 @@ import org.sonarqube.ws.Favorites.Favorite;
import org.sonarqube.ws.Favorites.SearchResponse;
import static com.google.common.base.Preconditions.checkArgument;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
import static org.sonar.server.favorite.ws.FavoritesWsParameters.ACTION_SEARCH;
@@ -154,8 +154,8 @@ public class SearchAction implements FavoritesWsAction {
.clear()
.setOrganization(organization.getKey())
.setKey(componentDto.getDbKey());
- setNullable(componentDto.name(), builder::setName);
- setNullable(componentDto.qualifier(), builder::setQualifier);
+ ofNullable(componentDto.name()).ifPresent(builder::setName);
+ ofNullable(componentDto.qualifier()).ifPresent(builder::setQualifier);
return builder.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/ChangelogAction.java b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/ChangelogAction.java
index bf276eed407..11c91719c79 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/ChangelogAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/ChangelogAction.java
@@ -50,8 +50,8 @@ import org.sonarqube.ws.Issues.ChangelogWsResponse.Changelog;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.base.Strings.emptyToNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.DateUtils.formatDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.issue.IssueFieldsSetter.FILE;
import static org.sonar.server.issue.IssueFieldsSetter.TECHNICAL_DEBT;
@@ -128,7 +128,7 @@ public class ChangelogAction implements IssuesWsAction {
if (user != null) {
changelogBuilder.setUser(user.getLogin());
changelogBuilder.setUserName(user.getName());
- setNullable(emptyToNull(user.getEmail()), email -> changelogBuilder.setAvatar(avatarFactory.create(user)));
+ ofNullable(emptyToNull(user.getEmail())).ifPresent(email -> changelogBuilder.setAvatar(avatarFactory.create(user)));
}
change.diffs().entrySet().stream()
.map(toWsDiff(results))
@@ -146,12 +146,12 @@ public class ChangelogAction implements IssuesWsAction {
String newValue = value.newValue() != null ? value.newValue().toString() : null;
if (key.equals(FILE)) {
diffBuilder.setKey(key);
- setNullable(results.getFileLongName(emptyToNull(newValue)), diffBuilder::setNewValue);
- setNullable(results.getFileLongName(emptyToNull(oldValue)), diffBuilder::setOldValue);
+ ofNullable(results.getFileLongName(emptyToNull(newValue))).ifPresent(diffBuilder::setNewValue);
+ ofNullable(results.getFileLongName(emptyToNull(oldValue))).ifPresent(diffBuilder::setOldValue);
} else {
diffBuilder.setKey(key.equals(TECHNICAL_DEBT) ? EFFORT_CHANGELOG_KEY : key);
- setNullable(emptyToNull(newValue), diffBuilder::setNewValue);
- setNullable(emptyToNull(oldValue), diffBuilder::setOldValue);
+ ofNullable(emptyToNull(newValue)).ifPresent(diffBuilder::setNewValue);
+ ofNullable(emptyToNull(oldValue)).ifPresent(diffBuilder::setOldValue);
}
return diffBuilder.build();
};
diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchResponseFormat.java b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchResponseFormat.java
index a5871be1e48..9ea6aaf92d1 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchResponseFormat.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchResponseFormat.java
@@ -65,8 +65,8 @@ import static com.google.common.base.Strings.nullToEmpty;
import static java.lang.String.format;
import static java.util.Collections.emptyList;
import static java.util.Objects.requireNonNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.rule.RuleKey.EXTERNAL_RULE_REPO_PREFIX;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
import static org.sonar.server.issue.index.IssueIndex.FACET_ASSIGNED_TO_ME;
import static org.sonar.server.issue.index.IssueIndex.FACET_PROJECTS;
@@ -162,13 +162,13 @@ public class SearchResponseFormat {
private void formatIssue(Issue.Builder issueBuilder, IssueDto dto, SearchResponseData data) {
issueBuilder.setKey(dto.getKey());
- setNullable(dto.getType(), issueBuilder::setType, Common.RuleType::forNumber);
+ ofNullable(dto.getType()).map(Common.RuleType::forNumber).ifPresent(issueBuilder::setType);
ComponentDto component = data.getComponentByUuid(dto.getComponentUuid());
issueBuilder.setOrganization(data.getOrganizationKey(component.getOrganizationUuid()));
issueBuilder.setComponent(component.getKey());
- setNullable(component.getBranch(), issueBuilder::setBranch);
- setNullable(component.getPullRequest(), issueBuilder::setPullRequest);
+ ofNullable(component.getBranch()).ifPresent(issueBuilder::setBranch);
+ ofNullable(component.getPullRequest()).ifPresent(issueBuilder::setPullRequest);
ComponentDto project = data.getComponentByUuid(dto.getProjectUuid());
if (project != null) {
issueBuilder.setProject(project.getKey());
@@ -183,8 +183,8 @@ public class SearchResponseFormat {
}
issueBuilder.setFromHotspot(dto.isFromHotspot());
issueBuilder.setSeverity(Common.Severity.valueOf(dto.getSeverity()));
- setNullable(data.getUserByUuid(dto.getAssigneeUuid()), assignee -> issueBuilder.setAssignee(assignee.getLogin()));
- setNullable(emptyToNull(dto.getResolution()), issueBuilder::setResolution);
+ ofNullable(data.getUserByUuid(dto.getAssigneeUuid())).ifPresent(assignee -> issueBuilder.setAssignee(assignee.getLogin()));
+ ofNullable(emptyToNull(dto.getResolution())).ifPresent(issueBuilder::setResolution);
issueBuilder.setStatus(dto.getStatus());
issueBuilder.setMessage(nullToEmpty(dto.getMessage()));
issueBuilder.addAllTags(dto.getTags());
@@ -194,17 +194,17 @@ public class SearchResponseFormat {
issueBuilder.setDebt(effortValue);
issueBuilder.setEffort(effortValue);
}
- setNullable(dto.getLine(), issueBuilder::setLine);
- setNullable(emptyToNull(dto.getChecksum()), issueBuilder::setHash);
+ ofNullable(dto.getLine()).ifPresent(issueBuilder::setLine);
+ ofNullable(emptyToNull(dto.getChecksum())).ifPresent(issueBuilder::setHash);
completeIssueLocations(dto, issueBuilder, data);
// Filter author only if user is member of the organization
if (data.getUserOrganizationUuids().contains(component.getOrganizationUuid())) {
issueBuilder.setAuthor(nullToEmpty(dto.getAuthorLogin()));
}
- setNullable(dto.getIssueCreationDate(), issueBuilder::setCreationDate, DateUtils::formatDateTime);
- setNullable(dto.getIssueUpdateDate(), issueBuilder::setUpdateDate, DateUtils::formatDateTime);
- setNullable(dto.getIssueCloseDate(), issueBuilder::setCloseDate, DateUtils::formatDateTime);
+ ofNullable(dto.getIssueCreationDate()).map(DateUtils::formatDateTime).ifPresent(issueBuilder::setCreationDate);
+ ofNullable(dto.getIssueUpdateDate()).map(DateUtils::formatDateTime).ifPresent(issueBuilder::setUpdateDate);
+ ofNullable(dto.getIssueCloseDate()).map(DateUtils::formatDateTime).ifPresent(issueBuilder::setCloseDate);
}
private static String engineNameFrom(RuleKey ruleKey) {
@@ -241,7 +241,7 @@ public class SearchResponseFormat {
target.setTextRange(targetRange);
}
if (source.hasComponentId()) {
- setNullable(data.getComponentByUuid(source.getComponentId()), c -> target.setComponent(c.getKey()));
+ ofNullable(data.getComponentByUuid(source.getComponentId())).ifPresent(c -> target.setComponent(c.getKey()));
} else {
target.setComponent(issueBuilder.getComponent());
}
@@ -297,7 +297,7 @@ public class SearchResponseFormat {
.setKey(comment.getKey())
.setUpdatable(data.isUpdatableComment(comment.getKey()))
.setCreatedAt(DateUtils.formatDateTime(new Date(comment.getIssueChangeCreationDate())));
- setNullable(data.getUserByUuid(comment.getUserUuid()), user -> wsComment.setLogin(user.getLogin()));
+ ofNullable(data.getUserByUuid(comment.getUserUuid())).ifPresent(user -> wsComment.setLogin(user.getLogin()));
if (markdown != null) {
wsComment
.setHtmlText(Markdown.convertToHtml(markdown))
@@ -331,9 +331,9 @@ public class SearchResponseFormat {
.setName(nullToEmpty(dto.name()))
.setLongName(nullToEmpty(dto.longName()))
.setEnabled(dto.isEnabled());
- setNullable(dto.getBranch(), builder::setBranch);
- setNullable(dto.getPullRequest(), builder::setPullRequest);
- setNullable(emptyToNull(dto.path()), builder::setPath);
+ ofNullable(dto.getBranch()).ifPresent(builder::setBranch);
+ ofNullable(dto.getPullRequest()).ifPresent(builder::setPullRequest);
+ ofNullable(emptyToNull(dto.path())).ifPresent(builder::setPath);
result.add(builder.build());
}
@@ -356,7 +356,7 @@ public class SearchResponseFormat {
.setLogin(user.getLogin())
.setName(nullToEmpty(user.getName()))
.setActive(user.isActive());
- setNullable(emptyToNull(user.getEmail()), email -> builder.setAvatar(avatarFactory.create(user)));
+ ofNullable(emptyToNull(user.getEmail())).ifPresent(email -> builder.setAvatar(avatarFactory.create(user)));
return builder;
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentDtoToWsComponent.java b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentDtoToWsComponent.java
index e3be50161aa..b762c30013c 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentDtoToWsComponent.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentDtoToWsComponent.java
@@ -20,13 +20,14 @@
package org.sonar.server.measure.ws;
import java.util.Map;
-import org.sonar.core.util.Protobuf;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.measure.LiveMeasureDto;
import org.sonar.db.metric.MetricDto;
import org.sonarqube.ws.Measures;
import org.sonarqube.ws.Measures.Component;
+import static java.util.Optional.ofNullable;
+
class ComponentDtoToWsComponent {
private ComponentDtoToWsComponent() {
// static methods only
@@ -58,11 +59,11 @@ class ComponentDtoToWsComponent {
.setKey(component.getKey())
.setName(component.name())
.setQualifier(component.qualifier());
- Protobuf.setNullable(component.getBranch(), wsComponent::setBranch);
- Protobuf.setNullable(component.getPullRequest(), wsComponent::setPullRequest);
- Protobuf.setNullable(component.path(), wsComponent::setPath);
- Protobuf.setNullable(component.description(), wsComponent::setDescription);
- Protobuf.setNullable(component.language(), wsComponent::setLanguage);
+ ofNullable(component.getBranch()).ifPresent(wsComponent::setBranch);
+ ofNullable(component.getPullRequest()).ifPresent(wsComponent::setPullRequest);
+ ofNullable(component.path()).ifPresent(wsComponent::setPath);
+ ofNullable(component.description()).ifPresent(wsComponent::setDescription);
+ ofNullable(component.language()).ifPresent(wsComponent::setLanguage);
return wsComponent;
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/MeasureDtoToWsMeasure.java b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/MeasureDtoToWsMeasure.java
index 3941f8ea1d8..9509da98648 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/MeasureDtoToWsMeasure.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/MeasureDtoToWsMeasure.java
@@ -20,14 +20,13 @@
package org.sonar.server.measure.ws;
import javax.annotation.Nullable;
-import org.sonar.core.util.Protobuf;
import org.sonar.db.measure.LiveMeasureDto;
import org.sonar.db.measure.MeasureDto;
import org.sonar.db.metric.MetricDto;
import org.sonarqube.ws.Measures;
import org.sonarqube.ws.Measures.Measure;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.measure.ws.MeasureValueFormatter.formatMeasureValue;
import static org.sonar.server.measure.ws.MeasureValueFormatter.formatNumericalValue;
@@ -55,7 +54,7 @@ class MeasureDtoToWsMeasure {
// a measure value can be null, new_violations metric for example
if (!Double.isNaN(doubleValue) || stringValue != null) {
measureBuilder.setValue(formatMeasureValue(doubleValue, stringValue, metric));
- setNullable(bestValue, v -> measureBuilder.setBestValue(doubleValue == v));
+ ofNullable(bestValue).ifPresent(v -> measureBuilder.setBestValue(doubleValue == v));
}
Measures.PeriodValue.Builder periodBuilder = Measures.PeriodValue.newBuilder();
@@ -66,7 +65,7 @@ class MeasureDtoToWsMeasure {
.clear()
.setIndex(1)
.setValue(formatNumericalValue(variation, metric));
- setNullable(bestValue, v -> builderForValue.setBestValue(variation == v));
+ ofNullable(bestValue).ifPresent(v -> builderForValue.setBestValue(variation == v));
measureBuilder.getPeriodsBuilder().addPeriodsValue(builderForValue);
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/MetricDtoToWsMetric.java b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/MetricDtoToWsMetric.java
index 37495104226..940bacb0a61 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/MetricDtoToWsMetric.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/MetricDtoToWsMetric.java
@@ -22,7 +22,7 @@ package org.sonar.server.measure.ws;
import org.sonar.db.metric.MetricDto;
import org.sonarqube.ws.Common.Metric;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.measure.ws.MeasureValueFormatter.formatNumericalValue;
class MetricDtoToWsMetric {
@@ -35,17 +35,17 @@ class MetricDtoToWsMetric {
metric.setKey(metricDto.getKey());
metric.setType(metricDto.getValueType());
metric.setName(metricDto.getShortName());
- setNullable(metricDto.getDescription(), metric::setDescription);
- setNullable(metricDto.getDomain(), metric::setDomain);
+ ofNullable(metricDto.getDescription()).ifPresent(metric::setDescription);
+ ofNullable(metricDto.getDomain()).ifPresent(metric::setDomain);
if (metricDto.getDirection() != 0) {
metric.setHigherValuesAreBetter(metricDto.getDirection() > 0);
}
metric.setQualitative(metricDto.isQualitative());
metric.setHidden(metricDto.isHidden());
metric.setCustom(metricDto.isUserManaged());
- setNullable(metricDto.getDecimalScale(), metric::setDecimalScale);
- setNullable(metricDto.getBestValue(), bv -> metric.setBestValue(formatNumericalValue(bv, metricDto)));
- setNullable(metricDto.getWorstValue(), wv -> metric.setWorstValue(formatNumericalValue(wv, metricDto)));
+ ofNullable(metricDto.getDecimalScale()).ifPresent(metric::setDecimalScale);
+ ofNullable(metricDto.getBestValue()).ifPresent(bv -> metric.setBestValue(formatNumericalValue(bv, metricDto)));
+ ofNullable(metricDto.getWorstValue()).ifPresent(wv -> metric.setWorstValue(formatNumericalValue(wv, metricDto)));
return metric.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/SearchHistoryAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/SearchHistoryAction.java
index 61e446fbe12..9dd0911f099 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/measure/ws/SearchHistoryAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/measure/ws/SearchHistoryAction.java
@@ -50,9 +50,9 @@ import org.sonar.server.ws.KeyExamples;
import org.sonarqube.ws.Measures.SearchHistoryResponse;
import static java.lang.String.format;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.DateUtils.parseEndingDateOrDateTime;
import static org.sonar.api.utils.DateUtils.parseStartingDateOrDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.SnapshotDto.STATUS_PROCESSED;
import static org.sonar.server.component.ws.MeasuresWsParameters.ACTION_SEARCH_HISTORY;
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_BRANCH;
@@ -187,8 +187,8 @@ public class SearchHistoryAction implements MeasuresWsAction {
.setComponentUuid(component.projectUuid())
.setStatus(STATUS_PROCESSED)
.setSort(SORT_FIELD.BY_DATE, SORT_ORDER.ASC);
- setNullable(request.getFrom(), from -> dbQuery.setCreatedAfter(parseStartingDateOrDateTime(from).getTime()));
- setNullable(request.getTo(), to -> dbQuery.setCreatedBefore(parseEndingDateOrDateTime(to).getTime() + 1_000L));
+ ofNullable(request.getFrom()).ifPresent(from -> dbQuery.setCreatedAfter(parseStartingDateOrDateTime(from).getTime()));
+ ofNullable(request.getTo()).ifPresent(to -> dbQuery.setCreatedBefore(parseEndingDateOrDateTime(to).getTime() + 1_000L));
return dbClient.snapshotDao().selectAnalysesByQuery(dbSession, dbQuery);
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/notification/ws/AddAction.java b/server/sonar-server/src/main/java/org/sonar/server/notification/ws/AddAction.java
index f6dcb76e11a..febb19e0816 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/notification/ws/AddAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/notification/ws/AddAction.java
@@ -41,7 +41,7 @@ import org.sonar.server.user.UserSession;
import org.sonar.server.ws.KeyExamples;
import static java.util.Optional.empty;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.notification.ws.NotificationsWsParameters.ACTION_ADD;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_CHANNEL;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_LOGIN;
@@ -150,8 +150,8 @@ public class AddAction implements NotificationsWsAction {
AddRequest add = new AddRequest()
.setType(request.mandatoryParam(PARAM_TYPE))
.setChannel(request.mandatoryParam(PARAM_CHANNEL));
- setNullable(request.param(PARAM_PROJECT), add::setProject);
- setNullable(request.param(PARAM_LOGIN), add::setLogin);
+ ofNullable(request.param(PARAM_PROJECT)).ifPresent(add::setProject);
+ ofNullable(request.param(PARAM_LOGIN)).ifPresent(add::setLogin);
if (add.getProject() == null) {
checkRequest(dispatchers.getGlobalDispatchers().contains(add.getType()), "Value of parameter '%s' (%s) must be one of: %s",
diff --git a/server/sonar-server/src/main/java/org/sonar/server/notification/ws/ListAction.java b/server/sonar-server/src/main/java/org/sonar/server/notification/ws/ListAction.java
index a5dff309cc1..a3a71d48695 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/notification/ws/ListAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/notification/ws/ListAction.java
@@ -51,7 +51,7 @@ import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Comparator.comparing;
import static java.util.Comparator.naturalOrder;
import static java.util.Comparator.nullsFirst;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.core.util.stream.MoreCollectors.toOneElement;
import static org.sonar.server.notification.ws.NotificationsWsParameters.ACTION_LIST;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_LOGIN;
@@ -186,8 +186,7 @@ public class ListAction implements NotificationsWsAction {
List<String> propertyKey = Splitter.on(".").splitToList(property.getKey());
notification.setType(propertyKey.get(1));
notification.setChannel(propertyKey.get(2));
- setNullable(property.getResourceId(),
- componentId -> populateProjectFields(notification, componentId, organizationsByUuid, projectsById));
+ ofNullable(property.getResourceId()).ifPresent(componentId -> populateProjectFields(notification, componentId, organizationsByUuid, projectsById));
return notification.build();
};
diff --git a/server/sonar-server/src/main/java/org/sonar/server/notification/ws/RemoveAction.java b/server/sonar-server/src/main/java/org/sonar/server/notification/ws/RemoveAction.java
index 5482e07b913..ca17782775e 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/notification/ws/RemoveAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/notification/ws/RemoveAction.java
@@ -41,7 +41,7 @@ import org.sonar.server.user.UserSession;
import org.sonar.server.ws.KeyExamples;
import static java.util.Optional.empty;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.notification.ws.NotificationsWsParameters.ACTION_REMOVE;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_CHANNEL;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_LOGIN;
@@ -149,8 +149,8 @@ public class RemoveAction implements NotificationsWsAction {
RemoveRequest remove = new RemoveRequest()
.setType(request.mandatoryParam(PARAM_TYPE))
.setChannel(request.mandatoryParam(PARAM_CHANNEL));
- setNullable(request.param(PARAM_PROJECT), remove::setProject);
- setNullable(request.param(PARAM_LOGIN), remove::setLogin);
+ ofNullable(request.param(PARAM_PROJECT)).ifPresent(remove::setProject);
+ ofNullable(request.param(PARAM_LOGIN)).ifPresent(remove::setLogin);
if (remove.getProject() == null) {
checkRequest(dispatchers.getGlobalDispatchers().contains(remove.getType()), "Value of parameter '%s' (%s) must be one of: %s",
diff --git a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java
index 996800212bc..6ac41011099 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java
@@ -39,7 +39,7 @@ import org.sonarqube.ws.Organizations.AddMemberWsResponse;
import org.sonarqube.ws.Organizations.User;
import static com.google.common.base.Strings.emptyToNull;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.db.user.GroupMembershipQuery.IN;
import static org.sonar.server.organization.ws.OrganizationsWsSupport.PARAM_LOGIN;
import static org.sonar.server.organization.ws.OrganizationsWsSupport.PARAM_ORGANIZATION;
@@ -127,7 +127,7 @@ public class AddMemberAction implements OrganizationsWsAction {
.setLogin(user.getLogin())
.setName(user.getName())
.setGroupCount(groups);
- setNullable(emptyToNull(user.getEmail()), text -> wsUser.setAvatar(avatarResolver.create(user)));
+ ofNullable(emptyToNull(user.getEmail())).ifPresent(text -> wsUser.setAvatar(avatarResolver.create(user)));
response.setUser(wsUser);
return response.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/OrganizationsWsSupport.java b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/OrganizationsWsSupport.java
index 7c1369137df..44116152c88 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/OrganizationsWsSupport.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/OrganizationsWsSupport.java
@@ -26,7 +26,7 @@ import org.sonar.db.organization.OrganizationDto;
import org.sonar.server.organization.OrganizationValidation;
import org.sonarqube.ws.Organizations.Organization;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.organization.OrganizationValidation.DESCRIPTION_MAX_LENGTH;
import static org.sonar.server.organization.OrganizationValidation.NAME_MAX_LENGTH;
import static org.sonar.server.organization.OrganizationValidation.NAME_MIN_LENGTH;
@@ -113,9 +113,9 @@ public class OrganizationsWsSupport {
.setName(dto.getName())
.setKey(dto.getKey())
.setGuarded(dto.isGuarded());
- setNullable(dto.getDescription(), builder::setDescription);
- setNullable(dto.getUrl(), builder::setUrl);
- setNullable(dto.getAvatarUrl(), builder::setAvatar);
+ ofNullable(dto.getDescription()).ifPresent(builder::setDescription);
+ ofNullable(dto.getUrl()).ifPresent(builder::setUrl);
+ ofNullable(dto.getAvatarUrl()).ifPresent(builder::setAvatar);
return builder;
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchAction.java
index 7ab6146269b..8b9d3f99ed2 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchAction.java
@@ -41,7 +41,7 @@ import org.sonarqube.ws.Organizations.Organization;
import static java.lang.String.format;
import static java.util.Collections.emptySet;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.db.Pagination.forPage;
import static org.sonar.db.organization.OrganizationQuery.newOrganizationQueryBuilder;
@@ -161,9 +161,9 @@ public class SearchAction implements OrganizationsWsAction {
.setName(organization.getName())
.setKey(organization.getKey())
.setGuarded(organization.isGuarded());
- setNullable(organization.getDescription(), builder::setDescription);
- setNullable(organization.getUrl(), builder::setUrl);
- setNullable(organization.getAvatarUrl(), builder::setAvatar);
+ ofNullable(organization.getDescription()).ifPresent(builder::setDescription);
+ ofNullable(organization.getUrl()).ifPresent(builder::setUrl);
+ ofNullable(organization.getAvatarUrl()).ifPresent(builder::setAvatar);
if (onlyMembershipOrganizations && organizationAlmBinding != null) {
builder.setAlm(Organization.Alm.newBuilder()
.setKey(organizationAlmBinding.getAlm().getId())
diff --git a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchMembersAction.java b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchMembersAction.java
index d14dcff4700..eee4c7a34ea 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchMembersAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/SearchMembersAction.java
@@ -49,8 +49,8 @@ import org.sonarqube.ws.Organizations.User;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.emptyToNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.server.ws.WebService.SelectionMode.SELECTED;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.server.es.SearchOptions.MAX_LIMIT;
import static org.sonar.server.organization.ws.OrganizationsWsSupport.PARAM_ORGANIZATION;
@@ -139,8 +139,8 @@ public class SearchMembersAction implements OrganizationsWsAction {
.clear()
.setLogin(login)
.setName(userDto.getName());
- setNullable(emptyToNull(userDto.getEmail()), text -> wsUser.setAvatar(avatarResolver.create(userDto)));
- setNullable(groupCountByLogin, count -> wsUser.setGroupCount(groupCountByLogin.count(login)));
+ ofNullable(emptyToNull(userDto.getEmail())).ifPresent(text -> wsUser.setAvatar(avatarResolver.create(userDto)));
+ ofNullable(groupCountByLogin).ifPresent(count -> wsUser.setGroupCount(groupCountByLogin.count(login)));
return wsUser;
})
.forEach(response::addUsers);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java
index a3f5003771f..5c271680743 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java
@@ -45,7 +45,7 @@ import org.sonarqube.ws.Permissions.Group;
import org.sonarqube.ws.Permissions.WsGroupsResponse;
import static java.util.Collections.emptyList;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.db.permission.PermissionQuery.DEFAULT_PAGE_SIZE;
import static org.sonar.db.permission.PermissionQuery.RESULTS_MAX_SIZE;
import static org.sonar.db.permission.PermissionQuery.SEARCH_QUERY_MIN_LENGTH;
@@ -141,7 +141,7 @@ public class GroupsAction implements PermissionsWsAction {
if (group.getId() != 0) {
wsGroup.setId(String.valueOf(group.getId()));
}
- setNullable(group.getDescription(), wsGroup::setDescription);
+ ofNullable(group.getDescription()).ifPresent(wsGroup::setDescription);
wsGroup.addAllPermissions(permissionsByGroupId.get(group.getId()));
});
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java
index b91d5b93b85..7ceded5fe58 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java
@@ -45,7 +45,7 @@ import org.sonarqube.ws.Permissions.UsersWsResponse;
import static com.google.common.base.Strings.emptyToNull;
import static java.util.Collections.emptyList;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.db.permission.PermissionQuery.DEFAULT_PAGE_SIZE;
import static org.sonar.db.permission.PermissionQuery.RESULTS_MAX_SIZE;
import static org.sonar.db.permission.PermissionQuery.SEARCH_QUERY_MIN_LENGTH;
@@ -152,9 +152,9 @@ public class UsersAction implements PermissionsWsAction {
Permissions.User.Builder userResponse = response.addUsersBuilder()
.setLogin(user.getLogin())
.addAllPermissions(permissionsByUserId.get(user.getId()));
- setNullable(user.getEmail(), userResponse::setEmail);
- setNullable(emptyToNull(user.getEmail()), u -> userResponse.setAvatar(avatarResolver.create(user)));
- setNullable(user.getName(), userResponse::setName);
+ ofNullable(user.getEmail()).ifPresent(userResponse::setEmail);
+ ofNullable(emptyToNull(user.getEmail())).ifPresent(u -> userResponse.setAvatar(avatarResolver.create(user)));
+ ofNullable(user.getName()).ifPresent(userResponse::setName);
});
response.getPagingBuilder()
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java
index 4cace94ac5e..9eaa59cc4a8 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java
@@ -48,14 +48,14 @@ import org.sonar.server.user.UserSession;
import static java.lang.String.format;
import static java.util.Collections.singleton;
import static java.util.Objects.requireNonNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.DateUtils.parseDateOrDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdmin;
import static org.sonar.server.permission.ws.template.WsTemplateRef.newTemplateRef;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_002;
-import static org.sonar.server.ws.WsParameterBuilder.QualifierParameterContext.newQualifierParameterContext;
import static org.sonar.server.ws.WsParameterBuilder.createRootQualifiersParameter;
+import static org.sonar.server.ws.WsParameterBuilder.QualifierParameterContext.newQualifierParameterContext;
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_QUALIFIER;
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
@@ -131,8 +131,7 @@ public class BulkApplyTemplateAction implements PermissionsWsAction {
.setDescription("Filter the projects for which last analysis is older than the given date (exclusive).<br> " +
"Either a date (server timezone) or datetime can be provided.")
.setSince("6.6")
- .setExampleValue("2017-10-19 or 2017-10-19T13:00:00+0200")
- ;
+ .setExampleValue("2017-10-19 or 2017-10-19T13:00:00+0200");
action.createParam(PARAM_ON_PROVISIONED_ONLY)
.setDescription("Filter the projects that are provisioned")
@@ -178,15 +177,14 @@ public class BulkApplyTemplateAction implements PermissionsWsAction {
ComponentQuery.Builder query = ComponentQuery.builder()
.setQualifiers(qualifiers.toArray(new String[qualifiers.size()]));
- setNullable(request.getQuery(), q -> {
+ ofNullable(request.getQuery()).ifPresent(q -> {
query.setNameOrKeyQuery(q);
query.setPartialMatchOnKey(true);
- return query;
});
- setNullable(request.getVisibility(), v -> query.setPrivate(Visibility.isPrivate(v)));
- setNullable(request.getAnalyzedBefore(), d -> query.setAnalyzedBefore(parseDateOrDateTime(d).getTime()));
- setNullable(request.isOnProvisionedOnly(), query::setOnProvisionedOnly);
- setNullable(request.getProjects(), keys -> query.setComponentKeys(new HashSet<>(keys)));
+ ofNullable(request.getVisibility()).ifPresent(v -> query.setPrivate(Visibility.isPrivate(v)));
+ ofNullable(request.getAnalyzedBefore()).ifPresent(d -> query.setAnalyzedBefore(parseDateOrDateTime(d).getTime()));
+ query.setOnProvisionedOnly(request.isOnProvisionedOnly());
+ ofNullable(request.getProjects()).ifPresent(keys -> query.setComponentKeys(new HashSet<>(keys)));
return query.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/PermissionTemplateDtoToPermissionTemplateResponse.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/PermissionTemplateDtoToPermissionTemplateResponse.java
index fa3c2df8e8c..01f579891fb 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/PermissionTemplateDtoToPermissionTemplateResponse.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/PermissionTemplateDtoToPermissionTemplateResponse.java
@@ -25,7 +25,7 @@ import org.sonar.api.utils.DateUtils;
import org.sonar.db.permission.template.PermissionTemplateDto;
import org.sonarqube.ws.Permissions.PermissionTemplate;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
public class PermissionTemplateDtoToPermissionTemplateResponse {
@@ -46,8 +46,8 @@ public class PermissionTemplateDtoToPermissionTemplateResponse {
.setName(permissionTemplate.getName())
.setCreatedAt(DateUtils.formatDateTime(permissionTemplate.getCreatedAt()))
.setUpdatedAt(DateUtils.formatDateTime(permissionTemplate.getUpdatedAt()));
- setNullable(permissionTemplate.getDescription(), permissionTemplateBuilder::setDescription);
- setNullable(permissionTemplate.getKeyPattern(), permissionTemplateBuilder::setProjectKeyPattern);
+ ofNullable(permissionTemplate.getDescription()).ifPresent(permissionTemplateBuilder::setDescription);
+ ofNullable(permissionTemplate.getKeyPattern()).ifPresent(permissionTemplateBuilder::setProjectKeyPattern);
return permissionTemplateBuilder.build();
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java
index 12d57497105..eac80d66f2c 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/SearchTemplatesAction.java
@@ -50,8 +50,8 @@ import org.sonarqube.ws.Permissions.PermissionTemplate;
import org.sonarqube.ws.Permissions.SearchTemplatesWsResponse;
import org.sonarqube.ws.Permissions.SearchTemplatesWsResponse.TemplateIdQualifier;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.DateUtils.formatDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdmin;
import static org.sonar.server.permission.ws.template.SearchTemplatesData.builder;
import static org.sonar.server.ws.WsUtils.checkFoundWithOptional;
@@ -140,8 +140,8 @@ public class SearchTemplatesAction implements PermissionsWsAction {
.setName(templateDto.getName())
.setCreatedAt(formatDateTime(templateDto.getCreatedAt()))
.setUpdatedAt(formatDateTime(templateDto.getUpdatedAt()));
- setNullable(templateDto.getKeyPattern(), templateBuilder::setProjectKeyPattern);
- setNullable(templateDto.getDescription(), templateBuilder::setDescription);
+ ofNullable(templateDto.getKeyPattern()).ifPresent(templateBuilder::setProjectKeyPattern);
+ ofNullable(templateDto.getDescription()).ifPresent(templateBuilder::setDescription);
for (String permission : permissionService.getAllProjectPermissions()) {
templateBuilder.addPermissions(
permissionResponse
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateGroupsAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateGroupsAction.java
index 11ed234607a..6140dfb441a 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateGroupsAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateGroupsAction.java
@@ -42,10 +42,10 @@ import org.sonar.server.permission.ws.WsParameters;
import org.sonar.server.user.UserSession;
import org.sonarqube.ws.Permissions;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.permission.PermissionQuery.DEFAULT_PAGE_SIZE;
import static org.sonar.db.permission.PermissionQuery.RESULTS_MAX_SIZE;
import static org.sonar.db.permission.PermissionQuery.SEARCH_QUERY_MIN_LENGTH;
@@ -131,7 +131,7 @@ public class TemplateGroupsAction implements PermissionsWsAction {
if (group.getId() != 0) {
wsGroup.setId(String.valueOf(group.getId()));
}
- setNullable(group.getDescription(), wsGroup::setDescription);
+ ofNullable(group.getDescription()).ifPresent(wsGroup::setDescription);
wsGroup.addAllPermissions(permissionsByGroupId.get(group.getId()));
});
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateUsersAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateUsersAction.java
index 81d346dd8c0..b6a49548e05 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateUsersAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateUsersAction.java
@@ -45,10 +45,10 @@ import org.sonarqube.ws.Permissions;
import org.sonarqube.ws.Permissions.UsersWsResponse;
import static com.google.common.base.Strings.emptyToNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.permission.PermissionQuery.DEFAULT_PAGE_SIZE;
import static org.sonar.db.permission.PermissionQuery.RESULTS_MAX_SIZE;
import static org.sonar.db.permission.PermissionQuery.SEARCH_QUERY_MIN_LENGTH;
@@ -138,9 +138,9 @@ public class TemplateUsersAction implements PermissionsWsAction {
Permissions.User.Builder userResponse = responseBuilder.addUsersBuilder()
.setLogin(user.getLogin())
.addAllPermissions(permissionsByUserId.get(user.getId()));
- setNullable(user.getEmail(), userResponse::setEmail);
- setNullable(user.getName(), userResponse::setName);
- setNullable(emptyToNull(user.getEmail()), u -> userResponse.setAvatar(avatarResolver.create(user)));
+ ofNullable(user.getEmail()).ifPresent(userResponse::setEmail);
+ ofNullable(user.getName()).ifPresent(userResponse::setName);
+ ofNullable(emptyToNull(user.getEmail())).ifPresent(u -> userResponse.setAvatar(avatarResolver.create(user)));
});
responseBuilder.getPagingBuilder()
.setPageIndex(paging.pageIndex())
diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java
index bac624bc0d6..c9e5441d342 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/StatusAction.java
@@ -24,13 +24,14 @@ import org.sonar.api.platform.Server;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
-import org.sonar.core.util.Protobuf;
import org.sonar.server.app.RestartFlagHolder;
import org.sonar.server.platform.Platform;
import org.sonar.server.platform.db.migration.DatabaseMigrationState;
import org.sonar.server.ws.WsUtils;
import org.sonarqube.ws.System;
+import static java.util.Optional.ofNullable;
+
/**
* Implementation of the {@code status} action for the System WebService.
*/
@@ -74,8 +75,8 @@ public class StatusAction implements SystemWsAction {
@Override
public void handle(Request request, Response response) throws Exception {
System.StatusResponse.Builder protobuf = System.StatusResponse.newBuilder();
- Protobuf.setNullable(server.getId(), protobuf::setId);
- Protobuf.setNullable(server.getVersion(), protobuf::setVersion);
+ ofNullable(server.getId()).ifPresent(protobuf::setId);
+ ofNullable(server.getVersion()).ifPresent(protobuf::setVersion);
protobuf.setStatus(computeStatus());
WsUtils.writeProtobuf(protobuf.build(), request, response);
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/project/ws/ProvisionedAction.java b/server/sonar-server/src/main/java/org/sonar/server/project/ws/ProvisionedAction.java
index 4eb1e7d0467..c611e4af436 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/project/ws/ProvisionedAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/project/ws/ProvisionedAction.java
@@ -45,7 +45,6 @@ import org.sonarqube.ws.Components.ProvisionedWsResponse.Component;
import static com.google.common.collect.Sets.newHashSet;
import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.Paging.offset;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.db.permission.OrganizationPermission.PROVISION_PROJECTS;
import static org.sonar.server.es.SearchOptions.MAX_LIMIT;
@@ -124,10 +123,9 @@ public class ProvisionedAction implements ProjectsWsAction {
.setQualifiers(Qualifiers.PROJECT)
.setOnProvisionedOnly(true);
- setNullable(nameOrKeyQuery, q -> {
+ ofNullable(nameOrKeyQuery).ifPresent(q -> {
dbQuery.setPartialMatchOnKey(true);
dbQuery.setNameOrKeyQuery(q);
- return dbQuery;
});
return dbQuery.build();
diff --git a/server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchAction.java
index ab512ba4c5d..10499c5e313 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchAction.java
@@ -44,12 +44,12 @@ import org.sonarqube.ws.Projects.SearchWsResponse;
import static com.google.common.base.Preconditions.checkArgument;
import static java.lang.String.format;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.resources.Qualifiers.APP;
import static org.sonar.api.resources.Qualifiers.PROJECT;
import static org.sonar.api.resources.Qualifiers.VIEW;
import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.api.utils.DateUtils.parseDateOrDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_02;
import static org.sonar.server.project.Visibility.PRIVATE;
@@ -191,16 +191,15 @@ public class SearchAction implements ProjectsWsAction {
ComponentQuery.Builder query = ComponentQuery.builder()
.setQualifiers(qualifiers.toArray(new String[qualifiers.size()]));
- setNullable(request.getQuery(), q -> {
+ ofNullable(request.getQuery()).ifPresent(q -> {
query.setNameOrKeyQuery(q);
query.setPartialMatchOnKey(true);
- return query;
});
- setNullable(request.getVisibility(), v -> query.setPrivate(Visibility.isPrivate(v)));
- setNullable(request.getAnalyzedBefore(), d -> query.setAnalyzedBefore(parseDateOrDateTime(d).getTime()));
- setNullable(request.isOnProvisionedOnly(), query::setOnProvisionedOnly);
- setNullable(request.getProjects(), keys -> query.setComponentKeys(new HashSet<>(keys)));
- setNullable(request.getProjectIds(), uuids -> query.setComponentUuids(new HashSet<>(uuids)));
+ ofNullable(request.getVisibility()).ifPresent(v -> query.setPrivate(Visibility.isPrivate(v)));
+ ofNullable(request.getAnalyzedBefore()).ifPresent(d -> query.setAnalyzedBefore(parseDateOrDateTime(d).getTime()));
+ query.setOnProvisionedOnly(request.isOnProvisionedOnly());
+ ofNullable(request.getProjects()).ifPresent(keys -> query.setComponentKeys(new HashSet<>(keys)));
+ ofNullable(request.getProjectIds()).ifPresent(uuids -> query.setComponentUuids(new HashSet<>(uuids)));
return query.build();
}
@@ -239,7 +238,7 @@ public class SearchAction implements ProjectsWsAction {
.setName(dto.name())
.setQualifier(dto.qualifier())
.setVisibility(dto.isPrivate() ? PRIVATE.getLabel() : PUBLIC.getLabel());
- setNullable(analysisDate, d -> builder.setLastAnalysisDate(formatDateTime(d)));
+ ofNullable(analysisDate).ifPresent(d -> builder.setLastAnalysisDate(formatDateTime(d)));
return builder.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchMyProjectsAction.java b/server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchMyProjectsAction.java
index 1ab8a4b0dd0..fe57e16a56b 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchMyProjectsAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/project/ws/SearchMyProjectsAction.java
@@ -51,8 +51,8 @@ import static com.google.common.base.Strings.emptyToNull;
import static com.google.common.base.Strings.isNullOrEmpty;
import static java.util.Collections.singletonList;
import static java.util.Objects.requireNonNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.Paging.offset;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.project.ws.SearchMyProjectsData.builder;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
@@ -139,7 +139,7 @@ public class SearchMyProjectsAction implements ProjectsWsAction {
.setName(dto.name());
data.lastAnalysisDateFor(dto.uuid()).ifPresent(project::setLastAnalysisDate);
data.qualityGateStatusFor(dto.uuid()).ifPresent(project::setQualityGate);
- setNullable(emptyToNull(dto.description()), project::setDescription);
+ ofNullable(emptyToNull(dto.description())).ifPresent(project::setDescription);
data.projectLinksFor(dto.uuid()).stream()
.map(ProjectLinkDtoToWs.INSTANCE)
diff --git a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/CreateEventAction.java b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/CreateEventAction.java
index 2777a73862a..dc63905273d 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/CreateEventAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/CreateEventAction.java
@@ -46,8 +46,8 @@ import org.sonarqube.ws.ProjectAnalyses.Event;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static java.lang.String.format;
+import static java.util.Optional.ofNullable;
import static org.apache.commons.lang.StringUtils.isNotBlank;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.event.EventValidator.MAX_NAME_LENGTH;
import static org.sonar.server.projectanalysis.ws.EventCategory.OTHER;
import static org.sonar.server.projectanalysis.ws.EventCategory.VERSION;
@@ -178,7 +178,7 @@ public class CreateEventAction implements ProjectAnalysesWsAction {
.setCategory(fromLabel(dbEvent.getCategory()).name())
.setAnalysis(dbEvent.getAnalysisUuid())
.setName(dbEvent.getName());
- setNullable(dbEvent.getDescription(), wsEvent::setDescription);
+ ofNullable(dbEvent.getDescription()).ifPresent(wsEvent::setDescription);
return CreateEventResponse.newBuilder().setEvent(wsEvent).build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchAction.java
index bb7da1f9118..5d267308d49 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchAction.java
@@ -42,9 +42,9 @@ import org.sonar.server.ws.KeyExamples;
import org.sonarqube.ws.ProjectAnalyses;
import static com.google.common.base.Preconditions.checkArgument;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.DateUtils.parseEndingDateOrDateTime;
import static org.sonar.api.utils.DateUtils.parseStartingDateOrDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.db.component.SnapshotQuery.SORT_FIELD.BY_DATE;
import static org.sonar.db.component.SnapshotQuery.SORT_ORDER.DESC;
@@ -160,8 +160,8 @@ public class SearchAction implements ProjectAnalysesWsAction {
.setComponentUuid(data.getProject().uuid())
.setStatus(SnapshotDto.STATUS_PROCESSED)
.setSort(BY_DATE, DESC);
- setNullable(data.getRequest().getFrom(), from -> dbQuery.setCreatedAfter(parseStartingDateOrDateTime(from).getTime()));
- setNullable(data.getRequest().getTo(), to -> dbQuery.setCreatedBefore(parseEndingDateOrDateTime(to).getTime() + 1_000L));
+ ofNullable(data.getRequest().getFrom()).ifPresent(from -> dbQuery.setCreatedAfter(parseStartingDateOrDateTime(from).getTime()));
+ ofNullable(data.getRequest().getTo()).ifPresent(to -> dbQuery.setCreatedBefore(parseEndingDateOrDateTime(to).getTime() + 1_000L));
data.setAnalyses(dbClient.snapshotDao().selectAnalysesByQuery(data.getDbSession(), dbQuery));
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java
index 47813de6cd3..e979a955a88 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java
@@ -40,9 +40,9 @@ import org.sonarqube.ws.ProjectAnalyses.QualityGate;
import org.sonarqube.ws.ProjectAnalyses.SearchResponse;
import static java.lang.String.format;
+import static java.util.Optional.ofNullable;
import static java.util.stream.Collectors.toList;
import static org.sonar.api.utils.DateUtils.formatDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.index;
import static org.sonar.server.projectanalysis.ws.EventCategory.fromLabel;
@@ -93,9 +93,9 @@ class SearchResponseBuilder {
private Event.Builder dbToWsEvent(EventDto dbEvent) {
wsEvent.clear().setKey(dbEvent.getUuid());
- setNullable(dbEvent.getName(), wsEvent::setName);
- setNullable(dbEvent.getDescription(), wsEvent::setDescription);
- setNullable(dbEvent.getCategory(), cat -> wsEvent.setCategory(fromLabel(cat).name()));
+ ofNullable(dbEvent.getName()).ifPresent(wsEvent::setName);
+ ofNullable(dbEvent.getDescription()).ifPresent(wsEvent::setDescription);
+ ofNullable(dbEvent.getCategory()).ifPresent(cat -> wsEvent.setCategory(fromLabel(cat).name()));
if (dbEvent.getCategory() != null) {
switch (EventCategory.fromLabel(dbEvent.getCategory())) {
case DEFINITION_CHANGE:
@@ -308,9 +308,9 @@ class SearchResponseBuilder {
.setKey(key)
.setName(name)
.setChangeType(changeType);
- setNullable(branch, builder::setBranch);
- setNullable(oldBranch, builder::setOldBranch);
- setNullable(newBranch, builder::setNewBranch);
+ ofNullable(branch).ifPresent(builder::setBranch);
+ ofNullable(oldBranch).ifPresent(builder::setOldBranch);
+ ofNullable(newBranch).ifPresent(builder::setNewBranch);
return builder.build();
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/UpdateEventAction.java b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/UpdateEventAction.java
index aeea8d219b4..edbed25bc82 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/UpdateEventAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/UpdateEventAction.java
@@ -43,8 +43,8 @@ import javax.annotation.CheckForNull;
import static com.google.common.base.Preconditions.checkArgument;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
+import static java.util.Optional.ofNullable;
import static org.apache.commons.lang.StringUtils.isNotBlank;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.projectanalysis.ws.EventValidator.checkModifiable;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
import static org.sonar.server.projectanalysis.ws.EventCategory.VERSION;
@@ -168,7 +168,7 @@ public class UpdateEventAction implements ProjectAnalysesWsAction {
private static Function<EventDto, EventDto> updateNameAndDescription(UpdateEventRequest request) {
return event -> {
- setNullable(request.getName(), event::setName);
+ ofNullable(request.getName()).ifPresent(event::setName);
return event;
};
}
@@ -179,8 +179,8 @@ public class UpdateEventAction implements ProjectAnalysesWsAction {
.setKey(dbEvent.getUuid())
.setCategory(fromLabel(dbEvent.getCategory()).name())
.setAnalysis(dbEvent.getAnalysisUuid());
- setNullable(dbEvent.getName(), wsEvent::setName);
- setNullable(dbEvent.getDescription(), wsEvent::setDescription);
+ ofNullable(dbEvent.getName()).ifPresent(wsEvent::setName);
+ ofNullable(dbEvent.getDescription()).ifPresent(wsEvent::setDescription);
return UpdateEventResponse.newBuilder().setEvent(wsEvent).build();
};
diff --git a/server/sonar-server/src/main/java/org/sonar/server/projectlink/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/projectlink/ws/SearchAction.java
index e0c66dadbf3..e3bef423b0d 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/projectlink/ws/SearchAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/projectlink/ws/SearchAction.java
@@ -34,7 +34,7 @@ import org.sonar.server.user.UserSession;
import org.sonarqube.ws.ProjectLinks.Link;
import org.sonarqube.ws.ProjectLinks.SearchWsResponse;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.projectlink.ws.ProjectLinksWs.checkProject;
import static org.sonar.server.projectlink.ws.ProjectLinksWsParameters.ACTION_SEARCH;
@@ -110,7 +110,7 @@ public class SearchAction implements ProjectLinksWsAction {
.setId(String.valueOf(link.getUuid()))
.setType(link.getType())
.setUrl(link.getHref());
- setNullable(link.getName(), builder::setName);
+ ofNullable(link.getName()).ifPresent(builder::setName);
return builder.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java
index 39e8cb5c902..bba2eda8d2c 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java
@@ -31,8 +31,6 @@ import org.sonar.db.qualitygate.QualityGateConditionDto;
import org.sonar.server.qualitygate.QualityGateConditionsUpdater;
import org.sonarqube.ws.Qualitygates.CreateConditionResponse;
-import static com.google.common.base.Strings.emptyToNull;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.qualitygate.ws.QualityGatesWs.addConditionParams;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.ACTION_CREATE_CONDITION;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERROR;
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java
index fedf6b13289..109da2d6321 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ListAction.java
@@ -34,7 +34,7 @@ import org.sonar.server.qualitygate.QualityGateFinder;
import org.sonarqube.ws.Qualitygates.ListWsResponse;
import org.sonarqube.ws.Qualitygates.ListWsResponse.QualityGate;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
@@ -88,7 +88,7 @@ public class ListAction implements QualityGatesWsAction {
.setActions(wsSupport.getActions(organization, qualityGate, defaultQualityGate))
.build())
.collect(toList()));
- setNullable(defaultId, builder::setDefault);
+ ofNullable(defaultId).ifPresent(builder::setDefault);
return builder.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
index ac20ac8c1d4..d751010d5ff 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
@@ -40,7 +40,7 @@ import org.sonarqube.ws.Qualitygates.ShowWsResponse;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
@@ -143,7 +143,7 @@ public class ShowAction implements QualityGatesWsAction {
.setId(condition.getId())
.setMetric(metric.getKey())
.setOp(condition.getOperator());
- setNullable(condition.getErrorThreshold(), builder::setError);
+ ofNullable(condition.getErrorThreshold()).ifPresent(builder::setError);
return builder.build();
};
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java
index 0c51ba99428..a469c320141 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java
@@ -32,8 +32,6 @@ import org.sonar.server.qualitygate.QualityGateConditionsUpdater;
import org.sonarqube.ws.Qualitygates.UpdateConditionResponse;
import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.base.Strings.emptyToNull;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.qualitygate.ws.QualityGatesWs.addConditionParams;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.ACTION_UPDATE_CONDITION;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERROR;
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/CopyAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/CopyAction.java
index e90cc131e1c..cb76d699690 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/CopyAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/CopyAction.java
@@ -32,7 +32,7 @@ import org.sonar.server.qualityprofile.QProfileCopier;
import org.sonar.server.user.UserSession;
import org.sonarqube.ws.Qualityprofiles.CopyWsResponse;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
@@ -108,10 +108,10 @@ public class CopyAction implements QProfileWsAction {
wsResponse.setKey(copiedProfile.getKee());
wsResponse.setName(copiedProfile.getName());
wsResponse.setLanguage(languageKey);
- setNullable(language, l -> wsResponse.setLanguageName(l.getName()));
+ ofNullable(language).ifPresent(l -> wsResponse.setLanguageName(l.getName()));
wsResponse.setIsDefault(isDefault);
wsResponse.setIsInherited(parentKey != null);
- setNullable(parentKey, wsResponse::setParentKey);
+ ofNullable(parentKey).ifPresent(wsResponse::setParentKey);
return wsResponse.build();
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/InheritanceAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/InheritanceAction.java
index 93e2ec57e54..458c6dd0aed 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/InheritanceAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/InheritanceAction.java
@@ -38,7 +38,7 @@ import org.sonarqube.ws.Qualityprofiles.InheritanceWsResponse;
import org.sonarqube.ws.Qualityprofiles.InheritanceWsResponse.QualityProfile;
import static java.util.Collections.singleton;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.db.qualityprofile.ActiveRuleDto.OVERRIDES;
import static org.sonar.server.qualityprofile.ws.QProfileWsSupport.createOrganizationParam;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
@@ -138,7 +138,7 @@ public class InheritanceAction implements QProfileWsAction {
.setActiveRuleCount(statistics.countRulesByProfileKey.getOrDefault(key, 0L))
.setOverridingRuleCount(statistics.countOverridingRulesByProfileKey.getOrDefault(key, 0L))
.setIsBuiltIn(qualityProfile.isBuiltIn());
- setNullable(qualityProfile.getParentKee(), builder::setParent);
+ ofNullable(qualityProfile.getParentKee()).ifPresent(builder::setParent);
return builder.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchAction.java
index 4f5313165e1..589298e48dc 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchAction.java
@@ -56,10 +56,10 @@ import org.sonarqube.ws.Qualityprofiles.SearchWsResponse.QualityProfile;
import static com.google.common.base.Preconditions.checkState;
import static java.lang.String.format;
import static java.util.Collections.emptyList;
+import static java.util.Optional.ofNullable;
import static java.util.function.Function.identity;
import static org.sonar.api.rule.RuleStatus.DEPRECATED;
import static org.sonar.api.utils.DateUtils.formatDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
@@ -265,12 +265,12 @@ public class SearchAction implements QProfileWsAction {
QualityProfile.Builder profileBuilder = response.addProfilesBuilder();
String profileKey = profile.getKee();
- setNullable(profile.getOrganizationUuid(), o -> profileBuilder.setOrganization(data.getOrganization().getKey()));
+ ofNullable(profile.getOrganizationUuid()).ifPresent(o -> profileBuilder.setOrganization(data.getOrganization().getKey()));
profileBuilder.setKey(profileKey);
- setNullable(profile.getName(), profileBuilder::setName);
- setNullable(profile.getRulesUpdatedAt(), profileBuilder::setRulesUpdatedAt);
- setNullable(profile.getLastUsed(), last -> profileBuilder.setLastUsed(formatDateTime(last)));
- setNullable(profile.getUserUpdatedAt(), userUpdatedAt -> profileBuilder.setUserUpdatedAt(formatDateTime(userUpdatedAt)));
+ ofNullable(profile.getName()).ifPresent(profileBuilder::setName);
+ ofNullable(profile.getRulesUpdatedAt()).ifPresent(profileBuilder::setRulesUpdatedAt);
+ ofNullable(profile.getLastUsed()).ifPresent(last -> profileBuilder.setLastUsed(formatDateTime(last)));
+ ofNullable(profile.getUserUpdatedAt()).ifPresent(userUpdatedAt -> profileBuilder.setUserUpdatedAt(formatDateTime(userUpdatedAt)));
profileBuilder.setActiveRuleCount(data.getActiveRuleCount(profileKey));
profileBuilder.setActiveDeprecatedRuleCount(data.getActiveDeprecatedRuleCount(profileKey));
boolean isDefault = data.isDefault(profile);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchGroupsAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchGroupsAction.java
index 65137823d31..bd44ca33f0a 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchGroupsAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchGroupsAction.java
@@ -39,6 +39,7 @@ import org.sonar.db.user.GroupDto;
import org.sonarqube.ws.Common;
import org.sonarqube.ws.Qualityprofiles;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.SELECTED;
@@ -46,7 +47,6 @@ import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
import static org.sonar.api.server.ws.WebService.SelectionMode.ALL;
import static org.sonar.api.server.ws.WebService.SelectionMode.DESELECTED;
import static org.sonar.api.server.ws.WebService.SelectionMode.fromParam;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.db.Pagination.forPage;
@@ -154,7 +154,7 @@ public class SearchGroupsAction implements QProfileWsAction {
Qualityprofiles.SearchGroupsResponse.Group.Builder builder = Qualityprofiles.SearchGroupsResponse.Group.newBuilder()
.setName(group.getName())
.setSelected(isSelected);
- setNullable(group.getDescription(), builder::setDescription);
+ ofNullable(group.getDescription()).ifPresent(builder::setDescription);
return builder.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchUsersAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchUsersAction.java
index 7475250b1d7..355a41caa7e 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchUsersAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/SearchUsersAction.java
@@ -41,6 +41,7 @@ import org.sonarqube.ws.Common;
import org.sonarqube.ws.Qualityprofiles.SearchUsersResponse;
import static com.google.common.base.Strings.emptyToNull;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.SELECTED;
@@ -48,7 +49,6 @@ import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
import static org.sonar.api.server.ws.WebService.SelectionMode.ALL;
import static org.sonar.api.server.ws.WebService.SelectionMode.DESELECTED;
import static org.sonar.api.server.ws.WebService.SelectionMode.fromParam;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
@@ -158,7 +158,7 @@ public class SearchUsersAction implements QProfileWsAction {
.setLogin(user.getLogin())
.setName(user.getName())
.setSelected(isSelected);
- setNullable(emptyToNull(user.getEmail()), e -> builder.setAvatar(avatarResolver.create(user)));
+ ofNullable(emptyToNull(user.getEmail())).ifPresent(e -> builder.setAvatar(avatarResolver.create(user)));
return builder
.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ShowAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ShowAction.java
index 2098489869d..24946d83c68 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ShowAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ShowAction.java
@@ -44,9 +44,9 @@ import org.sonarqube.ws.Qualityprofiles.ShowResponse.CompareToSonarWay;
import org.sonarqube.ws.Qualityprofiles.ShowResponse.QualityProfile;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.rule.RuleStatus.DEPRECATED;
import static org.sonar.api.utils.DateUtils.formatDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.ws.WsUtils.checkFound;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
@@ -166,10 +166,10 @@ public class ShowAction implements QProfileWsAction {
.setActiveRuleCount(activeRules)
.setActiveDeprecatedRuleCount(deprecatedActiveRules)
.setProjectCount(projects);
- setNullable(profile.getRulesUpdatedAt(), profileBuilder::setRulesUpdatedAt);
- setNullable(profile.getLastUsed(), last -> profileBuilder.setLastUsed(formatDateTime(last)));
- setNullable(profile.getUserUpdatedAt(), userUpdatedAt -> profileBuilder.setUserUpdatedAt(formatDateTime(userUpdatedAt)));
- setNullable(compareToSonarWay, showResponseBuilder::setCompareToSonarWay);
+ ofNullable(profile.getRulesUpdatedAt()).ifPresent(profileBuilder::setRulesUpdatedAt);
+ ofNullable(profile.getLastUsed()).ifPresent(last -> profileBuilder.setLastUsed(formatDateTime(last)));
+ ofNullable(profile.getUserUpdatedAt()).ifPresent(userUpdatedAt -> profileBuilder.setUserUpdatedAt(formatDateTime(userUpdatedAt)));
+ ofNullable(compareToSonarWay).ifPresent(showResponseBuilder::setCompareToSonarWay);
return showResponseBuilder.setProfile(profileBuilder).build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/ActiveRuleCompleter.java b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/ActiveRuleCompleter.java
index c61711d08c3..2bf0d378c59 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/ActiveRuleCompleter.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/ActiveRuleCompleter.java
@@ -56,7 +56,7 @@ import org.sonarqube.ws.Rules.SearchResponse;
import static com.google.common.base.Strings.nullToEmpty;
import static java.util.Collections.singletonList;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
/**
@@ -208,7 +208,7 @@ public class ActiveRuleCompleter {
private void writeProfile(Map<String, Rules.QProfile> profilesResponse, QProfileDto profile) {
Rules.QProfile.Builder profileResponse = Rules.QProfile.newBuilder();
- setNullable(profile.getName(), profileResponse::setName);
+ ofNullable(profile.getName()).ifPresent(profileResponse::setName);
if (profile.getLanguage() != null) {
profileResponse.setLang(profile.getLanguage());
@@ -216,7 +216,7 @@ public class ActiveRuleCompleter {
String langName = language == null ? profile.getLanguage() : language.getName();
profileResponse.setLangName(langName);
}
- setNullable(profile.getParentKee(), profileResponse::setParent);
+ ofNullable(profile.getParentKee()).ifPresent(profileResponse::setParent);
profilesResponse.put(profile.getKee(), profileResponse.build());
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/CreateAction.java b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/CreateAction.java
index 92e0dd4204d..79abe984374 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/CreateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/CreateAction.java
@@ -45,7 +45,7 @@ import org.sonarqube.ws.Rules;
import static com.google.common.base.Strings.isNullOrEmpty;
import static java.net.HttpURLConnection.HTTP_CONFLICT;
import static java.util.Collections.singletonList;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
public class CreateAction implements RulesWsAction {
@@ -161,7 +161,7 @@ public class CreateAction implements RulesWsAction {
if (!isNullOrEmpty(params)) {
newRule.setParameters(KeyValueFormat.parse(params));
}
- setNullable(request.param(PARAM_TYPE), t -> newRule.setType(RuleType.valueOf(t)));
+ ofNullable(request.param(PARAM_TYPE)).ifPresent(t -> newRule.setType(RuleType.valueOf(t)));
writeResponse(dbSession, request, response, ruleCreator.create(dbSession, newRule));
} catch (ReactivationException e) {
response.stream().setStatus(HTTP_CONFLICT);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/ListDefinitionsAction.java b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/ListDefinitionsAction.java
index a629d702b7e..ad6c2631a88 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/setting/ws/ListDefinitionsAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/setting/ws/ListDefinitionsAction.java
@@ -40,8 +40,8 @@ import org.sonarqube.ws.Settings.ListDefinitionsWsResponse;
import static com.google.common.base.Strings.emptyToNull;
import static java.util.Comparator.comparing;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.setting.ws.SettingsWs.SETTING_ON_BRANCHES;
import static org.sonar.server.setting.ws.SettingsWsParameters.PARAM_BRANCH;
import static org.sonar.server.setting.ws.SettingsWsParameters.PARAM_COMPONENT;
@@ -139,14 +139,14 @@ public class ListDefinitionsAction implements SettingsWsAction {
.setKey(key)
.setType(Settings.Type.valueOf(definition.type().name()))
.setMultiValues(definition.multiValues());
- setNullable(emptyToNull(definition.deprecatedKey()), builder::setDeprecatedKey);
- setNullable(emptyToNull(definition.name()), builder::setName);
- setNullable(emptyToNull(definition.description()), builder::setDescription);
+ ofNullable(emptyToNull(definition.deprecatedKey())).ifPresent(builder::setDeprecatedKey);
+ ofNullable(emptyToNull(definition.name())).ifPresent(builder::setName);
+ ofNullable(emptyToNull(definition.description())).ifPresent(builder::setDescription);
String category = propertyDefinitions.getCategory(key);
- setNullable(emptyToNull(category), builder::setCategory);
+ ofNullable(emptyToNull(category)).ifPresent(builder::setCategory);
String subCategory = propertyDefinitions.getSubCategory(key);
- setNullable(emptyToNull(subCategory), builder::setSubCategory);
- setNullable(emptyToNull(definition.defaultValue()), builder::setDefaultValue);
+ ofNullable(emptyToNull(subCategory)).ifPresent(builder::setSubCategory);
+ ofNullable(emptyToNull(definition.defaultValue())).ifPresent(builder::setDefaultValue);
List<String> options = definition.options();
if (!options.isEmpty()) {
builder.addAllOptions(options);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java
index 7d870332d7f..d88102d14b4 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java
@@ -40,7 +40,7 @@ import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.emptyToNull;
import static com.google.common.base.Strings.isNullOrEmpty;
import static java.util.Collections.emptyList;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.user.ExternalIdentity.SQ_AUTHORITY;
import static org.sonar.server.user.UserUpdater.EMAIL_MAX_LENGTH;
import static org.sonar.server.user.UserUpdater.LOGIN_MAX_LENGTH;
@@ -162,7 +162,7 @@ public class CreateAction implements UsersWsAction {
.setActive(userDto.isActive())
.setLocal(userDto.isLocal())
.addAllScmAccounts(userDto.getScmAccountsAsList());
- setNullable(emptyToNull(userDto.getEmail()), userBuilder::setEmail);
+ ofNullable(emptyToNull(userDto.getEmail())).ifPresent(userBuilder::setEmail);
return CreateWsResponse.newBuilder().setUser(userBuilder).build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/CurrentAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/CurrentAction.java
index 0e1750161ee..ef02dee90f6 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/CurrentAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/CurrentAction.java
@@ -50,7 +50,6 @@ import static java.util.Optional.ofNullable;
import static java.util.stream.Collectors.toList;
import static org.apache.commons.lang.StringUtils.EMPTY;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
import static org.sonarqube.ws.Users.CurrentWsResponse.Permissions;
import static org.sonarqube.ws.Users.CurrentWsResponse.newBuilder;
@@ -128,10 +127,10 @@ public class CurrentAction implements UsersWsAction {
.setHomepage(buildHomepage(dbSession, user))
.setShowOnboardingTutorial(!user.isOnboarded())
.addAllSettings(loadUserSettings(dbSession, user));
- setNullable(emptyToNull(user.getEmail()), builder::setEmail);
- setNullable(emptyToNull(user.getEmail()), u -> builder.setAvatar(avatarResolver.create(user)));
- setNullable(user.getExternalLogin(), builder::setExternalIdentity);
- setNullable(user.getExternalIdentityProvider(), builder::setExternalProvider);
+ ofNullable(emptyToNull(user.getEmail())).ifPresent(builder::setEmail);
+ ofNullable(emptyToNull(user.getEmail())).ifPresent(u -> builder.setAvatar(avatarResolver.create(user)));
+ ofNullable(user.getExternalLogin()).ifPresent(builder::setExternalIdentity);
+ ofNullable(user.getExternalIdentityProvider()).ifPresent(builder::setExternalProvider);
personalOrganization.ifPresent(org -> builder.setPersonalOrganization(org.getKey()));
return builder.build();
}
@@ -190,7 +189,7 @@ public class CurrentAction implements UsersWsAction {
CurrentWsResponse.Homepage.Builder homepage = CurrentWsResponse.Homepage.newBuilder()
.setType(CurrentWsResponse.HomepageType.valueOf(user.getHomepageType()))
.setComponent(projectOptional.get().getKey());
- setNullable(projectOptional.get().getBranch(), homepage::setBranch);
+ ofNullable(projectOptional.get().getBranch()).ifPresent(homepage::setBranch);
return of(homepage.build());
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java
index a890d829378..2e55570e902 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/GroupsAction.java
@@ -30,7 +30,6 @@ import org.sonar.api.server.ws.WebService.NewAction;
import org.sonar.api.server.ws.WebService.NewController;
import org.sonar.api.server.ws.WebService.SelectionMode;
import org.sonar.api.utils.Paging;
-import org.sonar.core.util.Protobuf;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.organization.OrganizationDto;
@@ -47,6 +46,7 @@ import org.sonarqube.ws.Users.GroupsWsResponse.Group;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.isNullOrEmpty;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.SELECTED;
@@ -176,7 +176,7 @@ public class GroupsAction implements UsersWsAction {
.setName(group.getName())
.setSelected(group.getUserId() != null)
.setDefault(defaultGroup.getId().longValue() == group.getId());
- Protobuf.setNullable(group.getDescription(), groupBuilder::setDescription);
+ ofNullable(group.getDescription()).ifPresent(groupBuilder::setDescription);
return groupBuilder.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/IdentityProvidersAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/IdentityProvidersAction.java
index 71379d3a01d..60fe8658a1d 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/IdentityProvidersAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/IdentityProvidersAction.java
@@ -30,7 +30,7 @@ import org.sonar.server.authentication.IdentityProviderRepository;
import org.sonarqube.ws.Users;
import org.sonarqube.ws.Users.IdentityProvidersWsResponse;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
public class IdentityProvidersAction implements UsersWsAction {
@@ -72,7 +72,7 @@ public class IdentityProvidersAction implements UsersWsAction {
.setName(input.getName())
.setIconPath(display.getIconPath())
.setBackgroundColor(display.getBackgroundColor());
- setNullable(display.getHelpMessage(), builder::setHelpMessage);
+ ofNullable(display.getHelpMessage()).ifPresent(builder::setHelpMessage);
return builder.build();
};
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java
index e0e2c9c008e..a3de38da449 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java
@@ -33,7 +33,7 @@ import org.sonar.server.usergroups.DefaultGroupFinder;
import org.sonarqube.ws.UserGroups;
import static com.google.common.base.Preconditions.checkArgument;
-import static org.sonar.core.util.Protobuf.setNullable;
+import static java.util.Optional.ofNullable;
import static org.sonar.server.ws.WsUtils.checkFound;
import static org.sonar.server.ws.WsUtils.checkFoundWithOptional;
import static org.sonar.server.ws.WsUtils.checkRequest;
@@ -149,7 +149,7 @@ public class GroupWsSupport {
.setName(group.getName())
.setMembersCount(membersCount)
.setDefault(isDefault);
- setNullable(group.getDescription(), wsGroup::setDescription);
+ ofNullable(group.getDescription()).ifPresent(wsGroup::setDescription);
return wsGroup;
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java
index 5fb8b92adca..f997261d1e7 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java
@@ -40,9 +40,9 @@ import org.sonar.server.es.SearchOptions;
import org.sonar.server.user.UserSession;
import org.sonar.server.usergroups.DefaultGroupFinder;
+import static java.util.Optional.ofNullable;
import static org.apache.commons.lang.StringUtils.defaultIfBlank;
import static org.sonar.api.utils.Paging.forPageIndex;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.server.es.SearchOptions.MAX_LIMIT;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_ORGANIZATION_KEY;
@@ -145,7 +145,7 @@ public class SearchAction implements UserGroupsWsAction {
groupBuilder.setName(group.getName());
}
if (fields.contains(FIELD_DESCRIPTION)) {
- setNullable(group.getDescription(), groupBuilder::setDescription);
+ ofNullable(group.getDescription()).ifPresent(groupBuilder::setDescription);
}
if (fields.contains(FIELD_MEMBERS_COUNT)) {
groupBuilder.setMembersCount(memberCount);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/webhook/ws/WebhookWsSupport.java b/server/sonar-server/src/main/java/org/sonar/server/webhook/ws/WebhookWsSupport.java
index 95317048450..00982a416f1 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/webhook/ws/WebhookWsSupport.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/webhook/ws/WebhookWsSupport.java
@@ -19,12 +19,12 @@
*/
package org.sonar.server.webhook.ws;
-import org.sonar.core.util.Protobuf;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.webhook.WebhookDeliveryDto;
import org.sonar.db.webhook.WebhookDeliveryLiteDto;
import org.sonarqube.ws.Webhooks;
+import static java.util.Optional.ofNullable;
import static org.sonar.api.utils.DateUtils.formatDateTime;
class WebhookWsSupport {
@@ -41,16 +41,16 @@ class WebhookWsSupport {
.setUrl(dto.getUrl())
.setSuccess(dto.isSuccess())
.setComponentKey(component.getDbKey());
- Protobuf.setNullable(dto.getCeTaskUuid(), builder::setCeTaskId);
- Protobuf.setNullable(dto.getHttpStatus(), builder::setHttpStatus);
- Protobuf.setNullable(dto.getDurationMs(), builder::setDurationMs);
+ ofNullable(dto.getCeTaskUuid()).ifPresent(builder::setCeTaskId);
+ ofNullable(dto.getHttpStatus()).ifPresent(builder::setHttpStatus);
+ ofNullable(dto.getDurationMs()).ifPresent(builder::setDurationMs);
return builder;
}
static Webhooks.Delivery.Builder copyDtoToProtobuf(ComponentDto component, WebhookDeliveryDto dto, Webhooks.Delivery.Builder builder) {
copyDtoToProtobuf(component, (WebhookDeliveryLiteDto) dto, builder);
builder.setPayload(dto.getPayload());
- Protobuf.setNullable(dto.getErrorStacktrace(), builder::setErrorStacktrace);
+ ofNullable(dto.getErrorStacktrace()).ifPresent(builder::setErrorStacktrace);
return builder;
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchActionTest.java
index fdd1fad9f54..49262c18750 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchActionTest.java
@@ -56,6 +56,7 @@ import org.sonarqube.ws.MediaTypes;
import static java.util.Arrays.asList;
import static java.util.Collections.emptySet;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import static org.mockito.Mockito.mock;
@@ -67,7 +68,6 @@ import static org.sonar.api.resources.Qualifiers.PROJECT;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newDirectory;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newModuleDto;
@@ -287,12 +287,12 @@ public class SearchActionTest {
private SearchWsResponse call(SearchRequest wsRequest) {
TestRequest request = ws.newRequest();
- setNullable(wsRequest.getOrganization(), p -> request.setParam(PARAM_ORGANIZATION, p));
- setNullable(wsRequest.getLanguage(), p -> request.setParam(PARAM_LANGUAGE, p));
- setNullable(wsRequest.getQualifiers(), p -> request.setParam(PARAM_QUALIFIERS, Joiner.on(",").join(p)));
- setNullable(wsRequest.getQuery(), p -> request.setParam(TEXT_QUERY, p));
- setNullable(wsRequest.getPage(), page -> request.setParam(PAGE, String.valueOf(page)));
- setNullable(wsRequest.getPageSize(), pageSize -> request.setParam(PAGE_SIZE, String.valueOf(pageSize)));
+ ofNullable(wsRequest.getOrganization()).ifPresent(p3 -> request.setParam(PARAM_ORGANIZATION, p3));
+ ofNullable(wsRequest.getLanguage()).ifPresent(p2 -> request.setParam(PARAM_LANGUAGE, p2));
+ ofNullable(wsRequest.getQualifiers()).ifPresent(p1 -> request.setParam(PARAM_QUALIFIERS, Joiner.on(",").join(p1)));
+ ofNullable(wsRequest.getQuery()).ifPresent(p -> request.setParam(TEXT_QUERY, p));
+ ofNullable(wsRequest.getPage()).ifPresent(page -> request.setParam(PAGE, String.valueOf(page)));
+ ofNullable(wsRequest.getPageSize()).ifPresent(pageSize -> request.setParam(PAGE_SIZE, String.valueOf(pageSize)));
return request.executeProtobuf(SearchWsResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java
index 715427e5285..0b7e75a2800 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java
@@ -45,8 +45,8 @@ import org.sonar.server.ws.WsActionTester;
import static java.lang.String.format;
import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
import static org.sonar.server.favorite.ws.FavoritesWsParameters.PARAM_COMPONENT;
@@ -173,7 +173,7 @@ public class AddActionTest {
private TestResponse call(@Nullable String componentKey) {
TestRequest request = ws.newRequest();
- setNullable(componentKey, c -> request.setParam(PARAM_COMPONENT, c));
+ ofNullable(componentKey).ifPresent(c -> request.setParam(PARAM_COMPONENT, c));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/RemoveActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/RemoveActionTest.java
index 38e8c53b78d..05e050e2e63 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/RemoveActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/RemoveActionTest.java
@@ -40,8 +40,8 @@ import org.sonar.server.ws.WsActionTester;
import static java.lang.String.format;
import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
import static org.sonar.server.favorite.ws.FavoritesWsParameters.PARAM_COMPONENT;
@@ -139,7 +139,7 @@ public class RemoveActionTest {
private TestResponse call(@Nullable String componentKey) {
TestRequest request = ws.newRequest();
- setNullable(componentKey, c -> request.setParam(PARAM_COMPONENT, c));
+ ofNullable(componentKey).ifPresent(c -> request.setParam(PARAM_COMPONENT, c));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/SearchActionTest.java
index a60cb753968..e4f23df7342 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/SearchActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/SearchActionTest.java
@@ -41,11 +41,11 @@ import org.sonarqube.ws.Common.Paging;
import org.sonarqube.ws.Favorites.Favorite;
import org.sonarqube.ws.Favorites.SearchResponse;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import static org.sonar.api.resources.Qualifiers.FILE;
import static org.sonar.api.resources.Qualifiers.PROJECT;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
import static org.sonar.test.JsonAssert.assertJson;
@@ -189,8 +189,8 @@ public class SearchActionTest {
private SearchResponse call(@Nullable Integer page, @Nullable Integer pageSize) {
TestRequest request = ws.newRequest()
.setMethod(POST.name());
- setNullable(page, p -> request.setParam(Param.PAGE, p.toString()));
- setNullable(pageSize, ps -> request.setParam(Param.PAGE_SIZE, ps.toString()));
+ ofNullable(page).ifPresent(p -> request.setParam(Param.PAGE, p.toString()));
+ ofNullable(pageSize).ifPresent(ps -> request.setParam(Param.PAGE_SIZE, ps.toString()));
return request.executeProtobuf(SearchResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java
index 4c8d7c040a9..d11c0048f36 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java
@@ -57,6 +57,7 @@ import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@@ -65,7 +66,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.sonar.api.web.UserRole.CODEVIEWER;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.issue.IssueChangeDto.TYPE_COMMENT;
public class AddCommentActionTest {
@@ -204,8 +204,8 @@ public class AddCommentActionTest {
private TestResponse call(@Nullable String issueKey, @Nullable String commentText) {
TestRequest request = tester.newRequest();
- setNullable(issueKey, issue -> request.setParam("issue", issue));
- setNullable(commentText, text -> request.setParam("text", text));
+ ofNullable(issueKey).ifPresent(issue -> request.setParam("issue", issue));
+ ofNullable(commentText).ifPresent(text -> request.setParam("text", text));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java
index 1e0bc2011e0..82b76d30674 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java
@@ -66,6 +66,7 @@ import static com.google.common.collect.Lists.newArrayList;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static java.util.Objects.requireNonNull;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import static org.mockito.ArgumentMatchers.any;
@@ -82,7 +83,6 @@ import static org.sonar.api.rules.RuleType.SECURITY_HOTSPOT;
import static org.sonar.api.rules.RuleType.VULNERABILITY;
import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.issue.IssueChangeDto.TYPE_COMMENT;
@@ -655,13 +655,13 @@ public class BulkChangeActionTest {
private BulkChangeWsResponse call(BulkChangeRequest bulkChangeRequest) {
TestRequest request = tester.newRequest();
- setNullable(bulkChangeRequest.getIssues(), value -> request.setParam("issues", String.join(",", value)));
- setNullable(bulkChangeRequest.getAssign(), value -> request.setParam("assign", value));
- setNullable(bulkChangeRequest.getSetSeverity(), value -> request.setParam("set_severity", value));
- setNullable(bulkChangeRequest.getSetType(), value -> request.setParam("set_type", value));
- setNullable(bulkChangeRequest.getDoTransition(), value -> request.setParam("do_transition", value));
- setNullable(bulkChangeRequest.getComment(), value -> request.setParam("comment", value));
- setNullable(bulkChangeRequest.getSendNotifications(), value -> request.setParam("sendNotifications", value != null ? value ? "true" : "false" : null));
+ ofNullable(bulkChangeRequest.getIssues()).ifPresent(value6 -> request.setParam("issues", String.join(",", value6)));
+ ofNullable(bulkChangeRequest.getAssign()).ifPresent(value5 -> request.setParam("assign", value5));
+ ofNullable(bulkChangeRequest.getSetSeverity()).ifPresent(value4 -> request.setParam("set_severity", value4));
+ ofNullable(bulkChangeRequest.getSetType()).ifPresent(value3 -> request.setParam("set_type", value3));
+ ofNullable(bulkChangeRequest.getDoTransition()).ifPresent(value2 -> request.setParam("do_transition", value2));
+ ofNullable(bulkChangeRequest.getComment()).ifPresent(value1 -> request.setParam("comment", value1));
+ ofNullable(bulkChangeRequest.getSendNotifications()).ifPresent(value -> request.setParam("sendNotifications", value != null ? value ? "true" : "false" : null));
if (!bulkChangeRequest.getAddTags().isEmpty()) {
request.setParam("add_tags", String.join(",", bulkChangeRequest.getAddTags()));
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java
index c2db53697cf..22ab82cb47a 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java
@@ -44,11 +44,11 @@ import org.sonar.server.ws.WsActionTester;
import org.sonarqube.ws.Issues.ChangelogWsResponse;
import org.sonarqube.ws.Issues.ChangelogWsResponse.Changelog.Diff;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.groups.Tuple.tuple;
import static org.sonar.api.web.UserRole.CODEVIEWER;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.issue.IssueTesting.newDto;
import static org.sonar.db.rule.RuleTesting.newRuleDto;
@@ -323,7 +323,7 @@ public class ChangelogActionTest {
private ChangelogWsResponse call(@Nullable String issueKey) {
TestRequest request = tester.newRequest();
- setNullable(issueKey, e -> request.setParam("issue", e));
+ ofNullable(issueKey).ifPresent(e -> request.setParam("issue", e));
return request.executeProtobuf(ChangelogWsResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java
index 259055386a0..862955f2ae3 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java
@@ -42,6 +42,7 @@ import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@@ -49,7 +50,6 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.sonar.api.web.UserRole.CODEVIEWER;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
public class DeleteCommentActionTest {
@@ -175,7 +175,7 @@ public class DeleteCommentActionTest {
private TestResponse call(@Nullable String commentKey) {
TestRequest request = tester.newRequest();
- setNullable(commentKey, comment -> request.setParam("comment", comment));
+ ofNullable(commentKey).ifPresent(comment -> request.setParam("comment", comment));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java
index 1f8c5b37db7..c7dddea00e7 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java
@@ -44,6 +44,7 @@ import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@@ -52,7 +53,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.sonar.api.web.UserRole.CODEVIEWER;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
public class EditCommentActionTest {
@@ -202,8 +202,8 @@ public class EditCommentActionTest {
private TestResponse call(@Nullable String commentKey, @Nullable String commentText) {
TestRequest request = tester.newRequest();
- setNullable(commentKey, comment -> request.setParam("comment", comment));
- setNullable(commentText, comment -> request.setParam("text", comment));
+ ofNullable(commentKey).ifPresent(comment1 -> request.setParam("comment", comment1));
+ ofNullable(commentText).ifPresent(comment -> request.setParam("text", comment));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java
index d9989d87b4c..a51524105b6 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java
@@ -56,6 +56,7 @@ import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@@ -65,7 +66,6 @@ import static org.sonar.api.rule.Severity.MAJOR;
import static org.sonar.api.rule.Severity.MINOR;
import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.issue.IssueTesting.newDto;
import static org.sonar.db.rule.RuleTesting.newRuleDto;
@@ -174,8 +174,8 @@ public class SetSeverityActionTest {
private TestResponse call(@Nullable String issueKey, @Nullable String severity) {
TestRequest request = tester.newRequest();
- setNullable(issueKey, issue -> request.setParam("issue", issue));
- setNullable(severity, value -> request.setParam("severity", value));
+ ofNullable(issueKey).ifPresent(issue -> request.setParam("issue", issue));
+ ofNullable(severity).ifPresent(value -> request.setParam("severity", value));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java
index 79ff9b31d10..de1ba130218 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java
@@ -59,13 +59,13 @@ import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.core.util.stream.MoreCollectors.join;
import static org.sonar.db.component.ComponentTesting.newFileDto;
@@ -227,7 +227,7 @@ public class SetTagsActionTest {
private TestResponse call(@Nullable String issueKey, String... tags) {
TestRequest request = ws.newRequest();
- setNullable(issueKey, issue -> request.setParam("issue", issue));
+ ofNullable(issueKey).ifPresent(issue -> request.setParam("issue", issue));
if (tags.length > 0) {
request.setParam("tags", Arrays.stream(tags).collect(join(Joiner.on(","))));
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java
index a705dd7e0d8..989df80eecc 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java
@@ -56,6 +56,7 @@ import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@@ -67,7 +68,6 @@ import static org.sonar.api.rules.RuleType.CODE_SMELL;
import static org.sonar.api.rules.RuleType.VULNERABILITY;
import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.issue.IssueTesting.newDto;
import static org.sonar.db.rule.RuleTesting.newRuleDto;
@@ -193,8 +193,8 @@ public class SetTypeActionTest {
private TestResponse call(@Nullable String issueKey, @Nullable String type) {
TestRequest request = tester.newRequest();
- setNullable(issueKey, issue -> request.setParam("issue", issue));
- setNullable(type, t -> request.setParam("type", t));
+ ofNullable(issueKey).ifPresent(issue -> request.setParam("issue", issue));
+ ofNullable(type).ifPresent(t -> request.setParam("type", t));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java
index e6ba2f093fc..d47d68e1266 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java
@@ -57,11 +57,11 @@ import static com.google.common.collect.Lists.newArrayList;
import static java.lang.Double.parseDouble;
import static java.lang.String.format;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.api.utils.DateUtils.parseDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.BranchType.PULL_REQUEST;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
@@ -433,10 +433,10 @@ public class SearchHistoryActionTest {
request.setParam(PARAM_COMPONENT, wsRequest.getComponent());
request.setParam(PARAM_METRICS, String.join(",", wsRequest.getMetrics()));
- setNullable(wsRequest.getFrom(), from -> request.setParam(PARAM_FROM, from));
- setNullable(wsRequest.getTo(), to -> request.setParam(PARAM_TO, to));
- setNullable(wsRequest.getPage(), p -> request.setParam(Param.PAGE, String.valueOf(p)));
- setNullable(wsRequest.getPageSize(), ps -> request.setParam(Param.PAGE_SIZE, String.valueOf(ps)));
+ ofNullable(wsRequest.getFrom()).ifPresent(from -> request.setParam(PARAM_FROM, from));
+ ofNullable(wsRequest.getTo()).ifPresent(to -> request.setParam(PARAM_TO, to));
+ ofNullable(wsRequest.getPage()).ifPresent(p -> request.setParam(Param.PAGE, String.valueOf(p)));
+ ofNullable(wsRequest.getPageSize()).ifPresent(ps -> request.setParam(Param.PAGE_SIZE, String.valueOf(ps)));
return request.executeProtobuf(SearchHistoryResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/notification/ws/AddActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/notification/ws/AddActionTest.java
index 74e6d353712..3f3cb95b24d 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/notification/ws/AddActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/notification/ws/AddActionTest.java
@@ -46,11 +46,11 @@ import static java.lang.String.format;
import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newView;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_CHANNEL;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_LOGIN;
@@ -357,9 +357,9 @@ public class AddActionTest {
private TestResponse call(String type, @Nullable String channel, @Nullable String project, @Nullable String login) {
TestRequest request = ws.newRequest();
request.setParam(PARAM_TYPE, type);
- setNullable(channel, channel1 -> request.setParam(PARAM_CHANNEL, channel1));
- setNullable(project, project1 -> request.setParam(PARAM_PROJECT, project1));
- setNullable(login, login1 -> request.setParam(PARAM_LOGIN, login1));
+ ofNullable(channel).ifPresent(channel1 -> request.setParam(PARAM_CHANNEL, channel1));
+ ofNullable(project).ifPresent(project1 -> request.setParam(PARAM_PROJECT, project1));
+ ofNullable(login).ifPresent(login1 -> request.setParam(PARAM_LOGIN, login1));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/notification/ws/RemoveActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/notification/ws/RemoveActionTest.java
index 5d18fa93596..00135b70608 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/notification/ws/RemoveActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/notification/ws/RemoveActionTest.java
@@ -47,10 +47,10 @@ import static java.lang.String.format;
import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newView;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_CHANNEL;
import static org.sonar.server.notification.ws.NotificationsWsParameters.PARAM_LOGIN;
@@ -326,9 +326,9 @@ public class RemoveActionTest {
private TestResponse call(RemoveRequest remove) {
TestRequest request = ws.newRequest();
request.setParam(PARAM_TYPE, remove.getType());
- setNullable(remove.getChannel(), channel -> request.setParam(PARAM_CHANNEL, channel));
- setNullable(remove.getProject(), project -> request.setParam(PARAM_PROJECT, project));
- setNullable(remove.getLogin(), login -> request.setParam(PARAM_LOGIN, login));
+ ofNullable(remove.getChannel()).ifPresent(channel -> request.setParam(PARAM_CHANNEL, channel));
+ ofNullable(remove.getProject()).ifPresent(project -> request.setParam(PARAM_PROJECT, project));
+ ofNullable(remove.getLogin()).ifPresent(login -> request.setParam(PARAM_LOGIN, login));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java
index c840e0b37ce..37a52d66dac 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java
@@ -51,8 +51,8 @@ import org.sonar.server.ws.WsActionTester;
import org.sonarqube.ws.Organizations.AddMemberWsResponse;
import static java.lang.String.format;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.db.user.GroupMembershipQuery.IN;
@@ -256,8 +256,8 @@ public class AddMemberActionTest {
private AddMemberWsResponse call(@Nullable String organizationKey, @Nullable String login) {
TestRequest request = ws.newRequest();
- setNullable(organizationKey, o -> request.setParam(PARAM_ORGANIZATION, o));
- setNullable(login, l -> request.setParam("login", l));
+ ofNullable(organizationKey).ifPresent(o -> request.setParam(PARAM_ORGANIZATION, o));
+ ofNullable(login).ifPresent(l -> request.setParam("login", l));
return request.executeProtobuf(AddMemberWsResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/organization/ws/RemoveMemberActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/organization/ws/RemoveMemberActionTest.java
index a92c7754c8f..b29f2f0d3f0 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/organization/ws/RemoveMemberActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/organization/ws/RemoveMemberActionTest.java
@@ -57,6 +57,7 @@ import org.sonar.server.ws.WsActionTester;
import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
import static java.util.Arrays.asList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.groups.Tuple.tuple;
import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
@@ -64,7 +65,6 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
import static org.sonar.api.CoreProperties.DEFAULT_ISSUE_ASSIGNEE;
import static org.sonar.api.web.UserRole.CODEVIEWER;
import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.db.permission.OrganizationPermission.SCAN;
@@ -365,8 +365,8 @@ public class RemoveMemberActionTest {
private TestResponse call(@Nullable String organizationKey, @Nullable String login) {
TestRequest request = ws.newRequest();
- setNullable(organizationKey, o -> request.setParam(PARAM_ORGANIZATION, o));
- setNullable(login, l -> request.setParam("login", l));
+ ofNullable(organizationKey).ifPresent(o -> request.setParam(PARAM_ORGANIZATION, o));
+ ofNullable(login).ifPresent(l -> request.setParam("login", l));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/project/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/project/ws/CreateActionTest.java
index c479aa6f1b0..5e107959a07 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/project/ws/CreateActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/project/ws/CreateActionTest.java
@@ -47,12 +47,12 @@ import org.sonar.server.ws.WsActionTester;
import org.sonarqube.ws.Projects.CreateWsResponse;
import org.sonarqube.ws.Projects.CreateWsResponse.Project;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.permission.OrganizationPermission.PROVISION_PROJECTS;
import static org.sonar.server.project.Visibility.PRIVATE;
import static org.sonar.server.project.ws.ProjectsWsSupport.PARAM_ORGANIZATION;
@@ -357,10 +357,10 @@ public class CreateActionTest {
private CreateWsResponse call(CreateRequest request) {
TestRequest httpRequest = ws.newRequest()
.setMethod(POST.name());
- setNullable(request.getOrganization(), e -> httpRequest.setParam("organization", e));
- setNullable(request.getKey(), e -> httpRequest.setParam("project", e));
- setNullable(request.getName(), e -> httpRequest.setParam("name", e));
- setNullable(request.getBranch(), e -> httpRequest.setParam("branch", e));
+ ofNullable(request.getOrganization()).ifPresent(org -> httpRequest.setParam("organization", org));
+ ofNullable(request.getKey()).ifPresent(key -> httpRequest.setParam("project", key));
+ ofNullable(request.getName()).ifPresent(name -> httpRequest.setParam("name", name));
+ ofNullable(request.getBranch()).ifPresent(branch -> httpRequest.setParam("branch", branch));
return httpRequest.executeProtobuf(CreateWsResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/project/ws/IndexActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/project/ws/IndexActionTest.java
index 60cd989a353..3cef47e21dd 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/project/ws/IndexActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/project/ws/IndexActionTest.java
@@ -37,8 +37,8 @@ import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.WsActionTester;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newModuleDto;
import static org.sonar.test.JsonAssert.assertJson;
@@ -238,9 +238,9 @@ public class IndexActionTest {
private String call(@Nullable String key, @Nullable String search, @Nullable Boolean subprojects) {
TestRequest httpRequest = ws.newRequest();
- setNullable(key, e -> httpRequest.setParam("key", e));
- setNullable(search, e -> httpRequest.setParam("search", e));
- setNullable(subprojects, e -> httpRequest.setParam("subprojects", Boolean.toString(e)));
+ ofNullable(key).ifPresent(e2 -> httpRequest.setParam("key", e2));
+ ofNullable(search).ifPresent(e1 -> httpRequest.setParam("search", e1));
+ ofNullable(subprojects).ifPresent(e -> httpRequest.setParam("subprojects", Boolean.toString(e)));
return httpRequest.execute().getInput();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/project/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/project/ws/SearchActionTest.java
index 5853242b44b..eeebc375368 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/project/ws/SearchActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/project/ws/SearchActionTest.java
@@ -50,6 +50,7 @@ import org.sonarqube.ws.client.component.ComponentsWsParameters;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
@@ -57,7 +58,6 @@ import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
import static org.sonar.api.utils.DateUtils.formatDate;
import static org.sonar.api.utils.DateUtils.parseDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newDirectory;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newModuleDto;
@@ -428,18 +428,18 @@ public class SearchActionTest {
private SearchWsResponse call(SearchRequest wsRequest) {
TestRequest request = ws.newRequest();
- setNullable(wsRequest.getOrganization(), organization -> request.setParam(PARAM_ORGANIZATION, organization));
+ ofNullable(wsRequest.getOrganization()).ifPresent(organization -> request.setParam(PARAM_ORGANIZATION, organization));
List<String> qualifiers = wsRequest.getQualifiers();
if (!qualifiers.isEmpty()) {
request.setParam(ComponentsWsParameters.PARAM_QUALIFIERS, Joiner.on(",").join(qualifiers));
}
- setNullable(wsRequest.getQuery(), query -> request.setParam(TEXT_QUERY, query));
- setNullable(wsRequest.getPage(), page -> request.setParam(PAGE, String.valueOf(page)));
- setNullable(wsRequest.getPageSize(), pageSize -> request.setParam(PAGE_SIZE, String.valueOf(pageSize)));
- setNullable(wsRequest.getVisibility(), v -> request.setParam(PARAM_VISIBILITY, v));
- setNullable(wsRequest.getAnalyzedBefore(), d -> request.setParam(PARAM_ANALYZED_BEFORE, d));
- setNullable(wsRequest.getProjects(), l -> request.setParam(PARAM_PROJECTS, String.join(",", l)));
- setNullable(wsRequest.getProjectIds(), l -> request.setParam(PARAM_PROJECT_IDS, String.join(",", l)));
+ ofNullable(wsRequest.getQuery()).ifPresent(query -> request.setParam(TEXT_QUERY, query));
+ ofNullable(wsRequest.getPage()).ifPresent(page -> request.setParam(PAGE, String.valueOf(page)));
+ ofNullable(wsRequest.getPageSize()).ifPresent(pageSize -> request.setParam(PAGE_SIZE, String.valueOf(pageSize)));
+ ofNullable(wsRequest.getVisibility()).ifPresent(v -> request.setParam(PARAM_VISIBILITY, v));
+ ofNullable(wsRequest.getAnalyzedBefore()).ifPresent(d -> request.setParam(PARAM_ANALYZED_BEFORE, d));
+ ofNullable(wsRequest.getProjects()).ifPresent(l1 -> request.setParam(PARAM_PROJECTS, String.join(",", l1)));
+ ofNullable(wsRequest.getProjectIds()).ifPresent(l -> request.setParam(PARAM_PROJECT_IDS, String.join(",", l)));
request.setParam(PARAM_ON_PROVISIONED_ONLY, String.valueOf(wsRequest.isOnProvisionedOnly()));
return request.executeProtobuf(SearchWsResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java
index 090b4cd0003..98aa3471a23 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java
@@ -61,12 +61,12 @@ import org.sonarqube.ws.ProjectAnalyses.Project;
import org.sonarqube.ws.ProjectAnalyses.SearchResponse;
import static java.lang.String.format;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import static org.sonar.api.utils.DateUtils.formatDate;
import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.api.utils.DateUtils.parseDateTime;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.BranchType.PULL_REQUEST;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.SnapshotTesting.newAnalysis;
@@ -700,21 +700,21 @@ public class SearchActionTest {
private SearchResponse call(@Nullable String project) {
SearchRequest.Builder request = SearchRequest.builder();
- setNullable(project, request::setProject);
+ ofNullable(project).ifPresent(request::setProject);
return call(request.build());
}
private SearchResponse call(SearchRequest wsRequest) {
TestRequest request = ws.newRequest()
.setMethod(POST.name());
- setNullable(wsRequest.getProject(), project -> request.setParam(PARAM_PROJECT, project));
- setNullable(wsRequest.getBranch(), branch -> request.setParam(PARAM_BRANCH, branch));
- setNullable(wsRequest.getPullRequest(), branch -> request.setParam(PARAM_PULL_REQUEST, branch));
- setNullable(wsRequest.getCategory(), category -> request.setParam(PARAM_CATEGORY, category.name()));
- setNullable(wsRequest.getPage(), page -> request.setParam(Param.PAGE, String.valueOf(page)));
- setNullable(wsRequest.getPageSize(), pageSize -> request.setParam(Param.PAGE_SIZE, String.valueOf(pageSize)));
- setNullable(wsRequest.getFrom(), from -> request.setParam(PARAM_FROM, from));
- setNullable(wsRequest.getTo(), to -> request.setParam(PARAM_TO, to));
+ ofNullable(wsRequest.getProject()).ifPresent(project -> request.setParam(PARAM_PROJECT, project));
+ ofNullable(wsRequest.getBranch()).ifPresent(branch1 -> request.setParam(PARAM_BRANCH, branch1));
+ ofNullable(wsRequest.getPullRequest()).ifPresent(branch -> request.setParam(PARAM_PULL_REQUEST, branch));
+ ofNullable(wsRequest.getCategory()).ifPresent(category -> request.setParam(PARAM_CATEGORY, category.name()));
+ ofNullable(wsRequest.getPage()).ifPresent(page -> request.setParam(Param.PAGE, String.valueOf(page)));
+ ofNullable(wsRequest.getPageSize()).ifPresent(pageSize -> request.setParam(Param.PAGE_SIZE, String.valueOf(pageSize)));
+ ofNullable(wsRequest.getFrom()).ifPresent(from -> request.setParam(PARAM_FROM, from));
+ ofNullable(wsRequest.getTo()).ifPresent(to -> request.setParam(PARAM_TO, to));
return request.executeProtobuf(SearchResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java
index 04e46f57105..e9652dd273e 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java
@@ -41,9 +41,9 @@ import org.sonar.server.ws.WsActionTester;
import org.sonarqube.ws.ProjectAnalyses;
import org.sonarqube.ws.ProjectAnalyses.UpdateEventResponse;
+import static java.util.Optional.ofNullable;
import static org.apache.commons.lang.StringUtils.repeat;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.SnapshotTesting.newAnalysis;
import static org.sonar.db.event.EventTesting.newEvent;
import static org.sonar.test.JsonAssert.assertJson;
@@ -244,8 +244,8 @@ public class UpdateEventActionTest {
private UpdateEventResponse call(@Nullable String eventUuid, @Nullable String name) {
TestRequest request = ws.newRequest()
.setMethod(POST.name());
- setNullable(eventUuid, e -> request.setParam(PARAM_EVENT, e));
- setNullable(name, n -> request.setParam(PARAM_NAME, n));
+ ofNullable(eventUuid).ifPresent(e -> request.setParam(PARAM_EVENT, e));
+ ofNullable(name).ifPresent(n -> request.setParam(PARAM_NAME, n));
return request.executeProtobuf(UpdateEventResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java
index 24fcce33eee..0fe9304e70a 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SearchActionTest.java
@@ -43,10 +43,10 @@ import org.sonarqube.ws.ProjectTags.SearchResponse;
import static com.google.common.collect.Lists.newArrayList;
import static java.util.Arrays.stream;
+import static java.util.Optional.ofNullable;
import static java.util.stream.Collectors.toList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.api.resources.Qualifiers.PROJECT;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.INDEX_TYPE_PROJECT_MEASURES;
import static org.sonar.test.JsonAssert.assertJson;
@@ -128,8 +128,8 @@ public class SearchActionTest {
private SearchResponse call(@Nullable String textQuery, @Nullable Integer pageSize) {
TestRequest request = ws.newRequest();
- setNullable(textQuery, s -> request.setParam("q", s));
- setNullable(pageSize, ps -> request.setParam("ps", ps.toString()));
+ ofNullable(textQuery).ifPresent(s -> request.setParam("q", s));
+ ofNullable(pageSize).ifPresent(ps -> request.setParam("ps", ps.toString()));
return request.executeProtobuf(SearchResponse.class);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java
index dba51c1af77..c0b71a0d85e 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java
@@ -43,8 +43,8 @@ import org.sonar.server.ws.WsActionTester;
import static java.lang.String.format;
import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newModuleDto;
@@ -201,8 +201,8 @@ public class SetActionTest {
private TestResponse call(@Nullable String projectKey, @Nullable String tags) {
TestRequest request = ws.newRequest();
- setNullable(projectKey, p -> request.setParam("project", p));
- setNullable(tags, t -> request.setParam("tags", tags));
+ ofNullable(projectKey).ifPresent(p -> request.setParam("project", p));
+ ofNullable(tags).ifPresent(t -> request.setParam("tags", tags));
return request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java
index 2efd498258f..53a734d2ef9 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java
@@ -42,8 +42,8 @@ import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.WsActionTester;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
public class RenameActionTest {
@@ -269,8 +269,8 @@ public class RenameActionTest {
TestRequest request = ws.newRequest()
.setMethod("POST");
- setNullable(key, k -> request.setParam("key", k));
- setNullable(name, n -> request.setParam("name", n));
+ ofNullable(key).ifPresent(k -> request.setParam("key", k));
+ ofNullable(name).ifPresent(n -> request.setParam("name", n));
request.execute();
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java
index 20cfce75771..0a6f6f5fb80 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java
@@ -55,13 +55,13 @@ import org.sonarqube.ws.Users.CreateWsResponse.User;
import static java.lang.String.format;
import static java.util.Collections.singletonList;
+import static java.util.Optional.ofNullable;
import static org.assertj.core.api.Assertions.assertThat;
import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import static org.sonar.core.util.Protobuf.setNullable;
import static org.sonar.db.user.UserTesting.newUserDto;
import static org.sonar.server.user.index.UserIndexDefinition.FIELD_EMAIL;
import static org.sonar.server.user.index.UserIndexDefinition.FIELD_LOGIN;
@@ -410,11 +410,11 @@ public class CreateActionTest {
private CreateWsResponse call(CreateRequest createRequest) {
TestRequest request = tester.newRequest();
- setNullable(createRequest.getLogin(), e -> request.setParam("login", e));
- setNullable(createRequest.getName(), e -> request.setParam("name", e));
- setNullable(createRequest.getEmail(), e -> request.setParam("email", e));
- setNullable(createRequest.getPassword(), e -> request.setParam("password", e));
- setNullable(createRequest.getScmAccounts(), e -> request.setMultiParam("scmAccount", e));
+ ofNullable(createRequest.getLogin()).ifPresent(e4 -> request.setParam("login", e4));
+ ofNullable(createRequest.getName()).ifPresent(e3 -> request.setParam("name", e3));
+ ofNullable(createRequest.getEmail()).ifPresent(e2 -> request.setParam("email", e2));
+ ofNullable(createRequest.getPassword()).ifPresent(e1 -> request.setParam("password", e1));
+ ofNullable(createRequest.getScmAccounts()).ifPresent(e -> request.setMultiParam("scmAccount", e));
request.setParam("local", createRequest.isLocal() ? "true" : "false");
return request.executeProtobuf(CreateWsResponse.class);
}
diff --git a/sonar-core/src/main/java/org/sonar/core/util/Protobuf.java b/sonar-core/src/main/java/org/sonar/core/util/Protobuf.java
index f56cfc986d2..0fdd8f310c1 100644
--- a/sonar-core/src/main/java/org/sonar/core/util/Protobuf.java
+++ b/sonar-core/src/main/java/org/sonar/core/util/Protobuf.java
@@ -29,8 +29,6 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.function.Function;
-import javax.annotation.Nullable;
import org.apache.commons.io.IOUtils;
/**
@@ -171,41 +169,4 @@ public class Protobuf {
IOUtils.closeQuietly(input);
}
}
-
- /**
- * Call a setter method of {@link com.google.protobuf.GeneratedMessage.Builder} if the parameter
- * is not null. Do nothing if parameter is null.
- * <br/>
- * This utility method is convenient as the setter methods of Protobuf 2 do not accept
- * {@code null} parameters. It avoid increasing complexity with "if not null" conditions.
- * <br/>
- * Example:
- * <pre>
- * setNullable(dto.getLine(), issueBuilder::setLine);
- * </pre>
- */
- public static <PARAM> void setNullable(@Nullable PARAM parameter, Function<PARAM, ?> setter) {
- if (parameter != null) {
- setter.apply(parameter);
- }
- }
-
- /**
- * Same as {@link #setNullable(Object, Function)} but the parameter is converted by the function "{@code paramConverter}"
- * before being applied to setter. If the converter returns {@code null}, then setter method
- * is not called.
- * <br/>
- * Example:
- * <pre>
- * setNullable(dto.getIssueCreationDate(), issueBuilder::setCreationDate, DateUtils::formatDateTime);
- * </pre>
- * @see #setNullable(Object, Function)
- */
- public static <PARAM, PARAM2> void setNullable(@Nullable PARAM param, Function<PARAM2, ?> setter,
- Function<PARAM, PARAM2> paramConverter) {
- if (param != null) {
- PARAM2 output = paramConverter.apply(param);
- setNullable(output, setter);
- }
- }
}
diff --git a/sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java b/sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java
index d688c80d169..e9b549d65d1 100644
--- a/sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/util/ProtobufTest.java
@@ -21,7 +21,6 @@ package org.sonar.core.util;
import java.io.File;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -31,7 +30,6 @@ import org.sonar.test.TestUtils;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.core.test.Test.Fake;
-import static org.sonar.core.util.Protobuf.setNullable;
public class ProtobufTest {
@@ -116,33 +114,4 @@ public class ProtobufTest {
assertThat(it).isNotNull();
assertThat(it.hasNext()).isFalse();
}
-
- @Test
- public void setNullable_sets_field_if_value_is_not_null() {
- Fake.Builder builder = Fake.newBuilder();
-
- setNullable("foo", builder::setLabel);
- assertThat(builder.getLabel()).isEqualTo("foo");
-
- builder.clear();
- setNullable(null, builder::setLabel);
- assertThat(builder.hasLabel()).isFalse();
- }
-
- @Test
- public void setNullable_converts_value_and_sets_field_if_value_is_not_null() {
- Fake.Builder builder = Fake.newBuilder();
-
- setNullable("foo", builder::setLabel, StringUtils::upperCase);
- assertThat(builder.getLabel()).isEqualTo("FOO");
-
- builder.clear();
- setNullable((String)null, builder::setLabel, StringUtils::upperCase);
- assertThat(builder.hasLabel()).isFalse();
-
- // do not set field if value is present but result of conversion is null
- builder.clear();
- setNullable(" ", builder::setLabel, StringUtils::trimToNull);
- assertThat(builder.hasLabel()).isFalse();
- }
}