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()); } }
@Override public PullRequest acceptPullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); final GitMetadata metadata = this.getRepositoryMetadata(repository); final PullRequest acceptPullRequest = metadata.getPullRequest(id); this.createHiddenBranch(acceptPullRequest); this.mergePullRequest(acceptPullRequest); this.changePullRequestStatus(repository, id, PullRequestStatus.MERGED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
@Override public List<PullRequest> getPullRequestsByRepository(Integer page, Integer pageSize, final String repository) { GitMetadata metadata = getRepositoryMetadata(repository); List<PullRequest> pullRequests = metadata.getPullRequests(); return this.paginate(page, pageSize, pullRequests); }
protected Path buildHiddenPath(PullRequest pullRequest) { String branchName = buildHiddenBranchName(pullRequest); return this.buildPath(pullRequest.getTargetRepository(), branchName); }
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); }
@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); }
@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 deleteHiddenBranch(final PullRequest pullRequest) { final Path path = this.buildHiddenPath(pullRequest); ioService.delete(path); if (logger.isDebugEnabled()) { logger.debug("Hidden branch {} deleted", pullRequest.toString()); } }
@Override public List<FileDiff> diff(final PullRequest pullRequest) { final Repository repository = configuredRepositories.getRepositoryByRepositoryAlias(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.getRoot()), diff); this.deleteHiddenBranch(pullRequest); return diffs; }
@Test public void testBuildPath() { final Path path = ((PullRequestServiceImpl) service).buildPath("source/a", "develop"); final URI uri = URI.create("git://develop@source/a"); verify(ioService).get(uri); }
((PullRequestServiceImpl) service).paginate(0, 0, pullRequests).size()); assertEquals(10, ((PullRequestServiceImpl) service).paginate(0, 15, pullRequests).size()); assertEquals(5, ((PullRequestServiceImpl) service).paginate(1, 5, pullRequests).size()); assertEquals(1, ((PullRequestServiceImpl) service).paginate(9, 1, pullRequests).size());
@Override public void deletePullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); GitMetadata metadata = getRepositoryMetadata(repository); PullRequest removablePullRequest = metadata.getPullRequest(id); List<PullRequest> finalPullRequests = metadata.getPullRequests(); finalPullRequests.remove(removablePullRequest); GitMetadata storableMetadata = new GitMetadataImpl(metadata.getName(), metadata.getOrigin(), metadata.getForks(), finalPullRequests); this.metadataStore.write(storableMetadata.getName(), storableMetadata); this.deleteHiddenBranch(removablePullRequest); }
metadataStore = new GitMetadataStoreImpl(storage); this.service = new PullRequestServiceImpl(metadataStore, ioService, configuredRepositories);
long generatedId = this.generatePullRequestId(metadata);
@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); }
@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 void deleteHiddenBranch(final PullRequest pullRequest) { final Path path = this.buildHiddenPath(pullRequest); ioService.delete(path); if (logger.isDebugEnabled()) { logger.debug("Hidden branch {} deleted", pullRequest.toString()); } }
@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; }
@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); }
protected Path buildHiddenPath(PullRequest pullRequest) { String branchName = buildHiddenBranchName(pullRequest); return this.buildPath(pullRequest.getTargetRepository(), branchName); }