From fd12464af4336fd670f4b275a2d6d4300c1be8e5 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Wed, 25 Mar 2020 09:54:12 +0100 Subject: [PATCH] add RepositoryToHalMapper as interface to map a repositoryDto outside of webapp --- .../java/sonia/scm/web/api/RepositoryToHalMapper.java | 8 ++++++++ scm-ui/ui-components/src/layout/Page.tsx | 11 ++++++++--- .../java/sonia/scm/api/v2/resources/MapperModule.java | 3 +++ .../v2/resources/RepositoryToRepositoryDtoMapper.java | 6 +++++- 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 scm-core/src/main/java/sonia/scm/web/api/RepositoryToHalMapper.java diff --git a/scm-core/src/main/java/sonia/scm/web/api/RepositoryToHalMapper.java b/scm-core/src/main/java/sonia/scm/web/api/RepositoryToHalMapper.java new file mode 100644 index 0000000000..a5ca7339d8 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/web/api/RepositoryToHalMapper.java @@ -0,0 +1,8 @@ +package sonia.scm.web.api; + +import de.otto.edison.hal.HalRepresentation; +import sonia.scm.repository.Repository; + +public interface RepositoryToHalMapper { + HalRepresentation map(Repository repository); +} diff --git a/scm-ui/ui-components/src/layout/Page.tsx b/scm-ui/ui-components/src/layout/Page.tsx index 3746ee7fbc..44880b1c50 100644 --- a/scm-ui/ui-components/src/layout/Page.tsx +++ b/scm-ui/ui-components/src/layout/Page.tsx @@ -32,6 +32,11 @@ const MarginLeft = styled.div` margin-left: 0.5rem; `; +const FlexContainer = styled.div` + display: flex; + flex-direction: row; +`; + export default class Page extends React.Component { componentDidUpdate() { const { title } = this.props; @@ -86,9 +91,9 @@ export default class Page extends React.Component { <>
-
- <MarginLeft>{afterTitle}</MarginLeft> - </div> + <FlexContainer> + <Title title={title} /> {afterTitle && <MarginLeft>{afterTitle}</MarginLeft>} + </FlexContainer> <Subtitle subtitle={subtitle} /> </div> {pageActions} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MapperModule.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MapperModule.java index c7d88e7c0a..ab45d8ce28 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MapperModule.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MapperModule.java @@ -3,6 +3,7 @@ package sonia.scm.api.v2.resources; import com.google.inject.AbstractModule; import com.google.inject.servlet.ServletScopes; import org.mapstruct.factory.Mappers; +import sonia.scm.web.api.RepositoryToHalMapper; public class MapperModule extends AbstractModule { @Override @@ -46,6 +47,8 @@ public class MapperModule extends AbstractModule { bind(ScmViolationExceptionToErrorDtoMapper.class).to(Mappers.getMapper(ScmViolationExceptionToErrorDtoMapper.class).getClass()); bind(ExceptionWithContextToErrorDtoMapper.class).to(Mappers.getMapper(ExceptionWithContextToErrorDtoMapper.class).getClass()); + bind(RepositoryToHalMapper.class).to(Mappers.getMapper(RepositoryToRepositoryDtoMapper.class).getClass()); + // no mapstruct required bind(MeDtoFactory.class); bind(UIPluginDtoMapper.class); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java index 9e91269b15..c650102969 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryToRepositoryDtoMapper.java @@ -14,6 +14,7 @@ import sonia.scm.repository.api.Command; import sonia.scm.repository.api.RepositoryService; import sonia.scm.repository.api.RepositoryServiceFactory; import sonia.scm.repository.api.ScmProtocol; +import sonia.scm.web.api.RepositoryToHalMapper; import java.util.List; @@ -25,7 +26,7 @@ import static java.util.stream.Collectors.toList; // Mapstruct does not support parameterized (i.e. non-default) constructors. Thus, we need to use field injection. @SuppressWarnings("squid:S3306") @Mapper -public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper<Repository, RepositoryDto> { +public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper<Repository, RepositoryDto> implements RepositoryToHalMapper { @Inject private ResourceLinks resourceLinks; @@ -34,6 +35,9 @@ public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper<Reposit abstract HealthCheckFailureDto toDto(HealthCheckFailure failure); + @Override + public abstract RepositoryDto map(Repository modelObject); + @ObjectFactory RepositoryDto createDto(Repository repository) { Links.Builder linksBuilder = linkingTo().self(resourceLinks.repository().self(repository.getNamespace(), repository.getName()));