From 45359742caf70566eacd3f617d90c850c33f2d74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 14 Sep 2018 15:00:09 +0200 Subject: [PATCH] Introduce interface to be used by dto mappers with Instant fields --- .../main/java/sonia/scm/api/v2/resources/BaseMapper.java | 8 +------- .../scm/api/v2/resources/InstantAttributeMapper.java | 9 +++++++++ .../api/v2/resources/ChangesetToChangesetDtoMapper.java | 2 +- .../scm/api/v2/resources/ChangesetToParentDtoMapper.java | 2 +- .../v2/resources/FileObjectToFileObjectDtoMapper.java | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) create mode 100644 scm-core/src/main/java/sonia/scm/api/v2/resources/InstantAttributeMapper.java diff --git a/scm-core/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java b/scm-core/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java index e4cf8ecb5d..d7f299d989 100644 --- a/scm-core/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java +++ b/scm-core/src/main/java/sonia/scm/api/v2/resources/BaseMapper.java @@ -3,14 +3,8 @@ package sonia.scm.api.v2.resources; import de.otto.edison.hal.HalRepresentation; import org.mapstruct.Mapping; -import java.time.Instant; - -public abstract class BaseMapper { +public abstract class BaseMapper implements InstantAttributeMapper { @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes public abstract D map(T modelObject); - - protected Instant mapTime(Long epochMilli) { - return epochMilli == null? null: Instant.ofEpochMilli(epochMilli); - } } diff --git a/scm-core/src/main/java/sonia/scm/api/v2/resources/InstantAttributeMapper.java b/scm-core/src/main/java/sonia/scm/api/v2/resources/InstantAttributeMapper.java new file mode 100644 index 0000000000..468bdfc137 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/api/v2/resources/InstantAttributeMapper.java @@ -0,0 +1,9 @@ +package sonia.scm.api.v2.resources; + +import java.time.Instant; + +public interface InstantAttributeMapper { + default Instant mapTime(Long epochMilli) { + return epochMilli == null? null: Instant.ofEpochMilli(epochMilli); + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetToChangesetDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetToChangesetDtoMapper.java index aa71e6bced..a189dcec97 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetToChangesetDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetToChangesetDtoMapper.java @@ -23,7 +23,7 @@ import static de.otto.edison.hal.Link.link; import static de.otto.edison.hal.Links.linkingTo; @Mapper -public abstract class ChangesetToChangesetDtoMapper extends BaseMapper { +public abstract class ChangesetToChangesetDtoMapper implements InstantAttributeMapper { @Inject private RepositoryServiceFactory serviceFactory; diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetToParentDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetToParentDtoMapper.java index 611f5e6cbb..a644058881 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetToParentDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangesetToParentDtoMapper.java @@ -16,7 +16,7 @@ import static de.otto.edison.hal.Link.link; import static de.otto.edison.hal.Links.linkingTo; @Mapper -public abstract class ChangesetToParentDtoMapper extends BaseMapper { +public abstract class ChangesetToParentDtoMapper { @Inject private ResourceLinks resourceLinks; diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/FileObjectToFileObjectDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/FileObjectToFileObjectDtoMapper.java index 01085958f8..97c90ace4f 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/FileObjectToFileObjectDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/FileObjectToFileObjectDtoMapper.java @@ -14,7 +14,7 @@ import javax.inject.Inject; import static de.otto.edison.hal.Link.link; @Mapper -public abstract class FileObjectToFileObjectDtoMapper extends BaseMapper { +public abstract class FileObjectToFileObjectDtoMapper implements InstantAttributeMapper { @Inject private ResourceLinks resourceLinks;