@Override public void write(String name, String origin) { GitMetadataImpl repositoryMetadata = (GitMetadataImpl) this.read(name).orElse(new GitMetadataImpl(name)); this.removeForkFromOrigin(repositoryMetadata); GitMetadataImpl newRepositoryMetadata = new GitMetadataImpl(name, repositoryMetadata.getForks()); if (isStorableOrigin(origin)) { newRepositoryMetadata = new GitMetadataImpl(name, origin, repositoryMetadata.getForks()); GitMetadataImpl originMetadata = (GitMetadataImpl) this.read(origin).orElse(new GitMetadataImpl(origin)); List<String> forks = originMetadata.getForks(); forks.add(name); this.write(origin, new GitMetadataImpl(origin, originMetadata.getOrigin(), forks)); } this.write(name, newRepositoryMetadata); }
@Override public List<PullRequest> getPullRequests(final Predicate<? super PullRequest> filter) { final List<PullRequest> prs = this.getPullRequests(); return prs.stream().filter(filter).collect(Collectors.toList()); }
@Test public void testChangeOriginFromMetedata() { metadataStore.write("test/repo", "other/repo"); assertEquals("test/repo", metadatas.get("/test/repo.metadata").getName()); assertEquals("other/repo", metadatas.get("/test/repo.metadata").getOrigin()); assertEquals("other/repo", metadatas.get("/other/repo.metadata").getName()); metadataStore.write("test/repo", "other/otherOrigin"); assertEquals("other/otherOrigin", metadatas.get("/test/repo.metadata").getOrigin()); assertEquals(0, metadatas.get("/other/repo.metadata").getForks().size()); }
@Test public void testWriteTwoForks() { metadataStore.write("test/repo", "origin/repo"); metadataStore.write("fork/repo", "origin/repo"); assertEquals(3, metadatas.size()); assertEquals("test/repo", metadatas.get("/test/repo.metadata").getName()); assertEquals("fork/repo", metadatas.get("/fork/repo.metadata").getName()); assertEquals("origin/repo", metadatas.get("/origin/repo.metadata").getName()); assertEquals(2, metadatas.get("/origin/repo.metadata").getForks().size()); }
private void removeOriginFromForks(final GitMetadata metadata) { List<GitMetadata> forks = this.getForks(metadata); forks.forEach(fork -> { GitMetadata newForkImpl = new GitMetadataImpl(fork.getName(), fork.getForks()); this.storage.write(buildPath(fork.getName()), newForkImpl); }); }
@Test public void testChangeOriginFromMetedata() { metadataStore.write("test/repo", "other/repo"); assertEquals("test/repo", metadatas.get("/test/repo.metadata").getName()); assertEquals("other/repo", metadatas.get("/test/repo.metadata").getOrigin()); assertEquals("other/repo", metadatas.get("/other/repo.metadata").getName()); metadataStore.write("test/repo", "other/otherOrigin"); assertEquals("other/otherOrigin", metadatas.get("/test/repo.metadata").getOrigin()); assertEquals(0, metadatas.get("/other/repo.metadata").getForks().size()); }
@Test public void testWriteTwoForks() { metadataStore.write("test/repo", "origin/repo"); metadataStore.write("fork/repo", "origin/repo"); assertEquals(3, metadatas.size()); assertEquals("test/repo", metadatas.get("/test/repo.metadata").getName()); assertEquals("fork/repo", metadatas.get("/fork/repo.metadata").getName()); assertEquals("origin/repo", metadatas.get("/origin/repo.metadata").getName()); assertEquals(2, metadatas.get("/origin/repo.metadata").getForks().size()); }
private void removeOriginFromForks(final GitMetadata metadata) { List<GitMetadata> forks = this.getForks(metadata); forks.forEach(fork -> { GitMetadata newForkImpl = new GitMetadataImpl(fork.getName(), fork.getForks()); this.storage.write(buildPath(fork.getName()), newForkImpl); }); }
@Test public void testChangeOriginFromMetedata() { metadataStore.write("test/repo", "other/repo"); assertEquals("test/repo", metadatas.get("/test/repo.metadata").getName()); assertEquals("other/repo", metadatas.get("/test/repo.metadata").getOrigin()); assertEquals("other/repo", metadatas.get("/other/repo.metadata").getName()); metadataStore.write("test/repo", "other/otherOrigin"); assertEquals("other/otherOrigin", metadatas.get("/test/repo.metadata").getOrigin()); assertEquals(0, metadatas.get("/other/repo.metadata").getForks().size()); }
@Override public void write(String name, String origin) { GitMetadataImpl repositoryMetadata = (GitMetadataImpl) this.read(name).orElse(new GitMetadataImpl(name)); this.removeForkFromOrigin(repositoryMetadata); GitMetadataImpl newRepositoryMetadata = new GitMetadataImpl(name, repositoryMetadata.getForks()); if (isStorableOrigin(origin)) { newRepositoryMetadata = new GitMetadataImpl(name, origin, repositoryMetadata.getForks()); GitMetadataImpl originMetadata = (GitMetadataImpl) this.read(origin).orElse(new GitMetadataImpl(origin)); List<String> forks = originMetadata.getForks(); forks.add(name); this.write(origin, new GitMetadataImpl(origin, originMetadata.getOrigin(), forks)); } this.write(name, newRepositoryMetadata); }
@Test public void testWriteTwoForks() { metadataStore.write("test/repo", "origin/repo"); metadataStore.write("fork/repo", "origin/repo"); assertEquals(3, metadatas.size()); assertEquals("test/repo", metadatas.get("/test/repo.metadata").getName()); assertEquals("fork/repo", metadatas.get("/fork/repo.metadata").getName()); assertEquals("origin/repo", metadatas.get("/origin/repo.metadata").getName()); assertEquals(2, metadatas.get("/origin/repo.metadata").getForks().size()); }
private void removeForkFromOrigin(final GitMetadata metadata) { this.getOrigin(metadata).ifPresent(origin -> { if (origin.getForks().contains(metadata.getName())) { List<String> forks = origin.getForks(); forks.remove(metadata.getName()); GitMetadataImpl newOrigin = new GitMetadataImpl(origin.getName(), origin.getOrigin(), forks); this.storage.write(buildPath(origin.getName()), newOrigin); } }); }
@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()); }); } }
private void removeForkFromOrigin(final GitMetadata metadata) { this.getOrigin(metadata).ifPresent(origin -> { if (origin.getForks().contains(metadata.getName())) { List<String> forks = origin.getForks(); forks.remove(metadata.getName()); GitMetadataImpl newOrigin = new GitMetadataImpl(origin.getName(), origin.getOrigin(), forks); this.storage.write(buildPath(origin.getName()), newOrigin); } }); }
@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()); }
GitMetadata newMetadata = new GitMetadataImpl(metadata.getName(), metadata.getOrigin(), metadata.getForks(),
@Test public void testWriteWithNullOrigin() { String origin = null; metadataStore.write("test/repo", origin); assertEquals("test/repo", metadatas.get("/test/repo.metadata").getName()); }