mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-08 22:45:45 +01:00
add RepositoryToHalMapper as interface to map a repositoryDto outside of webapp
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
@@ -32,6 +32,11 @@ const MarginLeft = styled.div`
|
|||||||
margin-left: 0.5rem;
|
margin-left: 0.5rem;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const FlexContainer = styled.div`
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
`;
|
||||||
|
|
||||||
export default class Page extends React.Component<Props> {
|
export default class Page extends React.Component<Props> {
|
||||||
componentDidUpdate() {
|
componentDidUpdate() {
|
||||||
const { title } = this.props;
|
const { title } = this.props;
|
||||||
@@ -86,9 +91,9 @@ export default class Page extends React.Component<Props> {
|
|||||||
<>
|
<>
|
||||||
<div className="columns">
|
<div className="columns">
|
||||||
<div className="column">
|
<div className="column">
|
||||||
<div className="is-flex">
|
<FlexContainer>
|
||||||
<Title title={title} /> <MarginLeft>{afterTitle}</MarginLeft>
|
<Title title={title} /> {afterTitle && <MarginLeft>{afterTitle}</MarginLeft>}
|
||||||
</div>
|
</FlexContainer>
|
||||||
<Subtitle subtitle={subtitle} />
|
<Subtitle subtitle={subtitle} />
|
||||||
</div>
|
</div>
|
||||||
{pageActions}
|
{pageActions}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package sonia.scm.api.v2.resources;
|
|||||||
import com.google.inject.AbstractModule;
|
import com.google.inject.AbstractModule;
|
||||||
import com.google.inject.servlet.ServletScopes;
|
import com.google.inject.servlet.ServletScopes;
|
||||||
import org.mapstruct.factory.Mappers;
|
import org.mapstruct.factory.Mappers;
|
||||||
|
import sonia.scm.web.api.RepositoryToHalMapper;
|
||||||
|
|
||||||
public class MapperModule extends AbstractModule {
|
public class MapperModule extends AbstractModule {
|
||||||
@Override
|
@Override
|
||||||
@@ -46,6 +47,8 @@ public class MapperModule extends AbstractModule {
|
|||||||
bind(ScmViolationExceptionToErrorDtoMapper.class).to(Mappers.getMapper(ScmViolationExceptionToErrorDtoMapper.class).getClass());
|
bind(ScmViolationExceptionToErrorDtoMapper.class).to(Mappers.getMapper(ScmViolationExceptionToErrorDtoMapper.class).getClass());
|
||||||
bind(ExceptionWithContextToErrorDtoMapper.class).to(Mappers.getMapper(ExceptionWithContextToErrorDtoMapper.class).getClass());
|
bind(ExceptionWithContextToErrorDtoMapper.class).to(Mappers.getMapper(ExceptionWithContextToErrorDtoMapper.class).getClass());
|
||||||
|
|
||||||
|
bind(RepositoryToHalMapper.class).to(Mappers.getMapper(RepositoryToRepositoryDtoMapper.class).getClass());
|
||||||
|
|
||||||
// no mapstruct required
|
// no mapstruct required
|
||||||
bind(MeDtoFactory.class);
|
bind(MeDtoFactory.class);
|
||||||
bind(UIPluginDtoMapper.class);
|
bind(UIPluginDtoMapper.class);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import sonia.scm.repository.api.Command;
|
|||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
import sonia.scm.repository.api.ScmProtocol;
|
import sonia.scm.repository.api.ScmProtocol;
|
||||||
|
import sonia.scm.web.api.RepositoryToHalMapper;
|
||||||
|
|
||||||
import java.util.List;
|
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.
|
// Mapstruct does not support parameterized (i.e. non-default) constructors. Thus, we need to use field injection.
|
||||||
@SuppressWarnings("squid:S3306")
|
@SuppressWarnings("squid:S3306")
|
||||||
@Mapper
|
@Mapper
|
||||||
public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper<Repository, RepositoryDto> {
|
public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper<Repository, RepositoryDto> implements RepositoryToHalMapper {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ResourceLinks resourceLinks;
|
private ResourceLinks resourceLinks;
|
||||||
@@ -34,6 +35,9 @@ public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper<Reposit
|
|||||||
|
|
||||||
abstract HealthCheckFailureDto toDto(HealthCheckFailure failure);
|
abstract HealthCheckFailureDto toDto(HealthCheckFailure failure);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public abstract RepositoryDto map(Repository modelObject);
|
||||||
|
|
||||||
@ObjectFactory
|
@ObjectFactory
|
||||||
RepositoryDto createDto(Repository repository) {
|
RepositoryDto createDto(Repository repository) {
|
||||||
Links.Builder linksBuilder = linkingTo().self(resourceLinks.repository().self(repository.getNamespace(), repository.getName()));
|
Links.Builder linksBuilder = linkingTo().self(resourceLinks.repository().self(repository.getNamespace(), repository.getName()));
|
||||||
|
|||||||
Reference in New Issue
Block a user