@Override public CompletableFuture<Revision> findLatestRevision(Revision lastKnownRevision, String pathPattern) { requireNonNull(lastKnownRevision, "lastKnownRevision"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range; try { range = normalizeNow(lastKnownRevision, Revision.HEAD); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } if (range.from().equals(range.to())) { return CompletableFuture.completedFuture(null); } final CompletableFuture<Object> future = cache.get(new CacheableFindLatestRevCall(repo, range.from(), range.to(), pathPattern)) .thenApply(result -> result != CacheableFindLatestRevCall.EMPTY ? result : null); return unsafeCast(future); }
@Override public CompletableFuture<Change<?>> diff(Revision from, Revision to, Query<?> query) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(query, "query"); final RevisionRange range; try { range = normalizeNow(from, to).toAscending(); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } return unsafeCast(cache.get(new CacheableSingleDiffCall(repo, range.from(), range.to(), query))); }
@Override public CompletableFuture<Revision> findLatestRevision(Revision lastKnownRevision, String pathPattern) { requireNonNull(lastKnownRevision, "lastKnownRevision"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range; try { range = normalizeNow(lastKnownRevision, Revision.HEAD); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } if (range.from().equals(range.to())) { return CompletableFuture.completedFuture(null); } final CompletableFuture<Object> future = cache.get(new CacheableFindLatestRevCall(repo, range.from(), range.to(), pathPattern)) .thenApply(result -> result != CacheableFindLatestRevCall.EMPTY ? result : null); return unsafeCast(future); }
@Override public CompletableFuture<List<Commit>> history(Revision from, Revision to, String pathPattern, int maxCommits) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); if (maxCommits <= 0) { throw new IllegalArgumentException("maxCommits: " + maxCommits + " (expected: > 0)"); } final RevisionRange range; try { range = normalizeNow(from, to); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } // Make sure maxCommits do not exceed its theoretical limit to increase the chance of cache hit. // e.g. when from = 2 and to = 4, the same result should be yielded when maxCommits >= 3. final int actualMaxCommits = Math.min( maxCommits, Math.abs(range.from().major() - range.to().major()) + 1); return unsafeCast(cache.get( new CacheableHistoryCall(repo, range.from(), range.to(), pathPattern, actualMaxCommits))); }
@Override public CompletableFuture<Revision> findLatestRevision(Revision lastKnownRevision, String pathPattern) { requireNonNull(lastKnownRevision, "lastKnownRevision"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range; try { range = normalizeNow(lastKnownRevision, Revision.HEAD); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } if (range.from().equals(range.to())) { return CompletableFuture.completedFuture(null); } final CompletableFuture<Object> future = cache.get(new CacheableFindLatestRevCall(repo, range.from(), range.to(), pathPattern)) .thenApply(result -> result != CacheableFindLatestRevCall.EMPTY ? result : null); return unsafeCast(future); }
@Override public CompletableFuture<Change<?>> diff(Revision from, Revision to, Query<?> query) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(query, "query"); final RevisionRange range; try { range = normalizeNow(from, to).toAscending(); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } return unsafeCast(cache.get(new CacheableSingleDiffCall(repo, range.from(), range.to(), query))); }
@Override public CompletableFuture<List<Commit>> history(Revision from, Revision to, String pathPattern, int maxCommits) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); if (maxCommits <= 0) { throw new IllegalArgumentException("maxCommits: " + maxCommits + " (expected: > 0)"); } final RevisionRange range; try { range = normalizeNow(from, to); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } // Make sure maxCommits do not exceed its theoretical limit to increase the chance of cache hit. // e.g. when from = 2 and to = 4, the same result should be yielded when maxCommits >= 3. final int actualMaxCommits = Math.min( maxCommits, Math.abs(range.from().major() - range.to().major()) + 1); return unsafeCast(cache.get( new CacheableHistoryCall(repo, range.from(), range.to(), pathPattern, actualMaxCommits))); }
@Override public CompletableFuture<List<Commit>> history(Revision from, Revision to, String pathPattern, int maxCommits) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); if (maxCommits <= 0) { throw new IllegalArgumentException("maxCommits: " + maxCommits + " (expected: > 0)"); } final RevisionRange range; try { range = normalizeNow(from, to); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } // Make sure maxCommits do not exceed its theoretical limit to increase the chance of cache hit. // e.g. when from = 2 and to = 4, the same result should be yielded when maxCommits >= 3. final int actualMaxCommits = Math.min( maxCommits, Math.abs(range.from().major() - range.to().major()) + 1); return unsafeCast(cache.get( new CacheableHistoryCall(repo, range.from(), range.to(), pathPattern, actualMaxCommits))); }
@Override public CompletableFuture<Map<String, Change<?>>> diff(Revision from, Revision to, String pathPattern) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range; try { range = normalizeNow(from, to).toAscending(); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } return unsafeCast(cache.get(new CacheableMultiDiffCall(repo, range.from(), range.to(), pathPattern))); }
@Override public CompletableFuture<Map<String, Change<?>>> diff(Revision from, Revision to, String pathPattern) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range; try { range = normalizeNow(from, to).toAscending(); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } return unsafeCast(cache.get(new CacheableMultiDiffCall(repo, range.from(), range.to(), pathPattern))); }
@Override public CompletableFuture<Change<?>> diff(Revision from, Revision to, Query<?> query) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(query, "query"); final RevisionRange range; try { range = normalizeNow(from, to).toAscending(); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } return unsafeCast(cache.get(new CacheableSingleDiffCall(repo, range.from(), range.to(), query))); }
@Override public CompletableFuture<Map<String, Change<?>>> diff(Revision from, Revision to, String pathPattern) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range; try { range = normalizeNow(from, to).toAscending(); } catch (Exception e) { return CompletableFutures.exceptionallyCompletedFuture(e); } return unsafeCast(cache.get(new CacheableMultiDiffCall(repo, range.from(), range.to(), pathPattern))); }
.orElse(DEFAULT_MAX_COMMITS); return repository .history(range.from(), range.to(), normalizePath(path), maxCommits0) .thenApply(commits -> { final boolean toList = isNullOrEmpty(revision) || "/".equalsIgnoreCase(revision) ||
private Map<String, Change<?>> blockingDiff(Revision from, Revision to, String pathPattern) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range = normalizeNow(from, to).toAscending(); readLock(); try { return toChangeMap(compareTrees(commitIdDatabase.get(range.from()), commitIdDatabase.get(range.to()), PathPatternFilter.of(pathPattern))); } finally { readUnlock(); } }
private Map<String, Change<?>> blockingDiff(Revision from, Revision to, String pathPattern) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range = normalizeNow(from, to).toAscending(); readLock(); try { return toChangeMap(compareTrees(commitIdDatabase.get(range.from()), commitIdDatabase.get(range.to()), PathPatternFilter.of(pathPattern))); } finally { readUnlock(); } }
.orElse(DEFAULT_MAX_COMMITS); return repository .history(range.from(), range.to(), normalizePath(path), maxCommits0) .thenApply(commits -> { final boolean toList = isNullOrEmpty(revision) || "/".equalsIgnoreCase(revision) ||
private Map<String, Change<?>> blockingDiff(Revision from, Revision to, String pathPattern) { requireNonNull(from, "from"); requireNonNull(to, "to"); requireNonNull(pathPattern, "pathPattern"); final RevisionRange range = normalizeNow(from, to).toAscending(); readLock(); try { return toChangeMap(compareTrees(commitIdDatabase.get(range.from()), commitIdDatabase.get(range.to()), PathPatternFilter.of(pathPattern))); } finally { readUnlock(); } }
.orElse(DEFAULT_MAX_COMMITS); return repository .history(range.from(), range.to(), normalizePath(path), maxCommits0) .thenApply(commits -> { final boolean toList = isNullOrEmpty(revision) || "/".equalsIgnoreCase(revision) ||