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 new file mode 100644 index 0000000000..6aea500c78 --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java @@ -0,0 +1,20 @@ +package sonia.scm.api.v2.resources; + +import sonia.scm.util.AssertUtil; + +import java.time.Instant; +import java.util.Optional; + +class BaseMapper { + + Instant mapTime(Long epochMilli) { + AssertUtil.assertIsNotNull(epochMilli); + return Instant.ofEpochMilli(epochMilli); + } + + Optional mapOptionalTime(Long epochMilli) { + return Optional + .ofNullable(epochMilli) + .map(Instant::ofEpochMilli); + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupToGroupDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupToGroupDtoMapper.java index c28f937993..0472b8dcf5 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupToGroupDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupToGroupDtoMapper.java @@ -4,23 +4,19 @@ import de.otto.edison.hal.Links; import org.mapstruct.AfterMapping; import org.mapstruct.Context; import org.mapstruct.Mapper; -import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; import sonia.scm.group.Group; import sonia.scm.group.GroupPermissions; -import sonia.scm.util.AssertUtil; import javax.ws.rs.core.UriInfo; -import java.time.Instant; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; import static de.otto.edison.hal.Link.link; import static de.otto.edison.hal.Links.linkingTo; @Mapper -public abstract class GroupToGroupDtoMapper { +public abstract class GroupToGroupDtoMapper extends BaseMapper { public abstract GroupDto map(Group group, @Context UriInfo uriInfo); @@ -55,17 +51,4 @@ public abstract class GroupToGroupDtoMapper { memberDto.add(linksBuilder.build()); return memberDto; } - - @Mapping(target = "creationDate") - Instant mapTime(Long epochMilli) { - AssertUtil.assertIsNotNull(epochMilli); - return Instant.ofEpochMilli(epochMilli); - } - - @Mapping(target = "lastModified") - Optional mapOptionalTime(Long epochMilli) { - return Optional - .ofNullable(epochMilli) - .map(Instant::ofEpochMilli); - } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserToUserDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserToUserDtoMapper.java index b0f9b41ea9..7a416bc675 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserToUserDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserToUserDtoMapper.java @@ -8,17 +8,14 @@ import org.mapstruct.MappingTarget; import sonia.scm.api.rest.resources.UserResource; import sonia.scm.user.User; import sonia.scm.user.UserPermissions; -import sonia.scm.util.AssertUtil; import javax.ws.rs.core.UriInfo; -import java.time.Instant; -import java.util.Optional; import static de.otto.edison.hal.Link.link; import static de.otto.edison.hal.Links.linkingTo; @Mapper -public abstract class UserToUserDtoMapper { +public abstract class UserToUserDtoMapper extends BaseMapper { public abstract UserDto map(User user, @Context UriInfo uriInfo); @@ -44,15 +41,4 @@ public abstract class UserToUserDtoMapper { target.add( linksBuilder.build()); } - - Instant mapTime(Long epochMilli) { - AssertUtil.assertIsNotNull(epochMilli); - return Instant.ofEpochMilli(epochMilli); - } - - Optional mapOptionalTime(Long epochMilli) { - return Optional - .ofNullable(epochMilli) - .map(Instant::ofEpochMilli); - } }