Mob review

This commit is contained in:
René Pfeuffer
2018-06-14 08:05:29 +02:00
parent b9f1a200fa
commit 838777b403
10 changed files with 37 additions and 37 deletions

View File

@@ -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;

View File

@@ -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 ------------------------------------------------------------
/**
*

View File

@@ -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)

View File

@@ -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),

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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());

View File

@@ -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;
}

View File

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