1 /* Username/password prompt/save using 1.9 org.apache.subversion API.
3 Compile against non-installed Subversion JavaHL build:
5 javac -cp subversion/bindings/javahl/classes -d subversion/bindings/javahl/classes ExampleAuthn.java
9 LD_LIBRARY_PATH=subversion/libsvn_auth_gnome_keyring/.libs java -cp subversion/bindings/javahl/classes -Djava.library.path=subversion/bindings/javahl/native/.libs ExampleAuthn <URL> <config-dir>
12 import org
.apache
.subversion
.javahl
.*;
13 import org
.apache
.subversion
.javahl
.types
.*;
14 import org
.apache
.subversion
.javahl
.remote
.*;
15 import org
.apache
.subversion
.javahl
.callback
.*;
16 import java
.io
.Console
;
18 public class ExampleAuthn
{
20 protected static class MyAuthn
{
22 public static AuthnCallback
getAuthn() {
23 return new MyAuthnCallback();
26 private static class MyAuthnCallback
27 implements AuthnCallback
{
29 public UserPasswordResult
30 userPasswordPrompt(String realm
, String username
, boolean maySave
) {
31 System
.out
.println("userPasswordPrompt");
32 System
.out
.println("Realm: " + realm
);
34 if (username
== null) {
35 System
.out
.print("Username: ");
36 username
= System
.console().readLine();
37 prompt
= "Password: ";
39 prompt
= "Password for " + username
+ ": ";
41 String password
= new String(System
.console().readPassword(prompt
));
42 return new UserPasswordResult(username
, password
, maySave
);
46 allowStorePlaintextPassword(String realm
) {
47 System
.out
.println("allowStorePlaintextPassword");
48 System
.out
.println("Realm: " + realm
);
49 System
.out
.print("Store plaintext password on disk? (y/n): ");
50 String s
= System
.console().readLine();
51 return s
.equals("y") ?
true : false;
55 usernamePrompt(String realm
, boolean maySave
) {
56 System
.out
.println("usernamePrompt not implemented!");
61 allowStorePlaintextPassphrase(String realm
) {
62 System
.out
.println("allowStorePlaintextPassphrase not implemented!");
66 public SSLServerTrustResult
67 sslServerTrustPrompt(String realm
,
68 SSLServerCertFailures failures
,
69 SSLServerCertInfo info
,
71 System
.out
.println("sslServerTrustPrompt");
72 System
.out
.println("(r)eject or (t)emporary?");
73 String s
= System
.console().readLine();
74 return s
.equals("t") ? SSLServerTrustResult
.acceptTemporarily()
75 : SSLServerTrustResult
.reject();
78 public SSLClientCertResult
79 sslClientCertPrompt(String realm
, boolean maySave
) {
80 System
.out
.println("sslClientCertPrompt not implemented!");
84 public SSLClientCertPassphraseResult
85 sslClientCertPassphrasePrompt(String realm
, boolean maySave
) {
86 System
.out
.println("sslClientCertPassphrasePrompt not implemented!");
92 public static void main(String argv
[]) {
94 if (argv
.length
!= 2) {
95 System
.err
.println("usage: ExampleAuthn <URL> <config-dir>");
98 RemoteFactory factory
= new RemoteFactory();
99 factory
.setConfigDirectory(argv
[1]);
100 factory
.setPrompt(MyAuthn
.getAuthn());
102 ISVNRemote raSession
= factory
.openRemoteSession(argv
[0]);
103 raSession
.getReposUUID();
104 } catch (Exception e
) {