Define a default CredentialsProvider
This permits applications to set their preferred credentials UI
implementation once, rather than needing to define it on every
single Transport instance they open.
Change-Id: I010550de1a6becab27f7aa5a9901df5a1c7e74bd
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialsProvider.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialsProvider.java
index d2130ad..ca83c69 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialsProvider.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/CredentialsProvider.java
@@ -63,6 +63,23 @@
* @see UsernamePasswordCredentialsProvider
*/
public abstract class CredentialsProvider {
+ private static volatile CredentialsProvider defaultProvider;
+
+ /** @return the default credentials provider, or null. */
+ public static CredentialsProvider getDefault() {
+ return defaultProvider;
+ }
+
+ /**
+ * Set the default credentials provider.
+ *
+ * @param p
+ * the new default provider, may be null to select no default.
+ */
+ public static void setDefault(CredentialsProvider p) {
+ defaultProvider = p;
+ }
+
/**
* Check if the provider can supply the necessary {@link CredentialItem}s.
*
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
index 5895f7f..69eea0c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
@@ -577,6 +577,7 @@ protected Transport(final Repository local, final URIish uri) {
this.local = local;
this.uri = uri;
this.checkFetchedObjects = tc.isFsckObjects();
+ this.credentialsProvider = CredentialsProvider.getDefault();
}
/**