diff options
author | Matthias Sohn <matthias.sohn@sap.com> | 2022-02-09 00:47:49 +0100 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2022-02-09 00:54:06 +0100 |
commit | 94a4d30b9551e1f4992cfb0afa2f5229cca3656a (patch) | |
tree | 048b71801c3707516250904193acfe0d46331805 /org.eclipse.jgit/src/org/eclipse/jgit | |
parent | a054f3ce76c2aaeada7fc9b84f23a3eceb2f7708 (diff) | |
parent | cec6db62af51a43e4c121f135a98de443ef0cd2c (diff) | |
download | jgit-94a4d30b9551e1f4992cfb0afa2f5229cca3656a.tar.gz jgit-94a4d30b9551e1f4992cfb0afa2f5229cca3656a.zip |
Merge branch 'stable-6.0'
* stable-6.0:
Stop initCause throwing in readAdvertisedRefs
Change-Id: I2266814c613fd81e9dfc722532ac3daa30ca66b5
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit')
3 files changed, 29 insertions, 13 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/errors/NoRemoteRepositoryException.java b/org.eclipse.jgit/src/org/eclipse/jgit/errors/NoRemoteRepositoryException.java index 58f70f5d4b..1dd976cec9 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/errors/NoRemoteRepositoryException.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/errors/NoRemoteRepositoryException.java @@ -29,4 +29,19 @@ public class NoRemoteRepositoryException extends TransportException { public NoRemoteRepositoryException(URIish uri, String s) { super(uri, s); } + + /** + * Constructs an exception indicating a repository does not exist. + * + * @param uri + * URI used for transport + * @param s + * message + * @param cause + * root cause exception + * @since 5.13 + */ + public NoRemoteRepositoryException(URIish uri, String s, Throwable cause) { + super(uri, s, cause); + } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java index 3826bf7401..09c559d7b5 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java @@ -210,9 +210,7 @@ abstract class BasePackConnection extends BaseConnection { try { line = readLine(); } catch (EOFException e) { - TransportException noRepo = noRepository(); - noRepo.initCause(e); - throw noRepo; + throw noRepository(e); } if (line != null && VERSION_1.equals(line)) { // Same as V0, except for this extra line. We shouldn't get @@ -567,11 +565,14 @@ abstract class BasePackConnection extends BaseConnection { * * Subclasses may override this method to provide better diagnostics. * + * @param cause + * root cause exception * @return a TransportException saying a repository cannot be found and * possibly why. */ - protected TransportException noRepository() { - return new NoRemoteRepositoryException(uri, JGitText.get().notFound); + protected TransportException noRepository(Throwable cause) { + return new NoRemoteRepositoryException(uri, JGitText.get().notFound, + cause); } /** diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java index eb1d2ac0a9..b87a85d934 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java @@ -139,7 +139,7 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen /** {@inheritDoc} */ @Override - protected TransportException noRepository() { + protected TransportException noRepository(Throwable cause) { // Sadly we cannot tell the "invalid URI" case from "push not allowed". // Opening a fetch connection can help us tell the difference, as any // useful repository is going to support fetch if it also would allow @@ -147,18 +147,18 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen // URI is wrong. Otherwise we can correctly state push isn't allowed // as the fetch connection opened successfully. // + TransportException te; try { transport.openFetch().close(); - } catch (NotSupportedException e) { - // Fall through. + te = new TransportException(uri, JGitText.get().pushNotPermitted); } catch (NoRemoteRepositoryException e) { // Fetch concluded the repository doesn't exist. - // - return e; - } catch (TransportException e) { - // Fall through. + te = e; + } catch (NotSupportedException | TransportException e) { + te = new TransportException(uri, JGitText.get().pushNotPermitted, e); } - return new TransportException(uri, JGitText.get().pushNotPermitted); + te.addSuppressed(cause); + return te; } /** |