diff options
author | Michal Duda <michal.duda@sonarsource.com> | 2018-12-17 11:54:38 +0100 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2019-01-18 20:21:02 +0100 |
commit | 829f3ccf0c5418d1974efe917c4e5475df4e4141 (patch) | |
tree | 8c9ced0c03084cf797eae88bc5893a864e043dff | |
parent | b5cc29188339a2bf7187de25be38853553a81482 (diff) | |
download | sonarqube-829f3ccf0c5418d1974efe917c4e5475df4e4141.tar.gz sonarqube-829f3ccf0c5418d1974efe917c4e5475df4e4141.zip |
replace Protobuf.setNullable with Optional.ofNullable
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(); - } } |