Fix API breakage introduced by da254106
Use org.eclipse.jgit.errors.CancelledException which is a subclass of IOException instead of org.eclipse.jgit.api.errors.CanceledException in order to avoid breaking API. We can reconsider this with the next major version 6.0. Bug: 536324 Change-Id: Ia6f84f59aa6b7d78b8fccaba24ade320a54f7458 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com> Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
This commit is contained in:
parent
da254106a7
commit
cf6463bddc
|
@ -52,7 +52,6 @@
|
|||
import java.util.Collections;
|
||||
|
||||
import org.eclipse.jgit.annotations.Nullable;
|
||||
import org.eclipse.jgit.api.errors.CanceledException;
|
||||
import org.eclipse.jgit.blame.Candidate.BlobCandidate;
|
||||
import org.eclipse.jgit.blame.Candidate.ReverseCandidate;
|
||||
import org.eclipse.jgit.blame.ReverseWalk.ReverseCommit;
|
||||
|
@ -628,15 +627,9 @@ private boolean processOne(Candidate n) throws IOException {
|
|||
if (n.sourceCommit == null)
|
||||
return result(n);
|
||||
|
||||
DiffEntry r;
|
||||
try {
|
||||
r = findRename(parent, n.sourceCommit, n.sourcePath);
|
||||
if (r == null) {
|
||||
return result(n);
|
||||
}
|
||||
} catch (CanceledException e) {
|
||||
DiffEntry r = findRename(parent, n.sourceCommit, n.sourcePath);
|
||||
if (r == null)
|
||||
return result(n);
|
||||
}
|
||||
|
||||
if (0 == r.getOldId().prefixCompare(n.sourceBlob)) {
|
||||
// A 100% rename without any content change can also
|
||||
|
@ -694,8 +687,7 @@ private boolean split(Candidate parent, Candidate source)
|
|||
return false;
|
||||
}
|
||||
|
||||
private boolean processMerge(Candidate n)
|
||||
throws IOException {
|
||||
private boolean processMerge(Candidate n) throws IOException {
|
||||
int pCnt = n.getParentCount();
|
||||
|
||||
// If any single parent exactly matches the merge, follow only
|
||||
|
@ -722,15 +714,9 @@ private boolean processMerge(Candidate n)
|
|||
if (ids != null && ids[pIdx] != null)
|
||||
continue;
|
||||
|
||||
DiffEntry r;
|
||||
try {
|
||||
r = findRename(parent, n.sourceCommit, n.sourcePath);
|
||||
if (r == null) {
|
||||
continue;
|
||||
}
|
||||
} catch (CanceledException e) {
|
||||
DiffEntry r = findRename(parent, n.sourceCommit, n.sourcePath);
|
||||
if (r == null)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (n instanceof ReverseCandidate) {
|
||||
if (ids == null)
|
||||
|
@ -1035,7 +1021,7 @@ private static final boolean isFile(int rawMode) {
|
|||
}
|
||||
|
||||
private DiffEntry findRename(RevCommit parent, RevCommit commit,
|
||||
PathFilter path) throws IOException, CanceledException {
|
||||
PathFilter path) throws IOException {
|
||||
if (renameDetector == null)
|
||||
return null;
|
||||
|
||||
|
|
|
@ -62,12 +62,12 @@
|
|||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jgit.api.errors.CanceledException;
|
||||
import org.eclipse.jgit.diff.DiffAlgorithm.SupportedAlgorithm;
|
||||
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
|
||||
import org.eclipse.jgit.dircache.DirCacheIterator;
|
||||
import org.eclipse.jgit.errors.AmbiguousObjectException;
|
||||
import org.eclipse.jgit.errors.BinaryBlobException;
|
||||
import org.eclipse.jgit.errors.CancelledException;
|
||||
import org.eclipse.jgit.errors.CorruptObjectException;
|
||||
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
|
||||
import org.eclipse.jgit.errors.MissingObjectException;
|
||||
|
@ -580,7 +580,10 @@ private List<DiffEntry> detectRenames(List<DiffEntry> files)
|
|||
renameDetector.addAll(files);
|
||||
try {
|
||||
return renameDetector.compute(reader, progressMonitor);
|
||||
} catch (CanceledException e) {
|
||||
} catch (CancelledException e) {
|
||||
// TODO: consider propagating once bug 536323 is tackled
|
||||
// (making DiffEntry.scan() and DiffFormatter.scan() and
|
||||
// format() cancellable).
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,9 +55,9 @@
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jgit.api.errors.CanceledException;
|
||||
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
|
||||
import org.eclipse.jgit.diff.SimilarityIndex.TableFullException;
|
||||
import org.eclipse.jgit.errors.CancelledException;
|
||||
import org.eclipse.jgit.internal.JGitText;
|
||||
import org.eclipse.jgit.lib.AbbreviatedObjectId;
|
||||
import org.eclipse.jgit.lib.FileMode;
|
||||
|
@ -321,11 +321,7 @@ public void add(DiffEntry entry) {
|
|||
* file contents cannot be read from the repository.
|
||||
*/
|
||||
public List<DiffEntry> compute() throws IOException {
|
||||
try {
|
||||
return compute(NullProgressMonitor.INSTANCE);
|
||||
} catch (CanceledException e) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return compute(NullProgressMonitor.INSTANCE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -337,11 +333,13 @@ public List<DiffEntry> compute() throws IOException {
|
|||
* representing all files that have been changed.
|
||||
* @throws java.io.IOException
|
||||
* file contents cannot be read from the repository.
|
||||
* @throws CanceledException
|
||||
* @throws CancelledException
|
||||
* if rename detection was cancelled
|
||||
*/
|
||||
// TODO(ms): use org.eclipse.jgit.api.errors.CanceledException in next major
|
||||
// version
|
||||
public List<DiffEntry> compute(ProgressMonitor pm)
|
||||
throws IOException, CanceledException {
|
||||
throws IOException, CancelledException {
|
||||
if (!done) {
|
||||
try {
|
||||
return compute(objectReader, pm);
|
||||
|
@ -363,11 +361,13 @@ public List<DiffEntry> compute(ProgressMonitor pm)
|
|||
* representing all files that have been changed.
|
||||
* @throws java.io.IOException
|
||||
* file contents cannot be read from the repository.
|
||||
* @throws CanceledException
|
||||
* @throws CancelledException
|
||||
* if rename detection was cancelled
|
||||
*/
|
||||
// TODO(ms): use org.eclipse.jgit.api.errors.CanceledException in next major
|
||||
// version
|
||||
public List<DiffEntry> compute(ObjectReader reader, ProgressMonitor pm)
|
||||
throws IOException, CanceledException {
|
||||
throws IOException, CancelledException {
|
||||
final ContentSource cs = ContentSource.create(reader);
|
||||
return compute(new ContentSource.Pair(cs, cs), pm);
|
||||
}
|
||||
|
@ -383,11 +383,13 @@ public List<DiffEntry> compute(ObjectReader reader, ProgressMonitor pm)
|
|||
* representing all files that have been changed.
|
||||
* @throws java.io.IOException
|
||||
* file contents cannot be read from the repository.
|
||||
* @throws CanceledException
|
||||
* @throws CancelledException
|
||||
* if rename detection was cancelled
|
||||
*/
|
||||
// TODO(ms): use org.eclipse.jgit.api.errors.CanceledException in next major
|
||||
// version
|
||||
public List<DiffEntry> compute(ContentSource.Pair reader, ProgressMonitor pm)
|
||||
throws IOException, CanceledException {
|
||||
throws IOException, CancelledException {
|
||||
if (!done) {
|
||||
done = true;
|
||||
|
||||
|
@ -427,15 +429,15 @@ public void reset() {
|
|||
done = false;
|
||||
}
|
||||
|
||||
private void advanceOrCancel(ProgressMonitor pm) throws CanceledException {
|
||||
private void advanceOrCancel(ProgressMonitor pm) throws CancelledException {
|
||||
if (pm.isCancelled()) {
|
||||
throw new CanceledException(JGitText.get().renameCancelled);
|
||||
throw new CancelledException(JGitText.get().renameCancelled);
|
||||
}
|
||||
pm.update(1);
|
||||
}
|
||||
|
||||
private void breakModifies(ContentSource.Pair reader, ProgressMonitor pm)
|
||||
throws IOException, CanceledException {
|
||||
throws IOException, CancelledException {
|
||||
ArrayList<DiffEntry> newEntries = new ArrayList<>(entries.size());
|
||||
|
||||
pm.beginTask(JGitText.get().renamesBreakingModifies, entries.size());
|
||||
|
@ -462,7 +464,7 @@ private void breakModifies(ContentSource.Pair reader, ProgressMonitor pm)
|
|||
entries = newEntries;
|
||||
}
|
||||
|
||||
private void rejoinModifies(ProgressMonitor pm) throws CanceledException {
|
||||
private void rejoinModifies(ProgressMonitor pm) throws CancelledException {
|
||||
HashMap<String, DiffEntry> nameMap = new HashMap<>();
|
||||
ArrayList<DiffEntry> newAdded = new ArrayList<>(added.size());
|
||||
|
||||
|
@ -517,7 +519,7 @@ private int calculateModifyScore(ContentSource.Pair reader, DiffEntry d)
|
|||
|
||||
private void findContentRenames(ContentSource.Pair reader,
|
||||
ProgressMonitor pm)
|
||||
throws IOException, CanceledException {
|
||||
throws IOException, CancelledException {
|
||||
int cnt = Math.max(added.size(), deleted.size());
|
||||
if (getRenameLimit() == 0 || cnt <= getRenameLimit()) {
|
||||
SimilarityRenameDetector d;
|
||||
|
@ -535,7 +537,8 @@ private void findContentRenames(ContentSource.Pair reader,
|
|||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void findExactRenames(ProgressMonitor pm) throws CanceledException {
|
||||
private void findExactRenames(ProgressMonitor pm)
|
||||
throws CancelledException {
|
||||
pm.beginTask(JGitText.get().renamesFindingExact, //
|
||||
added.size() + added.size() + deleted.size()
|
||||
+ added.size() * deleted.size());
|
||||
|
@ -624,7 +627,7 @@ private void findExactRenames(ProgressMonitor pm) throws CanceledException {
|
|||
matrix[mNext] = SimilarityRenameDetector.encode(score, delIdx, addIdx);
|
||||
mNext++;
|
||||
if (pm.isCancelled()) {
|
||||
throw new CanceledException(
|
||||
throw new CancelledException(
|
||||
JGitText.get().renameCancelled);
|
||||
}
|
||||
}
|
||||
|
@ -717,7 +720,7 @@ private static DiffEntry bestPathMatch(DiffEntry src, List<DiffEntry> list) {
|
|||
@SuppressWarnings("unchecked")
|
||||
private HashMap<AbbreviatedObjectId, Object> populateMap(
|
||||
List<DiffEntry> diffEntries, ProgressMonitor pm)
|
||||
throws CanceledException {
|
||||
throws CancelledException {
|
||||
HashMap<AbbreviatedObjectId, Object> map = new HashMap<>();
|
||||
for (DiffEntry de : diffEntries) {
|
||||
Object old = map.put(id(de), de);
|
||||
|
|
|
@ -52,9 +52,9 @@
|
|||
import java.util.BitSet;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jgit.api.errors.CanceledException;
|
||||
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
|
||||
import org.eclipse.jgit.diff.SimilarityIndex.TableFullException;
|
||||
import org.eclipse.jgit.errors.CancelledException;
|
||||
import org.eclipse.jgit.internal.JGitText;
|
||||
import org.eclipse.jgit.lib.FileMode;
|
||||
import org.eclipse.jgit.lib.NullProgressMonitor;
|
||||
|
@ -129,7 +129,7 @@ void setRenameScore(int score) {
|
|||
renameScore = score;
|
||||
}
|
||||
|
||||
void compute(ProgressMonitor pm) throws IOException, CanceledException {
|
||||
void compute(ProgressMonitor pm) throws IOException, CancelledException {
|
||||
if (pm == null)
|
||||
pm = NullProgressMonitor.INSTANCE;
|
||||
|
||||
|
@ -144,7 +144,9 @@ void compute(ProgressMonitor pm) throws IOException, CanceledException {
|
|||
//
|
||||
for (--mNext; mNext >= 0; mNext--) {
|
||||
if (pm.isCancelled()) {
|
||||
throw new CanceledException(JGitText.get().renameCancelled);
|
||||
// TODO(ms): use org.eclipse.jgit.api.errors.CanceledException
|
||||
// in next major version
|
||||
throw new CancelledException(JGitText.get().renameCancelled);
|
||||
}
|
||||
long ent = matrix[mNext];
|
||||
int sIdx = srcFile(ent);
|
||||
|
@ -214,7 +216,7 @@ private static List<DiffEntry> compactDstList(List<DiffEntry> in) {
|
|||
}
|
||||
|
||||
private int buildMatrix(ProgressMonitor pm)
|
||||
throws IOException, CanceledException {
|
||||
throws IOException, CancelledException {
|
||||
// Allocate for the worst-case scenario where every pair has a
|
||||
// score that we need to consider. We might not need that many.
|
||||
//
|
||||
|
@ -240,7 +242,11 @@ private int buildMatrix(ProgressMonitor pm)
|
|||
|
||||
for (int dstIdx = 0; dstIdx < dsts.size(); dstIdx++) {
|
||||
if (pm.isCancelled()) {
|
||||
throw new CanceledException(JGitText.get().renameCancelled);
|
||||
// TODO(ms): use
|
||||
// org.eclipse.jgit.api.errors.CanceledException in next
|
||||
// major version
|
||||
throw new CancelledException(
|
||||
JGitText.get().renameCancelled);
|
||||
}
|
||||
|
||||
DiffEntry dstEnt = dsts.get(dstIdx);
|
||||
|
|
Loading…
Reference in New Issue