diff --git a/org.eclipse.jgit/resources/META-INF/services/org.eclipse.jgit.transport.SshSessionFactory b/org.eclipse.jgit/resources/META-INF/services/org.eclipse.jgit.transport.SshSessionFactory new file mode 100644 index 000000000..1f8828457 --- /dev/null +++ b/org.eclipse.jgit/resources/META-INF/services/org.eclipse.jgit.transport.SshSessionFactory @@ -0,0 +1 @@ +org.eclipse.jgit.transport.DefaultSshSessionFactory diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/DefaultSshSessionFactory.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/DefaultSshSessionFactory.java index 063fb6b8b..afa0a11c2 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/DefaultSshSessionFactory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/DefaultSshSessionFactory.java @@ -24,8 +24,10 @@ import com.jcraft.jsch.Session; *
* If user interactivity is required by SSH (e.g. to obtain a password), the
* connection will immediately fail.
+ *
+ * @since 5.7
*/
-class DefaultSshSessionFactory extends JschConfigSessionFactory {
+public class DefaultSshSessionFactory extends JschConfigSessionFactory {
/** {@inheritDoc} */
@Override
protected void configure(OpenSshConfig.Host hc, Session session) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshSessionFactory.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshSessionFactory.java
index 906c4ed2d..ad04d424d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshSessionFactory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshSessionFactory.java
@@ -13,6 +13,8 @@ package org.eclipse.jgit.transport;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.Iterator;
+import java.util.ServiceLoader;
import org.eclipse.jgit.errors.TransportException;
import org.eclipse.jgit.lib.Constants;
@@ -31,8 +33,16 @@ import org.eclipse.jgit.util.SystemReader;
* SshSessionFactory for the duration of the period they are using the Session.
*/
public abstract class SshSessionFactory {
- private static SshSessionFactory INSTANCE = new DefaultSshSessionFactory();
+ private static SshSessionFactory INSTANCE = loadSshSessionFactory();
+ private static SshSessionFactory loadSshSessionFactory() {
+ ServiceLoader