mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 00:15:44 +01:00
Move UriInfo to mappers
This commit is contained in:
@@ -33,7 +33,7 @@ public class GroupCollectionToDtoMapper {
|
||||
|
||||
public GroupCollectionDto map(int pageNumber, int pageSize, PageResult<Group> pageResult) {
|
||||
NumberedPaging paging = zeroBasedNumberedPaging(pageNumber, pageSize, pageResult.hasMore());
|
||||
List<GroupDto> dtos = pageResult.getEntities().stream().map(user -> groupToDtoMapper.map(user, uriInfoStore.get())).collect(Collectors.toList());
|
||||
List<GroupDto> dtos = pageResult.getEntities().stream().map(user -> groupToDtoMapper.map(user)).collect(Collectors.toList());
|
||||
|
||||
GroupCollectionDto groupCollectionDto = new GroupCollectionDto(
|
||||
createLinks(paging),
|
||||
|
||||
@@ -42,7 +42,7 @@ public class GroupSubResource extends AbstractManagerResource<Group, GroupExcept
|
||||
if (group == null) {
|
||||
return Response.status(Response.Status.NOT_FOUND).build();
|
||||
}
|
||||
GroupDto groupDto = groupToGroupDtoMapper.map(group, uriInfo);
|
||||
GroupDto groupDto = groupToGroupDtoMapper.map(group);
|
||||
return Response.ok(groupDto).build();
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import de.otto.edison.hal.Links;
|
||||
import org.mapstruct.AfterMapping;
|
||||
import org.mapstruct.Context;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import sonia.scm.group.Group;
|
||||
import sonia.scm.group.GroupPermissions;
|
||||
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -20,28 +19,31 @@ import static sonia.scm.api.v2.resources.ResourceLinks.user;
|
||||
@Mapper
|
||||
public abstract class GroupToGroupDtoMapper extends BaseMapper {
|
||||
|
||||
public abstract GroupDto map(Group group, @Context UriInfo uriInfo);
|
||||
@Inject
|
||||
private UriInfoStore uriInfoStore;
|
||||
|
||||
public abstract GroupDto map(Group group);
|
||||
|
||||
@AfterMapping
|
||||
void appendLinks(Group group, @MappingTarget GroupDto target, @Context UriInfo uriInfo) {
|
||||
Links.Builder linksBuilder = linkingTo().self(group(uriInfo).self(target.getName()));
|
||||
void appendLinks(Group group, @MappingTarget GroupDto target) {
|
||||
Links.Builder linksBuilder = linkingTo().self(group(uriInfoStore.get()).self(target.getName()));
|
||||
if (GroupPermissions.delete(group).isPermitted()) {
|
||||
linksBuilder.single(link("delete", group(uriInfo).delete(target.getName())));
|
||||
linksBuilder.single(link("delete", group(uriInfoStore.get()).delete(target.getName())));
|
||||
}
|
||||
if (GroupPermissions.modify(group).isPermitted()) {
|
||||
linksBuilder.single(link("update", group(uriInfo).update(target.getName())));
|
||||
linksBuilder.single(link("update", group(uriInfoStore.get()).update(target.getName())));
|
||||
}
|
||||
target.add(linksBuilder.build());
|
||||
}
|
||||
|
||||
@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());
|
||||
void mapMembers(Group group, @MappingTarget GroupDto target) {
|
||||
List<MemberDto> memberDtos = group.getMembers().stream().map(name -> this.createMember(name)).collect(Collectors.toList());
|
||||
target.withEmbedded("members", memberDtos);
|
||||
}
|
||||
|
||||
private MemberDto createMember(String name, UriInfo uriInfo) {
|
||||
Links.Builder linksBuilder = linkingTo().self(user(uriInfo).self(name));
|
||||
private MemberDto createMember(String name) {
|
||||
Links.Builder linksBuilder = linkingTo().self(user(uriInfoStore.get()).self(name));
|
||||
MemberDto memberDto = new MemberDto(name);
|
||||
memberDto.add(linksBuilder.build());
|
||||
return memberDto;
|
||||
|
||||
@@ -34,12 +34,14 @@ public class UserCollectionResource extends AbstractManagerResource<User, UserEx
|
||||
public static final int DEFAULT_PAGE_SIZE = 10;
|
||||
private final UserDtoToUserMapper dtoToUserMapper;
|
||||
private final UserToUserDtoMapper userToDtoMapper;
|
||||
private final UserCollectionToDtoMapper userCollectionToDtoMapper;
|
||||
|
||||
@Inject
|
||||
public UserCollectionResource(UserManager manager, UserDtoToUserMapper dtoToUserMapper, UserToUserDtoMapper userToDtoMapper) {
|
||||
public UserCollectionResource(UserManager manager, UserDtoToUserMapper dtoToUserMapper, UserToUserDtoMapper userToDtoMapper, UserCollectionToDtoMapper userCollectionToDtoMapper) {
|
||||
super(manager);
|
||||
this.dtoToUserMapper = dtoToUserMapper;
|
||||
this.userToDtoMapper = userToDtoMapper;
|
||||
this.userCollectionToDtoMapper = userCollectionToDtoMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -61,7 +63,7 @@ public class UserCollectionResource extends AbstractManagerResource<User, UserEx
|
||||
@ResponseCode(code = 403, condition = "forbidden, the current user has no admin privileges"),
|
||||
@ResponseCode(code = 500, condition = "internal server error")
|
||||
})
|
||||
public Response getAll(@Context Request request, @Context UriInfo uriInfo,
|
||||
public Response getAll(@Context Request request,
|
||||
@DefaultValue("0") @QueryParam("page") int page,
|
||||
@DefaultValue("" + DEFAULT_PAGE_SIZE) @QueryParam("pageSize") int pageSize,
|
||||
@QueryParam("sortby") String sortby,
|
||||
@@ -69,7 +71,7 @@ public class UserCollectionResource extends AbstractManagerResource<User, UserEx
|
||||
@QueryParam("desc") boolean desc) {
|
||||
PageResult<User> pageResult = fetchPage(sortby, desc, page, pageSize);
|
||||
|
||||
return Response.ok(new UserCollectionToDtoMapper(userToDtoMapper).map(uriInfo, page, pageSize, pageResult)).build();
|
||||
return Response.ok(userCollectionToDtoMapper.map(page, pageSize, pageResult)).build();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,19 +23,27 @@ import static sonia.scm.api.v2.resources.ResourceLinks.userCollection;
|
||||
|
||||
public class UserCollectionToDtoMapper {
|
||||
|
||||
private final UserToUserDtoMapper userToDtoMapper;
|
||||
|
||||
@Inject
|
||||
public UserCollectionToDtoMapper(UserToUserDtoMapper userToDtoMapper) {
|
||||
private UserToUserDtoMapper userToDtoMapper;
|
||||
@Inject
|
||||
private UriInfoStore uriInfoStore;
|
||||
|
||||
public UserCollectionToDtoMapper(UserToUserDtoMapper userToDtoMapper, UriInfoStore uriInfoStore) {
|
||||
this.userToDtoMapper = userToDtoMapper;
|
||||
this.uriInfoStore = uriInfoStore;
|
||||
}
|
||||
|
||||
public UserCollectionDto map(UriInfo uriInfo, int pageNumber, int pageSize, PageResult<User> pageResult) {
|
||||
public UserCollectionToDtoMapper() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public UserCollectionDto map(int pageNumber, int pageSize, PageResult<User> pageResult) {
|
||||
NumberedPaging paging = zeroBasedNumberedPaging(pageNumber, pageSize, pageResult.hasMore());
|
||||
List<UserDto> dtos = pageResult.getEntities().stream().map(user -> userToDtoMapper.map(user, uriInfo)).collect(Collectors.toList());
|
||||
List<UserDto> dtos = pageResult.getEntities().stream().map(userToDtoMapper::map).collect(Collectors.toList());
|
||||
|
||||
UserCollectionDto userCollectionDto = new UserCollectionDto(
|
||||
createLinks(uriInfo, paging),
|
||||
createLinks(uriInfoStore.get(), paging),
|
||||
embedDtos(dtos)
|
||||
);
|
||||
userCollectionDto.setPage(pageNumber);
|
||||
|
||||
@@ -52,7 +52,7 @@ public class UserSubResource extends AbstractManagerResource<User, UserException
|
||||
if (SecurityUtils.getSubject().hasRole(Role.ADMIN))
|
||||
{
|
||||
User user = manager.get(id);
|
||||
UserDto userDto = userToDtoMapper.map(user, uriInfo);
|
||||
UserDto userDto = userToDtoMapper.map(user);
|
||||
return Response.ok(userDto).build();
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import de.otto.edison.hal.Links;
|
||||
import org.mapstruct.AfterMapping;
|
||||
import org.mapstruct.Context;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import sonia.scm.api.rest.resources.UserResource;
|
||||
import sonia.scm.user.User;
|
||||
import sonia.scm.user.UserPermissions;
|
||||
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import static de.otto.edison.hal.Link.link;
|
||||
import static de.otto.edison.hal.Links.linkingTo;
|
||||
import static sonia.scm.api.v2.resources.ResourceLinks.user;
|
||||
@@ -18,7 +16,10 @@ import static sonia.scm.api.v2.resources.ResourceLinks.user;
|
||||
@Mapper
|
||||
public abstract class UserToUserDtoMapper extends BaseMapper {
|
||||
|
||||
public abstract UserDto map(User user, @Context UriInfo uriInfo);
|
||||
@Inject
|
||||
private UriInfoStore uriInfoStore;
|
||||
|
||||
public abstract UserDto map(User user);
|
||||
|
||||
@AfterMapping
|
||||
void removePassword(@MappingTarget UserDto target) {
|
||||
@@ -26,13 +27,13 @@ public abstract class UserToUserDtoMapper extends BaseMapper {
|
||||
}
|
||||
|
||||
@AfterMapping
|
||||
void appendLinks(User user, @MappingTarget UserDto target, @Context UriInfo uriInfo) {
|
||||
Links.Builder linksBuilder = linkingTo().self(user(uriInfo).self(target.getName()));
|
||||
void appendLinks(User user, @MappingTarget UserDto target) {
|
||||
Links.Builder linksBuilder = linkingTo().self(user(uriInfoStore.get()).self(target.getName()));
|
||||
if (UserPermissions.delete(user).isPermitted()) {
|
||||
linksBuilder.single(link("delete", user(uriInfo).delete(target.getName())));
|
||||
linksBuilder.single(link("delete", user(uriInfoStore.get()).delete(target.getName())));
|
||||
}
|
||||
if (UserPermissions.modify(user).isPermitted()) {
|
||||
linksBuilder.single(link("update", user(uriInfo).update(target.getName())));
|
||||
linksBuilder.single(link("update", user(uriInfoStore.get()).update(target.getName())));
|
||||
}
|
||||
target.add(
|
||||
linksBuilder.build());
|
||||
|
||||
Reference in New Issue
Block a user