@Override public PullRequest getPullRequest(long id) { final List<PullRequest> prs = this.getPullRequests(elem -> elem.getId() == id); if (prs.size() == 0) { throw new NoSuchElementException("The Pull Request with ID #" + id + " not found"); } final PullRequest pr = prs.get(0); return new PullRequestImpl(pr.getId(), pr.getSourceSpace(), pr.getSourceRepository(), pr.getSourceBranch(), pr.getTargetSpace(), pr.getTargetRepository(), pr.getTargetBranch(), pr.getStatus()); }
private String buildHiddenBranchName(PullRequest pullRequest) { return String.format("PR-%s-%s/%s-%s", pullRequest.getId(), pullRequest.getSourceRepository(), pullRequest.getSourceBranch(), pullRequest.getTargetBranch()); }
@Override public boolean exists(final PullRequest pullRequest) { return this.getPullRequests().stream().anyMatch( pr -> { return pr.getSourceBranch().equals(pullRequest.getSourceBranch()) && pr.getSourceRepository().equals(pullRequest.getSourceRepository()) && pr.getTargetBranch().equals(pullRequest.getTargetBranch()) && pr.getTargetRepository().equals(pullRequest.getTargetRepository()) && pr.getStatus().equals(pullRequest.getStatus()); }); } }
@Test public void testRejectPullRequest() { PullRequest pullRequest = service.createPullRequest("child/a", "develop", "parent/a", "master"); service.rejectPullRequest(pullRequest); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.REJECTED, pullRequests.get(0).getStatus()); }
@Test public void testChangeStatusToMergedPullRequest() { PullRequest pullRequest = service.createPullRequest("child/a", "develop", "parent/a", "master"); ((PullRequestServiceImpl) service).changePullRequestStatus(pullRequest.getTargetRepository(), pullRequest.getId(), PullRequestStatus.MERGED); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.MERGED, pullRequests.get(0).getStatus()); }
private void mergePullRequest(final PullRequest pullRequest) { final Path source = this.buildHiddenPath(pullRequest); final Path target = this.buildPath(pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); ioService.copy(source, target, new MergeCopyOption()); if (logger.isDebugEnabled()) { logger.debug("Merged from <{}> to <{}>", source.toString(), target.toString()); } }
@Override public PullRequest rejectPullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); this.changePullRequestStatus(repository, id, PullRequestStatus.REJECTED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
@Override public List<FileDiff> diff(final PullRequest pullRequest) { final Repository repository = repositoryService.getRepositoryFromSpace(spaces.getSpace(pullRequest.getTargetSpace()), pullRequest.getTargetRepository()); this.createHiddenBranch(pullRequest); String diff = String.format("diff:%s,%s", pullRequest.getTargetBranch(), this.buildHiddenBranchName(pullRequest)); final List<FileDiff> diffs = (List<FileDiff>) this.ioService.readAttributes(convert(repository.getBranch(pullRequest.getSourceBranch()).get().getPath()), diff); this.deleteHiddenBranch(pullRequest); return diffs; }
private synchronized long generatePullRequestId(final GitMetadata metadata) { List<PullRequest> pullRequests = metadata.getPullRequests(); final Optional<PullRequest> last = pullRequests.stream().max((first, second) -> Long.compare(first.getId(), second.getId())); return last.map(pr -> pr.getId() + 1).orElse(1l); }
public List<PullRequest> getPullRequestsByStatus(Integer page, Integer pageSize, final String repository, final PullRequestStatus status) { final List<PullRequest> pullRequests = this.getPullRequestsByRepository(page, pageSize, repository); final List<PullRequest> finalPullRequests = pullRequests.stream().filter(elem -> elem.getStatus().equals(status)).collect(Collectors.toList()); return this.paginate(page, pageSize, finalPullRequests); }
protected void createHiddenBranch(final PullRequest pullRequest) { final Path source = this.buildPath(pullRequest.getSourceRepository(), pullRequest.getSourceBranch()); final Path target = this.buildHiddenPath(pullRequest); ioService.copy(source, target); if (logger.isDebugEnabled()) { logger.debug("Hidden branch {} created.", target.toString()); } }
public List<PullRequest> getPullRequestsByBranch(Integer page, Integer pageSize, final String repository, final String branch) { GitMetadata metadata = getRepositoryMetadata(repository); List<PullRequest> pullRequests = metadata.getPullRequests(elem -> elem.getTargetBranch().equals(branch)); return this.paginate(page, pageSize, pullRequests); }
protected Path buildHiddenPath(PullRequest pullRequest) { String branchName = buildHiddenBranchName(pullRequest); return this.buildPath(pullRequest.getTargetRepository(), branchName); }
@Test public void testClosePullRequest() { PullRequest pullRequest = service.createPullRequest("child/a", "develop", "parent/a", "master"); service.closePullRequest(pullRequest); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.CLOSED, pullRequests.get(0).getStatus()); }
@Test public void testChangeStatusToClosedPullRequest() { PullRequest pullRequest = service.createPullRequest("child/a", "develop", "parent/a", "master"); ((PullRequestServiceImpl) service).changePullRequestStatus(pullRequest.getTargetRepository(), pullRequest.getId(), PullRequestStatus.CLOSED); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.CLOSED, pullRequests.get(0).getStatus()); }
private String buildHiddenBranchName(PullRequest pullRequest) { return String.format("PR-%s-%s/%s-%s", pullRequest.getId(), pullRequest.getSourceRepository(), pullRequest.getSourceBranch(), pullRequest.getTargetBranch()); }
private void mergePullRequest(final PullRequest pullRequest) { final Path source = this.buildHiddenPath(pullRequest); final Path target = this.buildPath(pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); ioService.copy(source, target, new MergeCopyOption()); if (logger.isDebugEnabled()) { logger.debug("Merged from <{}> to <{}>", source.toString(), target.toString()); } }
@Override public PullRequest rejectPullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); this.changePullRequestStatus(repository, id, PullRequestStatus.REJECTED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
private synchronized long generatePullRequestId(final GitMetadata metadata) { List<PullRequest> pullRequests = metadata.getPullRequests(); final Optional<PullRequest> last = pullRequests.stream().max((first, second) -> Long.compare(first.getId(), second.getId())); return last.map(pr -> pr.getId() + 1).orElse(1l); }
@Override public List<PullRequest> getPullRequestsByStatus(Integer page, Integer pageSize, final String repository, final PullRequestStatus status) { final List<PullRequest> pullRequests = this.getPullRequestsByRepository(page, pageSize, repository); final List<PullRequest> finalPullRequests = pullRequests.stream().filter(elem -> elem.getStatus().equals(status)).collect(Collectors.toList()); return this.paginate(page, pageSize, finalPullRequests); }