mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 00:15:44 +01:00
bugfixing
This commit is contained in:
@@ -165,7 +165,7 @@ public class RepositoryAccessITCase {
|
|||||||
.isNotNull()
|
.isNotNull()
|
||||||
.contains(String.format("%s/sources/%s", repositoryUrl, changeset.getId()));
|
.contains(String.format("%s/sources/%s", repositoryUrl, changeset.getId()));
|
||||||
|
|
||||||
assertThat(response.body().jsonPath().getString("_embedded.tags.find{it.name=='" + tagName + "'}._links.changesets.href"))
|
assertThat(response.body().jsonPath().getString("_embedded.tags.find{it.name=='" + tagName + "'}._links.changeset.href"))
|
||||||
.as("assert single tag changesets link")
|
.as("assert single tag changesets link")
|
||||||
.isNotNull()
|
.isNotNull()
|
||||||
.contains(String.format("%s/changesets/%s", repositoryUrl, changeset.getId()));
|
.contains(String.format("%s/changesets/%s", repositoryUrl, changeset.getId()));
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package sonia.scm.api.v2.resources;
|
||||||
|
|
||||||
|
import sonia.scm.PageResult;
|
||||||
|
import sonia.scm.repository.Changeset;
|
||||||
|
import sonia.scm.repository.Repository;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
public class BranchChangesetCollectionToDtoMapper extends ChangesetCollectionToDtoMapper {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public BranchChangesetCollectionToDtoMapper(ChangesetToChangesetDtoMapper changesetToChangesetDtoMapper, ResourceLinks resourceLinks) {
|
||||||
|
super(changesetToChangesetDtoMapper, resourceLinks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CollectionDto map(int pageNumber, int pageSize, PageResult<Changeset> pageResult, Repository repository, String branch) {
|
||||||
|
return this.map(pageNumber, pageSize, pageResult, repository, () -> createSelfLink(repository, branch));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String createSelfLink(Repository repository, String branch) {
|
||||||
|
return resourceLinks.branch().history(repository.getNamespaceAndName(), branch);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package sonia.scm.api.v2.resources;
|
|||||||
import com.webcohesion.enunciate.metadata.rs.ResponseCode;
|
import com.webcohesion.enunciate.metadata.rs.ResponseCode;
|
||||||
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
|
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
|
||||||
import com.webcohesion.enunciate.metadata.rs.TypeHint;
|
import com.webcohesion.enunciate.metadata.rs.TypeHint;
|
||||||
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.PageResult;
|
import sonia.scm.PageResult;
|
||||||
import sonia.scm.repository.Branches;
|
import sonia.scm.repository.Branches;
|
||||||
import sonia.scm.repository.Changeset;
|
import sonia.scm.repository.Changeset;
|
||||||
@@ -25,6 +26,7 @@ import javax.ws.rs.Produces;
|
|||||||
import javax.ws.rs.QueryParam;
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
|
||||||
public class BranchRootResource {
|
public class BranchRootResource {
|
||||||
|
|
||||||
@@ -32,14 +34,14 @@ public class BranchRootResource {
|
|||||||
private final BranchToBranchDtoMapper branchToDtoMapper;
|
private final BranchToBranchDtoMapper branchToDtoMapper;
|
||||||
private final BranchCollectionToDtoMapper branchCollectionToDtoMapper;
|
private final BranchCollectionToDtoMapper branchCollectionToDtoMapper;
|
||||||
|
|
||||||
private final ChangesetCollectionToDtoMapper changesetCollectionToDtoMapper;
|
private final BranchChangesetCollectionToDtoMapper branchChangesetCollectionToDtoMapper;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public BranchRootResource(RepositoryServiceFactory serviceFactory, BranchToBranchDtoMapper branchToDtoMapper, BranchCollectionToDtoMapper branchCollectionToDtoMapper, ChangesetCollectionToDtoMapper changesetCollectionToDtoMapper) {
|
public BranchRootResource(RepositoryServiceFactory serviceFactory, BranchToBranchDtoMapper branchToDtoMapper, BranchCollectionToDtoMapper branchCollectionToDtoMapper, BranchChangesetCollectionToDtoMapper changesetCollectionToDtoMapper) {
|
||||||
this.serviceFactory = serviceFactory;
|
this.serviceFactory = serviceFactory;
|
||||||
this.branchToDtoMapper = branchToDtoMapper;
|
this.branchToDtoMapper = branchToDtoMapper;
|
||||||
this.branchCollectionToDtoMapper = branchCollectionToDtoMapper;
|
this.branchCollectionToDtoMapper = branchCollectionToDtoMapper;
|
||||||
this.changesetCollectionToDtoMapper = changesetCollectionToDtoMapper;
|
this.branchChangesetCollectionToDtoMapper = changesetCollectionToDtoMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -98,6 +100,14 @@ public class BranchRootResource {
|
|||||||
@DefaultValue("0") @QueryParam("page") int page,
|
@DefaultValue("0") @QueryParam("page") int page,
|
||||||
@DefaultValue("10") @QueryParam("pageSize") int pageSize) throws Exception {
|
@DefaultValue("10") @QueryParam("pageSize") int pageSize) throws Exception {
|
||||||
try (RepositoryService repositoryService = serviceFactory.create(new NamespaceAndName(namespace, name))) {
|
try (RepositoryService repositoryService = serviceFactory.create(new NamespaceAndName(namespace, name))) {
|
||||||
|
boolean branchExists = repositoryService.getBranchesCommand()
|
||||||
|
.getBranches()
|
||||||
|
.getBranches()
|
||||||
|
.stream()
|
||||||
|
.anyMatch(branch -> branchName.equals(branch.getName()));
|
||||||
|
if (!branchExists){
|
||||||
|
throw new NotFoundException(MessageFormat.format("The branch {0} is not found", branchName));
|
||||||
|
}
|
||||||
Repository repository = repositoryService.getRepository();
|
Repository repository = repositoryService.getRepository();
|
||||||
RepositoryPermissions.read(repository).check();
|
RepositoryPermissions.read(repository).check();
|
||||||
ChangesetPagingResult changesets = repositoryService.getLogCommand()
|
ChangesetPagingResult changesets = repositoryService.getLogCommand()
|
||||||
@@ -107,7 +117,7 @@ public class BranchRootResource {
|
|||||||
.getChangesets();
|
.getChangesets();
|
||||||
if (changesets != null && changesets.getChangesets() != null) {
|
if (changesets != null && changesets.getChangesets() != null) {
|
||||||
PageResult<Changeset> pageResult = new PageResult<>(changesets.getChangesets(), changesets.getTotal());
|
PageResult<Changeset> pageResult = new PageResult<>(changesets.getChangesets(), changesets.getTotal());
|
||||||
return Response.ok(changesetCollectionToDtoMapper.map(page, pageSize, pageResult, repository)).build();
|
return Response.ok(branchChangesetCollectionToDtoMapper.map(page, pageSize, pageResult, repository, branchName)).build();
|
||||||
} else {
|
} else {
|
||||||
return Response.ok().build();
|
return Response.ok().build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public abstract class TagToTagDtoMapper {
|
|||||||
Links.Builder linksBuilder = linkingTo()
|
Links.Builder linksBuilder = linkingTo()
|
||||||
.self(resourceLinks.tag().self(namespaceAndName.getNamespace(), namespaceAndName.getName(), target.getName()))
|
.self(resourceLinks.tag().self(namespaceAndName.getNamespace(), namespaceAndName.getName(), target.getName()))
|
||||||
.single(link("sources", resourceLinks.source().self(namespaceAndName.getNamespace(), namespaceAndName.getName(), target.getRevision())))
|
.single(link("sources", resourceLinks.source().self(namespaceAndName.getNamespace(), namespaceAndName.getName(), target.getRevision())))
|
||||||
.single(link("changesets", resourceLinks.changeset().self(namespaceAndName.getNamespace(), namespaceAndName.getName(), target.getRevision())));
|
.single(link("changeset", resourceLinks.changeset().self(namespaceAndName.getNamespace(), namespaceAndName.getName(), target.getRevision())));
|
||||||
target.add(linksBuilder.build());
|
target.add(linksBuilder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class BranchRootResourceTest extends RepositoryTestBase {
|
|||||||
@InjectMocks
|
@InjectMocks
|
||||||
private BranchToBranchDtoMapperImpl branchToDtoMapper;
|
private BranchToBranchDtoMapperImpl branchToDtoMapper;
|
||||||
|
|
||||||
private ChangesetCollectionToDtoMapper changesetCollectionToDtoMapper;
|
private BranchChangesetCollectionToDtoMapper changesetCollectionToDtoMapper;
|
||||||
|
|
||||||
private BranchRootResource branchRootResource;
|
private BranchRootResource branchRootResource;
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ public class BranchRootResourceTest extends RepositoryTestBase {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void prepareEnvironment() throws Exception {
|
public void prepareEnvironment() throws Exception {
|
||||||
changesetCollectionToDtoMapper = new ChangesetCollectionToDtoMapper(changesetToChangesetDtoMapper, resourceLinks);
|
changesetCollectionToDtoMapper = new BranchChangesetCollectionToDtoMapper(changesetToChangesetDtoMapper, resourceLinks);
|
||||||
BranchCollectionToDtoMapper branchCollectionToDtoMapper = new BranchCollectionToDtoMapper(branchToDtoMapper, resourceLinks);
|
BranchCollectionToDtoMapper branchCollectionToDtoMapper = new BranchCollectionToDtoMapper(branchToDtoMapper, resourceLinks);
|
||||||
branchRootResource = new BranchRootResource(serviceFactory, branchToDtoMapper, branchCollectionToDtoMapper, changesetCollectionToDtoMapper);
|
branchRootResource = new BranchRootResource(serviceFactory, branchToDtoMapper, branchCollectionToDtoMapper, changesetCollectionToDtoMapper);
|
||||||
super.branchRootResource = Providers.of(branchRootResource);
|
super.branchRootResource = Providers.of(branchRootResource);
|
||||||
@@ -152,6 +152,10 @@ public class BranchRootResourceTest extends RepositoryTestBase {
|
|||||||
when(logCommandBuilder.setPagingLimit(anyInt())).thenReturn(logCommandBuilder);
|
when(logCommandBuilder.setPagingLimit(anyInt())).thenReturn(logCommandBuilder);
|
||||||
when(logCommandBuilder.setBranch(anyString())).thenReturn(logCommandBuilder);
|
when(logCommandBuilder.setBranch(anyString())).thenReturn(logCommandBuilder);
|
||||||
when(logCommandBuilder.getChangesets()).thenReturn(changesetPagingResult);
|
when(logCommandBuilder.getChangesets()).thenReturn(changesetPagingResult);
|
||||||
|
Branches branches = mock(Branches.class);
|
||||||
|
List<Branch> branchList = Lists.newArrayList(new Branch("master",id));
|
||||||
|
when(branches.getBranches()).thenReturn(branchList);
|
||||||
|
when(branchesCommandBuilder.getBranches()).thenReturn(branches);
|
||||||
MockHttpRequest request = MockHttpRequest.get(BRANCH_URL + "/changesets/");
|
MockHttpRequest request = MockHttpRequest.get(BRANCH_URL + "/changesets/");
|
||||||
MockHttpResponse response = new MockHttpResponse();
|
MockHttpResponse response = new MockHttpResponse();
|
||||||
dispatcher.invoke(request, response);
|
dispatcher.invoke(request, response);
|
||||||
@@ -161,6 +165,5 @@ public class BranchRootResourceTest extends RepositoryTestBase {
|
|||||||
assertTrue(response.getContentAsString().contains(String.format("\"name\":\"%s\"", authorName)));
|
assertTrue(response.getContentAsString().contains(String.format("\"name\":\"%s\"", authorName)));
|
||||||
assertTrue(response.getContentAsString().contains(String.format("\"mail\":\"%s\"", authorEmail)));
|
assertTrue(response.getContentAsString().contains(String.format("\"mail\":\"%s\"", authorEmail)));
|
||||||
assertTrue(response.getContentAsString().contains(String.format("\"description\":\"%s\"", commit)));
|
assertTrue(response.getContentAsString().contains(String.format("\"description\":\"%s\"", commit)));
|
||||||
assertTrue(response.getContentAsString().contains(String.format("\"description\":\"%s\"", commit)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user