From ad60bae74e059fc349b010df167e908885699b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Tue, 3 Jul 2018 09:38:56 +0200 Subject: [PATCH] Do not use Optional for modification date First, Optionals should not be used for fields, second this does not provide any benefits --- .../java/sonia/scm/api/v2/resources/BaseMapper.java | 12 +----------- .../java/sonia/scm/api/v2/resources/GroupDto.java | 5 ++--- .../java/sonia/scm/api/v2/resources/UserDto.java | 5 ++--- .../api/v2/resources/UserDtoToUserMapperTest.java | 3 +-- .../api/v2/resources/UserToUserDtoMapperTest.java | 2 +- 5 files changed, 7 insertions(+), 20 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java index f92d0d6e99..bae1a89308 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java @@ -3,25 +3,15 @@ package sonia.scm.api.v2.resources; import de.otto.edison.hal.HalRepresentation; import org.mapstruct.Mapping; import sonia.scm.ModelObject; -import sonia.scm.util.AssertUtil; import java.time.Instant; -import java.util.Optional; abstract class BaseMapper { - @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes public abstract D map(T user); Instant mapTime(Long epochMilli) { - AssertUtil.assertIsNotNull(epochMilli); - return Instant.ofEpochMilli(epochMilli); - } - - Optional mapOptionalTime(Long epochMilli) { - return Optional - .ofNullable(epochMilli) - .map(Instant::ofEpochMilli); + return epochMilli == null? null: Instant.ofEpochMilli(epochMilli); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupDto.java index 081ae817ae..3944be81b8 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupDto.java @@ -10,15 +10,14 @@ import lombok.Setter; import java.time.Instant; import java.util.List; import java.util.Map; -import java.util.Optional; @Getter @Setter @NoArgsConstructor public class GroupDto extends HalRepresentation { private Instant creationDate; private String description; - @JsonInclude(JsonInclude.Include.NON_EMPTY) - private Optional lastModified; + @JsonInclude(JsonInclude.Include.NON_NULL) + private Instant lastModified; private String name; private String type; private Map properties; diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserDto.java index d87f4a74f1..cf7bf90504 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserDto.java @@ -9,7 +9,6 @@ import lombok.Setter; import java.time.Instant; import java.util.Map; -import java.util.Optional; @NoArgsConstructor @Getter @Setter public class UserDto extends HalRepresentation { @@ -17,8 +16,8 @@ public class UserDto extends HalRepresentation { private boolean admin; private Instant creationDate; private String displayName; - @JsonInclude(JsonInclude.Include.NON_EMPTY) - private Optional lastModified; + @JsonInclude(JsonInclude.Include.NON_NULL) + private Instant lastModified; private String mail; private String name; private String password; diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserDtoToUserMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserDtoToUserMapperTest.java index e76cee1ef7..f97fd91c3b 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserDtoToUserMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserDtoToUserMapperTest.java @@ -8,7 +8,6 @@ import org.mockito.Mock; import sonia.scm.user.User; import java.time.Instant; -import java.util.Optional; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; @@ -47,7 +46,7 @@ public class UserDtoToUserMapperTest { UserDto dto = new UserDto(); dto.setName("abc"); dto.setCreationDate(Instant.now()); - dto.setLastModified(Optional.empty()); + dto.setLastModified(null); return dto; } } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserToUserDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserToUserDtoMapperTest.java index 684ccdb5f6..ae3168cc07 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserToUserDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserToUserDtoMapperTest.java @@ -122,6 +122,6 @@ public class UserToUserDtoMapperTest { UserDto userDto = mapper.map(user); assertEquals(expectedCreationDate, userDto.getCreationDate()); - assertEquals(expectedModificationDate, userDto.getLastModified().get()); + assertEquals(expectedModificationDate, userDto.getLastModified()); } }