From: Matthias Sohn Date: Tue, 7 Aug 2018 19:33:24 +0000 (+0200) Subject: Fix API breakage introduced by da254106 X-Git-Tag: v5.1.0.201808281540-m3~42 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fchanges%2F72%2F127172%2F5;p=jgit.git 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 Signed-off-by: Thomas Wolf --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java index 8234941668..9cec645679 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java @@ -52,7 +52,6 @@ import java.util.Collection; 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 @@ public class BlameGenerator implements AutoCloseable { 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 @@ public class BlameGenerator implements AutoCloseable { 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 @@ public class BlameGenerator implements AutoCloseable { 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 @@ public class BlameGenerator implements AutoCloseable { } private DiffEntry findRename(RevCommit parent, RevCommit commit, - PathFilter path) throws IOException, CanceledException { + PathFilter path) throws IOException { if (renameDetector == null) return null; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java index b70ff4b2be..e7ad0bc40d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java @@ -62,12 +62,12 @@ import java.util.Collection; 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 @@ public class DiffFormatter implements AutoCloseable { 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(); } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java index 8336cf249f..772fbb5ffe 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/RenameDetector.java @@ -55,9 +55,9 @@ import java.util.Comparator; 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 class RenameDetector { * file contents cannot be read from the repository. */ public List compute() throws IOException { - try { - return compute(NullProgressMonitor.INSTANCE); - } catch (CanceledException e) { - return Collections.emptyList(); - } + return compute(NullProgressMonitor.INSTANCE); } /** @@ -337,11 +333,13 @@ public class RenameDetector { * 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 compute(ProgressMonitor pm) - throws IOException, CanceledException { + throws IOException, CancelledException { if (!done) { try { return compute(objectReader, pm); @@ -363,11 +361,13 @@ public class RenameDetector { * 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 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 class RenameDetector { * 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 compute(ContentSource.Pair reader, ProgressMonitor pm) - throws IOException, CanceledException { + throws IOException, CancelledException { if (!done) { done = true; @@ -427,15 +429,15 @@ public class RenameDetector { 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 newEntries = new ArrayList<>(entries.size()); pm.beginTask(JGitText.get().renamesBreakingModifies, entries.size()); @@ -462,7 +464,7 @@ public class RenameDetector { entries = newEntries; } - private void rejoinModifies(ProgressMonitor pm) throws CanceledException { + private void rejoinModifies(ProgressMonitor pm) throws CancelledException { HashMap nameMap = new HashMap<>(); ArrayList newAdded = new ArrayList<>(added.size()); @@ -517,7 +519,7 @@ public class RenameDetector { 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 @@ public class RenameDetector { } @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 @@ public class RenameDetector { matrix[mNext] = SimilarityRenameDetector.encode(score, delIdx, addIdx); mNext++; if (pm.isCancelled()) { - throw new CanceledException( + throw new CancelledException( JGitText.get().renameCancelled); } } @@ -717,7 +720,7 @@ public class RenameDetector { @SuppressWarnings("unchecked") private HashMap populateMap( List diffEntries, ProgressMonitor pm) - throws CanceledException { + throws CancelledException { HashMap map = new HashMap<>(); for (DiffEntry de : diffEntries) { Object old = map.put(id(de), de); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java index 71e391c737..d8a05c34ea 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityRenameDetector.java @@ -52,9 +52,9 @@ import java.util.Arrays; 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 @@ class SimilarityRenameDetector { 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 @@ class SimilarityRenameDetector { // 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 @@ class SimilarityRenameDetector { } 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 @@ class SimilarityRenameDetector { 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);