aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2022-02-09 00:47:49 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2022-02-09 00:54:06 +0100
commit94a4d30b9551e1f4992cfb0afa2f5229cca3656a (patch)
tree048b71801c3707516250904193acfe0d46331805 /org.eclipse.jgit/src/org/eclipse/jgit
parenta054f3ce76c2aaeada7fc9b84f23a3eceb2f7708 (diff)
parentcec6db62af51a43e4c121f135a98de443ef0cd2c (diff)
downloadjgit-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')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/errors/NoRemoteRepositoryException.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java16
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;
}
/**