From db8422635834236dd661fefa5014b59c92ce6651 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Fri, 20 Dec 2019 14:54:19 +0100 Subject: [PATCH] SONAR-12718 return author and assignee as login --- .../sonar/server/hotspot/ws/ShowAction.java | 23 +++++----------- .../server/hotspot/ws/ShowActionTest.java | 27 +++++++------------ sonar-ws/src/main/protobuf/ws-hotspots.proto | 4 +-- 3 files changed, 19 insertions(+), 35 deletions(-) diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/ShowAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/ShowAction.java index 1ff2504d105..68ca028099e 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/ShowAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/ShowAction.java @@ -109,14 +109,12 @@ public class ShowAction implements HotspotsWsAction { RuleDefinitionDto rule = loadRule(dbSession, hotspot); ShowWsResponse.Builder responseBuilder = ShowWsResponse.newBuilder(); - Common.User.Builder userBuilder = Common.User.newBuilder(); - formatHotspot(responseBuilder, hotspot); - formatHotspotAuthorAndAssignee(responseBuilder, userBuilder, users, hotspot); + formatHotspot(responseBuilder, hotspot, users); formatComponents(components, responseBuilder); formatRule(responseBuilder, rule); formatTextRange(responseBuilder, hotspot); FormattingContext formattingContext = formatChangeLogAndComments(dbSession, hotspot, users, components, responseBuilder); - formatUsers(responseBuilder, userBuilder, users, formattingContext); + formatUsers(responseBuilder, users, formattingContext); writeProtobuf(responseBuilder.build(), request, response); } @@ -137,7 +135,7 @@ public class ShowAction implements HotspotsWsAction { return new Users(assignee, author); } - private void formatHotspot(ShowWsResponse.Builder builder, IssueDto hotspot) { + private void formatHotspot(ShowWsResponse.Builder builder, IssueDto hotspot, Users users) { builder.setKey(hotspot.getKey()); ofNullable(hotspot.getStatus()).ifPresent(builder::setStatus); ofNullable(hotspot.getResolution()).ifPresent(builder::setResolution); @@ -145,16 +143,8 @@ public class ShowAction implements HotspotsWsAction { builder.setMessage(nullToEmpty(hotspot.getMessage())); builder.setCreationDate(formatDateTime(hotspot.getIssueCreationDate())); builder.setUpdateDate(formatDateTime(hotspot.getIssueUpdateDate())); - } - - private void formatHotspotAuthorAndAssignee(ShowWsResponse.Builder responseBuilder, - Common.User.Builder userBuilder, Users users, IssueDto hotspot) { - users.getAssignee().map(t -> userFormatter.formatUser(userBuilder, t)).ifPresent(responseBuilder::setAssignee); - - Common.User author = users.getAuthor() - .map(t -> userFormatter.formatUser(userBuilder, t)) - .orElseGet(() -> userBuilder.clear().setLogin(nullToEmpty(hotspot.getAuthorLogin())).build()); - responseBuilder.setAuthor(author); + users.getAssignee().map(UserDto::getLogin).ifPresent(builder::setAssignee); + Optional.ofNullable(hotspot.getAuthorLogin()).ifPresent(builder::setAuthor); } private void formatComponents(Components components, ShowWsResponse.Builder responseBuilder) { @@ -199,7 +189,8 @@ public class ShowAction implements HotspotsWsAction { return formattingContext; } - private void formatUsers(ShowWsResponse.Builder responseBuilder, Common.User.Builder userBuilder, Users users, FormattingContext formattingContext) { + private void formatUsers(ShowWsResponse.Builder responseBuilder, Users users, FormattingContext formattingContext) { + Common.User.Builder userBuilder = Common.User.newBuilder(); Stream.concat( Stream.of(users.getAssignee(), users.getAuthor()) .filter(Optional::isPresent) diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/ShowActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/ShowActionTest.java index 2a2f67a2263..1e73526a84d 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/ShowActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/ShowActionTest.java @@ -331,7 +331,9 @@ public class ShowActionTest { Hotspots.ShowWsResponse response = newRequest(hotspot) .executeProtobuf(Hotspots.ShowWsResponse.class); - User wsAssignee = response.getAssignee(); + assertThat(response.getAssignee()).isEqualTo(assignee.getLogin()); + assertThat(response.getUsersList()).hasSize(1); + User wsAssignee = response.getUsersList().iterator().next(); assertThat(wsAssignee.getLogin()).isEqualTo(assignee.getLogin()); assertThat(wsAssignee.getName()).isEqualTo(assignee.getName()); assertThat(wsAssignee.getActive()).isEqualTo(assignee.isActive()); @@ -352,11 +354,12 @@ public class ShowActionTest { Hotspots.ShowWsResponse response = newRequest(hotspot) .executeProtobuf(Hotspots.ShowWsResponse.class); - assertThat(response.getAssignee().hasAvatar()).isFalse(); + assertThat(response.getUsersList()).hasSize(1); + assertThat(response.getUsersList().iterator().next().hasAvatar()).isFalse(); } @Test - public void returns_inactive_when_author_is_inactive() { + public void returns_inactive_when_assignee_is_inactive() { ComponentDto project = dbTester.components().insertPublicProject(); userSessionRule.registerComponents(project); ComponentDto file = dbTester.components().insertComponent(newFileDto(project)); @@ -369,7 +372,6 @@ public class ShowActionTest { Hotspots.ShowWsResponse response = newRequest(hotspot) .executeProtobuf(Hotspots.ShowWsResponse.class); - assertThat(response.getAssignee().getActive()).isFalse(); assertThat(response.getUsersList()).hasSize(1); assertThat(response.getUsersList().iterator().next().getActive()).isFalse(); } @@ -388,12 +390,8 @@ public class ShowActionTest { Hotspots.ShowWsResponse response = newRequest(hotspot) .executeProtobuf(Hotspots.ShowWsResponse.class); - User wsAuthor = response.getAuthor(); - assertThat(wsAuthor.getLogin()).isEqualTo(authorLogin); - assertThat(wsAuthor.hasName()).isFalse(); - assertThat(wsAuthor.hasActive()).isFalse(); - assertThat(wsAuthor.hasAvatar()).isFalse(); assertThat(response.getUsersList()).isEmpty(); + assertThat(response.getAuthor()).isEqualTo(authorLogin); } @Test @@ -410,12 +408,7 @@ public class ShowActionTest { Hotspots.ShowWsResponse response = newRequest(hotspot) .executeProtobuf(Hotspots.ShowWsResponse.class); - User wsAuthor = response.getAuthor(); - assertThat(wsAuthor.getLogin()).isEqualTo(author.getLogin()); - assertThat(wsAuthor.getName()).isEqualTo(author.getName()); - assertThat(wsAuthor.getActive()).isEqualTo(author.isActive()); - assertThat(wsAuthor.getAvatar()).isEqualTo(avatarResolver.create(author)); - assertThat(response.getUsersList()).hasSize(1); + assertThat(response.getAuthor()).isEqualTo(author.getLogin()); User wsAuthorFromList = response.getUsersList().iterator().next(); assertThat(wsAuthorFromList.getLogin()).isEqualTo(author.getLogin()); assertThat(wsAuthorFromList.getName()).isEqualTo(author.getName()); @@ -437,7 +430,6 @@ public class ShowActionTest { Hotspots.ShowWsResponse response = newRequest(hotspot) .executeProtobuf(Hotspots.ShowWsResponse.class); - assertThat(response.getAuthor().hasAvatar()).isFalse(); assertThat(response.getUsersList()).hasSize(1); assertThat(response.getUsersList().iterator().next().hasAvatar()).isFalse(); } @@ -456,7 +448,8 @@ public class ShowActionTest { Hotspots.ShowWsResponse response = newRequest(hotspot) .executeProtobuf(Hotspots.ShowWsResponse.class); - assertThat(response.getAuthor().getActive()).isFalse(); + assertThat(response.getUsersList()).hasSize(1); + assertThat(response.getUsersList().iterator().next().getActive()).isFalse(); } @DataProvider diff --git a/sonar-ws/src/main/protobuf/ws-hotspots.proto b/sonar-ws/src/main/protobuf/ws-hotspots.proto index 66ea284f4a9..2a4c53025e1 100644 --- a/sonar-ws/src/main/protobuf/ws-hotspots.proto +++ b/sonar-ws/src/main/protobuf/ws-hotspots.proto @@ -59,8 +59,8 @@ message ShowWsResponse { optional string resolution = 6; optional int32 line = 7; optional string message = 8; - optional sonarqube.ws.commons.User assignee = 9; - optional sonarqube.ws.commons.User author = 10; + optional string assignee = 9; + optional string author = 10; optional string creationDate = 11; optional string updateDate = 12; optional sonarqube.ws.commons.TextRange textRange = 13; -- 2.39.5