]> source.dussan.org Git - jgit.git/commitdiff
Remove ambiguous CheckoutConflictException 78/4178/8
authorTomasz Zarna <Tomasz.Zarna@pl.ibm.com>
Tue, 6 Mar 2012 21:43:25 +0000 (22:43 +0100)
committerMatthias Sohn <matthias.sohn@sap.com>
Tue, 6 Mar 2012 21:43:25 +0000 (22:43 +0100)
Checkout command should throw o.e.j.api.errors.CheckoutConflictException
which is a GitAPIException not o.e.j.errors.CheckoutConflictException.
PullCommand should rethrow the API exception as a JGitInternalException.

Bug: 356922
Change-Id: I865c4905997d9834c85a97fbe7287604daf99075
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CheckoutCommandTest.java
org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java
org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java

index 7d75a6cda956664238dfd40c5983edaaac31ed25..b1cac3a54d25a907a1e0af1a9b0b036e759eb7f1 100644 (file)
@@ -56,6 +56,7 @@ import java.io.FileInputStream;
 import java.io.IOException;
 
 import org.eclipse.jgit.api.CheckoutResult.Status;
+import org.eclipse.jgit.api.errors.CheckoutConflictException;
 import org.eclipse.jgit.api.errors.InvalidRefNameException;
 import org.eclipse.jgit.api.errors.JGitInternalException;
 import org.eclipse.jgit.api.errors.RefAlreadyExistsException;
@@ -127,7 +128,8 @@ public class CheckoutCommandTest extends RepositoryTestCase {
 
        @Test
        public void testCheckoutToNonExistingBranch() throws JGitInternalException,
-                       RefAlreadyExistsException, InvalidRefNameException {
+                       RefAlreadyExistsException, InvalidRefNameException,
+                       CheckoutConflictException {
                try {
                        git.checkout().setName("badbranch").call();
                        fail("Should have failed");
@@ -222,7 +224,7 @@ public class CheckoutCommandTest extends RepositoryTestCase {
        @Test
        public void testDetachedHeadOnCheckout() throws JGitInternalException,
                        RefAlreadyExistsException, RefNotFoundException,
-                       InvalidRefNameException, IOException {
+                       InvalidRefNameException, IOException, CheckoutConflictException {
                CheckoutCommand co = git.checkout();
                co.setName("master").call();
 
index efb686da592cd580d7ce5d4e78861a9aaeaaf5ca..6c6c911f238aa546516c2be81f90dd5fba5b997f 100644 (file)
@@ -62,7 +62,6 @@ import org.eclipse.jgit.api.MergeResult.MergeStatus;
 import org.eclipse.jgit.api.ResetCommand.ResetType;
 import org.eclipse.jgit.api.Status;
 import org.eclipse.jgit.api.errors.GitAPIException;
-import org.eclipse.jgit.api.errors.JGitInternalException;
 import org.eclipse.jgit.api.errors.NoFilepatternException;
 import org.eclipse.jgit.dircache.DirCache;
 import org.eclipse.jgit.dircache.DirCacheCheckout;
@@ -1015,7 +1014,7 @@ public class DirCacheCheckoutTest extends RepositoryTestCase {
                try {
                        checkout.call();
                        fail("Checkout exception not thrown");
-               } catch (JGitInternalException e) {
+               } catch (org.eclipse.jgit.api.errors.CheckoutConflictException e) {
                        CheckoutResult result = checkout.getResult();
                        assertNotNull(result);
                        assertNotNull(result.getConflictList());
index a41ff8454b87b139ceecb3e5fc6a1656e9a53718..6a5c0bc0e01c90fd8f7f8a1316a2660443417461 100644 (file)
@@ -51,6 +51,7 @@ import java.util.List;
 
 import org.eclipse.jgit.JGitText;
 import org.eclipse.jgit.api.CheckoutResult.Status;
+import org.eclipse.jgit.api.errors.CheckoutConflictException;
 import org.eclipse.jgit.api.errors.InvalidRefNameException;
 import org.eclipse.jgit.api.errors.JGitInternalException;
 import org.eclipse.jgit.api.errors.RefAlreadyExistsException;
@@ -62,7 +63,6 @@ import org.eclipse.jgit.dircache.DirCacheEditor.PathEdit;
 import org.eclipse.jgit.dircache.DirCacheEntry;
 import org.eclipse.jgit.dircache.DirCacheIterator;
 import org.eclipse.jgit.errors.AmbiguousObjectException;
-import org.eclipse.jgit.errors.CheckoutConflictException;
 import org.eclipse.jgit.lib.AnyObjectId;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.FileMode;
@@ -124,7 +124,8 @@ public class CheckoutCommand extends GitCommand<Ref> {
         * @return the newly created branch
         */
        public Ref call() throws JGitInternalException, RefAlreadyExistsException,
-                       RefNotFoundException, InvalidRefNameException {
+                       RefNotFoundException, InvalidRefNameException,
+                       CheckoutConflictException {
                checkCallable();
                processOptions();
                try {
@@ -164,10 +165,10 @@ public class CheckoutCommand extends GitCommand<Ref> {
                        dco.setFailOnConflict(true);
                        try {
                                dco.checkout();
-                       } catch (CheckoutConflictException e) {
+                       } catch (org.eclipse.jgit.errors.CheckoutConflictException e) {
                                status = new CheckoutResult(Status.CONFLICTS, dco
                                                .getConflicts());
-                               throw e;
+                               throw new CheckoutConflictException(dco.getConflicts(), e);
                        }
                        Ref ref = repo.getRef(name);
                        if (ref != null && !ref.getName().startsWith(Constants.R_HEADS))
index 35cccc6e502d5f6420e71fc519ec4aeba90806d4..ae73cacbe0d5e3c38cfe142f301959d3ce48128c 100644 (file)
@@ -62,6 +62,7 @@ import java.util.Map;
 
 import org.eclipse.jgit.JGitText;
 import org.eclipse.jgit.api.RebaseResult.Status;
+import org.eclipse.jgit.api.errors.CheckoutConflictException;
 import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.api.errors.InvalidRefNameException;
 import org.eclipse.jgit.api.errors.JGitInternalException;
@@ -676,6 +677,8 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
                        throw new JGitInternalException(e.getMessage(), e);
                } catch (InvalidRefNameException e) {
                        throw new JGitInternalException(e.getMessage(), e);
+               } catch (CheckoutConflictException e) {
+                       throw new JGitInternalException(e.getMessage(), e);
                }
        }
 
index 4d5bd1e03c22f8c4f338b16a3f70ff6411df5619..e3175071391c6f15698e5e00dbf96e08bdd374ab 100644 (file)
@@ -55,6 +55,8 @@ public class CheckoutConflictException extends GitAPIException {
         *            list of conflicting paths
         *
         * @param e
+        *            a {@link org.eclipse.jgit.errors.CheckoutConflictException}
+        *            exception
         */
        public CheckoutConflictException(List<String> conflictingPaths,
                        org.eclipse.jgit.errors.CheckoutConflictException e) {