mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-03-14 08:10:19 +01:00
Mob review
This commit is contained in:
@@ -25,7 +25,7 @@ public class PageResult<T extends ModelObject> {
|
||||
}
|
||||
|
||||
/**
|
||||
* If this is <code>true</code>, there are more pages (that is, mor entities).
|
||||
* If this is <code>true</code>, there are more pages (that is, more entities).
|
||||
*/
|
||||
public boolean hasMore() {
|
||||
return hasMore;
|
||||
|
||||
@@ -37,10 +37,8 @@ package sonia.scm.api.rest.resources;
|
||||
|
||||
import org.apache.commons.beanutils.BeanComparator;
|
||||
import org.apache.shiro.authz.AuthorizationException;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.LastModifiedAware;
|
||||
import sonia.scm.Manager;
|
||||
import sonia.scm.ModelObject;
|
||||
@@ -50,12 +48,6 @@ import sonia.scm.util.AssertUtil;
|
||||
import sonia.scm.util.HttpUtil;
|
||||
import sonia.scm.util.Util;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
|
||||
import javax.ws.rs.core.CacheControl;
|
||||
import javax.ws.rs.core.EntityTag;
|
||||
import javax.ws.rs.core.GenericEntity;
|
||||
@@ -63,6 +55,11 @@ import javax.ws.rs.core.Request;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import de.otto.edison.hal.Links;
|
||||
import org.mapstruct.*;
|
||||
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;
|
||||
@@ -17,7 +20,7 @@ import static de.otto.edison.hal.Links.linkingTo;
|
||||
@Mapper
|
||||
public abstract class User2UserDtoMapper {
|
||||
|
||||
public abstract UserDto userToUserDto(User user, @Context UriInfo uriInfo);
|
||||
public abstract UserDto map(User user, @Context UriInfo uriInfo);
|
||||
|
||||
@AfterMapping
|
||||
void removePassword(@MappingTarget UserDto target) {
|
||||
@@ -42,13 +45,11 @@ public abstract class User2UserDtoMapper {
|
||||
linksBuilder.build());
|
||||
}
|
||||
|
||||
@Mapping(target = "creationDate")
|
||||
Instant mapTime(Long epochMilli) {
|
||||
AssertUtil.assertIsNotNull(epochMilli);
|
||||
return Instant.ofEpochMilli(epochMilli);
|
||||
}
|
||||
|
||||
@Mapping(target = "lastModified")
|
||||
Optional<Instant> mapOptionalTime(Long epochMilli) {
|
||||
return Optional
|
||||
.ofNullable(epochMilli)
|
||||
|
||||
@@ -29,9 +29,9 @@ public class UserCollection2DtoMapper {
|
||||
this.userToDtoMapper = userToDtoMapper;
|
||||
}
|
||||
|
||||
public UserCollectionDto userCollectionToDto(UriInfo uriInfo, int pageNumber, int pageSize, PageResult<User> pageResult) {
|
||||
public UserCollectionDto map(UriInfo uriInfo, int pageNumber, int pageSize, PageResult<User> pageResult) {
|
||||
NumberedPaging paging = zeroBasedNumberedPaging(pageNumber, pageSize, pageResult.hasMore());
|
||||
List<UserDto> dtos = pageResult.getEntities().stream().map(user -> userToDtoMapper.userToUserDto(user, uriInfo)).collect(Collectors.toList());
|
||||
List<UserDto> dtos = pageResult.getEntities().stream().map(user -> userToDtoMapper.map(user, uriInfo)).collect(Collectors.toList());
|
||||
|
||||
UserCollectionDto userCollectionDto = new UserCollectionDto(
|
||||
createLinks(uriInfo, paging),
|
||||
|
||||
@@ -66,7 +66,7 @@ public class UserCollectionResource extends AbstractManagerResource<User, UserEx
|
||||
@QueryParam("desc") boolean desc) {
|
||||
PageResult<User> pageResult = fetchPage(sortby, desc, page, pageSize);
|
||||
|
||||
return Response.ok(new UserCollection2DtoMapper(userToDtoMapper).userCollectionToDto(uriInfo, page, pageSize, pageResult)).build();
|
||||
return Response.ok(new UserCollection2DtoMapper(userToDtoMapper).map(uriInfo, page, pageSize, pageResult)).build();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,7 +85,7 @@ public class UserCollectionResource extends AbstractManagerResource<User, UserEx
|
||||
})
|
||||
@TypeHint(TypeHint.NO_CONTENT.class)
|
||||
public Response create(@Context UriInfo uriInfo, UserDto userDto) throws IOException, UserException {
|
||||
User user = dtoToUserMapper.userDtoToUser(userDto, "");
|
||||
User user = dtoToUserMapper.map(userDto, "");
|
||||
manager.create(user);
|
||||
|
||||
LinkBuilder builder = new LinkBuilder(uriInfo, UserV2Resource.class, UserSubResource.class);
|
||||
|
||||
@@ -22,7 +22,7 @@ public abstract class UserDto2UserMapper {
|
||||
@Mapping(target = "creationDate", ignore = true),
|
||||
@Mapping(target = "lastModified", ignore = true)
|
||||
})
|
||||
public abstract User userDtoToUser(UserDto userDto, @Context String originalPassword);
|
||||
public abstract User map(UserDto userDto, @Context String originalPassword);
|
||||
|
||||
@Named("encrypt")
|
||||
String encrypt(String password, @Context String originalPassword) {
|
||||
|
||||
@@ -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.userToUserDto(user, uriInfo);
|
||||
UserDto userDto = userToDtoMapper.map(user, uriInfo);
|
||||
return Response.ok(userDto).build();
|
||||
}
|
||||
else
|
||||
@@ -73,7 +73,7 @@ public class UserSubResource extends AbstractManagerResource<User, UserException
|
||||
@PathParam("id") String name, UserDto userDto)
|
||||
{
|
||||
String originalPassword = manager.get(name).getPassword();
|
||||
User user = dtoToUserMapper.userDtoToUser(userDto, originalPassword);
|
||||
User user = dtoToUserMapper.map(userDto, originalPassword);
|
||||
return update(name, user);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ public class User2UserDtoMapperTest {
|
||||
User user = createDefaultUser();
|
||||
when(subject.isPermitted("user:modify:abc")).thenReturn(true);
|
||||
|
||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||
UserDto userDto = mapper.map(user, uriInfo);
|
||||
|
||||
assertEquals("expected self link", expectedBaseUri.resolve("abc").toString(), userDto.getLinks().getLinkBy("self").get().getHref());
|
||||
assertEquals("expected update link", expectedBaseUri.resolve("abc").toString(), userDto.getLinks().getLinkBy("update").get().getHref());
|
||||
@@ -60,7 +60,7 @@ public class User2UserDtoMapperTest {
|
||||
User user = createDefaultUser();
|
||||
when(subject.isPermitted("user:delete:abc")).thenReturn(true);
|
||||
|
||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||
UserDto userDto = mapper.map(user, uriInfo);
|
||||
|
||||
assertEquals("expected self link", expectedBaseUri.resolve("abc").toString(), userDto.getLinks().getLinkBy("self").get().getHref());
|
||||
assertEquals("expected delete link", expectedBaseUri.resolve("abc").toString(), userDto.getLinks().getLinkBy("delete").get().getHref());
|
||||
@@ -78,7 +78,7 @@ public class User2UserDtoMapperTest {
|
||||
User user = createDefaultUser();
|
||||
when(subject.hasRole("user")).thenReturn(true);
|
||||
|
||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||
UserDto userDto = mapper.map(user, uriInfo);
|
||||
|
||||
assertEquals("expected self link", expectedBaseUri.resolve("abc").toString(), userDto.getLinks().getLinkBy("self").get().getHref());
|
||||
assertFalse("expected no delete link", userDto.getLinks().getLinkBy("delete").isPresent());
|
||||
@@ -89,7 +89,7 @@ public class User2UserDtoMapperTest {
|
||||
public void shouldMapFields() {
|
||||
User user = createDefaultUser();
|
||||
|
||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||
UserDto userDto = mapper.map(user, uriInfo);
|
||||
|
||||
assertEquals("abc", userDto.getName());
|
||||
}
|
||||
@@ -99,7 +99,7 @@ public class User2UserDtoMapperTest {
|
||||
User user = createDefaultUser();
|
||||
user.setPassword("password");
|
||||
|
||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||
UserDto userDto = mapper.map(user, uriInfo);
|
||||
|
||||
assertEquals(UserResource.DUMMY_PASSWORT, userDto.getPassword());
|
||||
}
|
||||
@@ -112,7 +112,7 @@ public class User2UserDtoMapperTest {
|
||||
user.setCreationDate(expectedCreationDate.toEpochMilli());
|
||||
user.setLastModified(expectedModificationDate.toEpochMilli());
|
||||
|
||||
UserDto userDto = mapper.userToUserDto(user, uriInfo);
|
||||
UserDto userDto = mapper.map(user, uriInfo);
|
||||
|
||||
assertEquals(expectedCreationDate, userDto.getCreationDate());
|
||||
assertEquals(expectedModificationDate, userDto.getLastModified().get());
|
||||
|
||||
@@ -19,7 +19,9 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@@ -51,28 +53,28 @@ public class UserCollection2DtoMapperTest {
|
||||
@Test
|
||||
public void shouldSetPageNumber() {
|
||||
PageResult<User> pageResult = mockPageResult(true, "Hannes");
|
||||
UserCollectionDto userCollectionDto = mapper.userCollectionToDto(uriInfo, 1, 1, pageResult);
|
||||
UserCollectionDto userCollectionDto = mapper.map(uriInfo, 1, 1, pageResult);
|
||||
assertEquals(1, userCollectionDto.getPage());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHaveSelfLink() {
|
||||
PageResult<User> pageResult = mockPageResult(true, "Hannes");
|
||||
UserCollectionDto userCollectionDto = mapper.userCollectionToDto(uriInfo, 1, 1, pageResult);
|
||||
UserCollectionDto userCollectionDto = mapper.map(uriInfo, 1, 1, pageResult);
|
||||
assertTrue(userCollectionDto.getLinks().getLinkBy("self").get().getHref().startsWith(expectedBaseUri.toString()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldCreateNextPageLink_whenHasMore() {
|
||||
PageResult<User> pageResult = mockPageResult(true, "Hannes");
|
||||
UserCollectionDto userCollectionDto = mapper.userCollectionToDto(uriInfo, 1, 1, pageResult);
|
||||
UserCollectionDto userCollectionDto = mapper.map(uriInfo, 1, 1, pageResult);
|
||||
assertTrue(userCollectionDto.getLinks().getLinkBy("next").get().getHref().contains("page=2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotCreateNextPageLink_whenNoMore() {
|
||||
PageResult<User> pageResult = mockPageResult(false, "Hannes");
|
||||
UserCollectionDto userCollectionDto = mapper.userCollectionToDto(uriInfo, 1, 1, pageResult);
|
||||
UserCollectionDto userCollectionDto = mapper.map(uriInfo, 1, 1, pageResult);
|
||||
assertFalse(userCollectionDto.getLinks().stream().anyMatch(link -> link.getHref().contains("page=2")));
|
||||
}
|
||||
|
||||
@@ -81,7 +83,7 @@ public class UserCollection2DtoMapperTest {
|
||||
PageResult<User> pageResult = mockPageResult(false, "Hannes");
|
||||
when(subject.isPermitted("user:create")).thenReturn(true);
|
||||
|
||||
UserCollectionDto userCollectionDto = mapper.userCollectionToDto(uriInfo, 1, 1, pageResult);
|
||||
UserCollectionDto userCollectionDto = mapper.map(uriInfo, 1, 1, pageResult);
|
||||
|
||||
assertTrue(userCollectionDto.getLinks().getLinkBy("create").isPresent());
|
||||
}
|
||||
@@ -91,7 +93,7 @@ public class UserCollection2DtoMapperTest {
|
||||
PageResult<User> pageResult = mockPageResult(false, "Hannes");
|
||||
when(subject.isPermitted("user:create")).thenReturn(false);
|
||||
|
||||
UserCollectionDto userCollectionDto = mapper.userCollectionToDto(uriInfo, 1, 1, pageResult);
|
||||
UserCollectionDto userCollectionDto = mapper.map(uriInfo, 1, 1, pageResult);
|
||||
|
||||
assertFalse(userCollectionDto.getLinks().getLinkBy("create").isPresent());
|
||||
}
|
||||
@@ -99,7 +101,7 @@ public class UserCollection2DtoMapperTest {
|
||||
@Test
|
||||
public void shouldMapUsers() {
|
||||
PageResult<User> pageResult = mockPageResult(false, "Hannes", "Wurst");
|
||||
UserCollectionDto userCollectionDto = mapper.userCollectionToDto(uriInfo, 1, 2, pageResult);
|
||||
UserCollectionDto userCollectionDto = mapper.map(uriInfo, 1, 2, pageResult);
|
||||
List<HalRepresentation> users = userCollectionDto.getEmbedded().getItemsBy("users");
|
||||
assertEquals(2, users.size());
|
||||
assertEquals("Hannes", ((UserDto) users.get(0)).getName());
|
||||
@@ -114,7 +116,7 @@ public class UserCollection2DtoMapperTest {
|
||||
private User mockUserWithDto(String userName) {
|
||||
User user = new User();
|
||||
user.setName(userName);
|
||||
when(userToDtoMapper.userToUserDto(user, uriInfo)).thenReturn(createUserDto(user));
|
||||
when(userToDtoMapper.map(user, uriInfo)).thenReturn(createUserDto(user));
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class UserDto2UserMapperTest {
|
||||
@Test
|
||||
public void shouldMapFields() {
|
||||
UserDto dto = createDefaultDto();
|
||||
User user = mapper.userDtoToUser(dto, "original password");
|
||||
User user = mapper.map(dto, "original password");
|
||||
assertEquals("abc" , user.getName());
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class UserDto2UserMapperTest {
|
||||
|
||||
UserDto dto = createDefaultDto();
|
||||
dto.setPassword("unencrypted");
|
||||
User user = mapper.userDtoToUser(dto, "original password");
|
||||
User user = mapper.map(dto, "original password");
|
||||
assertEquals("encrypted" , user.getPassword());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user