Implemented BrowserResultMapper

This commit is contained in:
Philipp Czora
2018-08-13 17:31:45 +02:00
parent 60526ba38e
commit f375e076e4
9 changed files with 167 additions and 26 deletions

View File

@@ -5,14 +5,27 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class BrowserResultDto extends HalRepresentation {
public class BrowserResultDto extends HalRepresentation implements Iterable<FileObjectDto> {
private String revision;
private String tag;
private String branch;
private Collection<FileObjectDto> files;
private List<FileObjectDto> files;
@Override
public Iterator<FileObjectDto> iterator() {
Iterator<FileObjectDto> it = null;
if (files != null)
{
it = files.iterator();
}
return it;
}
}

View File

@@ -0,0 +1,31 @@
package sonia.scm.api.v2.resources;
import org.mapstruct.Mapper;
import sonia.scm.repository.BrowserResult;
import sonia.scm.repository.FileObject;
import java.util.ArrayList;
import java.util.List;
@Mapper
public abstract class BrowserResultMapper extends BaseMapper<BrowserResult, BrowserResultDto> {
abstract FileObjectDto mapFileObject(FileObject fileObject);
public BrowserResultDto map(BrowserResult browserResult) {
BrowserResultDto browserResultDto = new BrowserResultDto();
browserResultDto.setTag(browserResult.getTag());
browserResultDto.setBranch(browserResult.getBranch());
browserResultDto.setRevision(browserResult.getRevision());
List<FileObjectDto> fileObjectDtoList = new ArrayList<>();
for (FileObject fileObject : browserResult.getFiles()) {
fileObjectDtoList.add(mapFileObject(fileObject));
}
browserResultDto.setFiles(fileObjectDtoList);
return browserResultDto;
}
}

View File

@@ -1,9 +0,0 @@
package sonia.scm.api.v2.resources;
import org.mapstruct.Mapper;
import sonia.scm.repository.BrowserResult;
@Mapper
public abstract class BrowserResultToBrowserResultDtoMapper extends BaseMapper<BrowserResult, BrowserResultDto> {
}

View File

@@ -4,6 +4,5 @@ import org.mapstruct.Mapper;
import sonia.scm.repository.FileObject;
@Mapper
public abstract class FileObjectToFileObjectDtoMapper extends BaseMapper<FileObject, FileObjectDto> {
public abstract class FileObjectMapper extends BaseMapper<FileObject, FileObjectDto> {
}

View File

@@ -26,6 +26,8 @@ public class MapperModule extends AbstractModule {
bind(BranchToBranchDtoMapper.class).to(Mappers.getMapper(BranchToBranchDtoMapper.class).getClass());
bind(BrowserResultMapper.class).to(Mappers.getMapper(BrowserResultMapper.class).getClass());
bind(UriInfoStore.class).in(ServletScopes.REQUEST);
}
}

View File

@@ -7,22 +7,31 @@ import sonia.scm.repository.RepositoryNotFoundException;
import sonia.scm.repository.api.BrowseCommandBuilder;
import sonia.scm.repository.api.RepositoryService;
import sonia.scm.repository.api.RepositoryServiceFactory;
import sonia.scm.web.VndMediaType;
import javax.inject.Inject;
import javax.ws.rs.*;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import java.io.IOException;
public class SourceRootResource {
private final RepositoryServiceFactory serviceFactory;
private final BrowserResultMapper browserResultMapper;
@Inject
public SourceRootResource(RepositoryServiceFactory serviceFactory) {
public SourceRootResource(RepositoryServiceFactory serviceFactory, BrowserResultMapper browserResultMapper) {
this.serviceFactory = serviceFactory;
this.browserResultMapper = browserResultMapper;
}
@GET
@Produces(VndMediaType.SOURCE)
@Path("")
public Response getAll(@PathParam("namespace") String namespace, @PathParam("name") String name) {
@@ -38,8 +47,7 @@ public class SourceRootResource {
} catch (IOException e) {
e.printStackTrace();
}
return Response.ok(browserResult.toString()).build();
return Response.ok(browserResultMapper.map(browserResult)).build();
}
@GET