Model members as embedded partial users

This commit is contained in:
René Pfeuffer
2018-06-13 08:56:49 +02:00
parent 781b30ed58
commit b94e83b334
3 changed files with 7 additions and 7 deletions

View File

@@ -12,7 +12,7 @@ import sonia.scm.util.AssertUtil;
import javax.ws.rs.core.UriInfo;
import java.time.Instant;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -41,8 +41,10 @@ public abstract class Group2GroupDtoMapper {
target.add(linksBuilder.build());
}
Collection<MemberDto> mapMembers(Collection<String> members, @Context UriInfo uriInfo) {
return members.stream().map(name -> this.createMember(name, uriInfo)).collect(Collectors.toList());
@AfterMapping
void mapMembers(Group group, @MappingTarget GroupDto target, @Context UriInfo uriInfo) {
List<MemberDto> memberDtos = group.getMembers().stream().map(name -> this.createMember(name, uriInfo)).collect(Collectors.toList());
target.withEmbedded("members", memberDtos);
}
private MemberDto createMember(String name, UriInfo uriInfo) {

View File

@@ -7,7 +7,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
@@ -20,7 +19,6 @@ public class GroupDto extends HalRepresentation {
private Optional<Instant> lastModified;
private String name;
private String type;
private Collection<MemberDto> members;
@Override
protected HalRepresentation add(Links links) {

View File

@@ -79,8 +79,8 @@ public class Group2GroupDtoMapperTest {
GroupDto groupDto = mapper.groupToGroupDto(group, uriInfo);
assertEquals(10, groupDto.getMembers().size());
MemberDto actualMember = groupDto.getMembers().iterator().next();
assertEquals(10, groupDto.getEmbedded().getItemsBy("members").size());
MemberDto actualMember = (MemberDto) groupDto.getEmbedded().getItemsBy("members").iterator().next();
assertEquals("user0", actualMember.getName());
assertEquals("http://example.com/base/v2/users/user0", actualMember.getLinks().getLinkBy("self").get().getHref());
}