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 javax.ws.rs.core.UriInfo;
import java.time.Instant; import java.time.Instant;
import java.util.Collection; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -41,8 +41,10 @@ public abstract class Group2GroupDtoMapper {
target.add(linksBuilder.build()); target.add(linksBuilder.build());
} }
Collection<MemberDto> mapMembers(Collection<String> members, @Context UriInfo uriInfo) { @AfterMapping
return members.stream().map(name -> this.createMember(name, uriInfo)).collect(Collectors.toList()); 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) { private MemberDto createMember(String name, UriInfo uriInfo) {

View File

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

View File

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