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);
}
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);
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) {
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)
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());
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));
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();
}
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
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());
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();
}
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
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;