1 /* Username/password prompt/save using very old org.tigris.subversion API.
2 
3    Compile against non-installed Subversion JavaHL build:
4 
5      javac -cp subversion/bindings/javahl/classes -d subversion/bindings/javahl/classes ExampleAuthnVeryOld.java
6 
7    Run:
8 
9      LD_LIBRARY_PATH=subversion/libsvn_auth_gnome_keyring/.libs java -cp subversion/bindings/javahl/classes -Djava.library.path=subversion/bindings/javahl/native/.libs ExampleAuthnVeryOld <URL> <config-dir>
10 
11  */
12 import org.tigris.subversion.javahl.*;
13 import java.io.Console;
14 
15 public class ExampleAuthnVeryOld {
16 
17     protected static class MyAuthn {
18 
getAuthn()19       public static PromptUserPassword3 getAuthn() {
20         return new MyUserPasswordCallback();
21       }
22 
23       private static class MyUserPasswordCallback
24       implements PromptUserPassword3 {
25 
26         private String _username = null;
27 
28         public String
getUsername()29         getUsername() {
30           System.out.println("getUsername");
31           return _username;
32         }
33 
34         private String _password = null;
35 
36         public String
getPassword()37         getPassword() {
38           System.out.println("getPassword");
39           return _password;
40         }
41 
42         public boolean
userAllowedSave()43         userAllowedSave() {
44           System.out.println("userAllowedSave");
45           return true;
46         }
47 
48         public boolean
askYesNo(String realm, String question, boolean yesIsDefault)49         askYesNo(String realm, String question, boolean yesIsDefault) {
50           System.out.println("askYesNo");
51           System.out.print(question + " (y/n): ");
52           String s = System.console().readLine();
53           return s.equals("y") ? true : s.equals("") ? yesIsDefault : false;
54         }
55 
56         public boolean
prompt(String realm, String username, boolean maySave)57         prompt(String realm, String username, boolean maySave) {
58           System.out.println("prompt");
59           System.out.println("Realm: " + realm);
60           String prompt;
61           if (username == null) {
62             System.out.print("Username: ");
63             _username = System.console().readLine();
64             prompt = "Password: ";
65           } else {
66             _username = username;
67             prompt = "Password for " + username + ": ";
68           }
69           _password = new String(System.console().readPassword(prompt));
70           return maySave;
71         }
72 
73         public boolean
prompt(String realm, String username)74         prompt(String realm, String username) {
75           System.out.println("prompt not implemented!");
76           return true;
77         }
78 
79         public String
askQuestion(String realm, String question, boolean showAnswer, boolean maySave)80         askQuestion(String realm,
81                     String question,
82                     boolean showAnswer,
83                     boolean maySave) {
84           System.out.println("askQuestion not implemented!");
85           return null;
86         }
87 
88         public String
askQuestion(String realm, String question, boolean showAnswer)89         askQuestion(String realm, String question, boolean showAnswer) {
90           System.out.println("askQuestion not implemented!");
91           return null;
92         }
93 
94         public int
askTrustSSLServer(String info, boolean allowPermanently)95         askTrustSSLServer(String info, boolean allowPermanently) {
96           System.out.println("askTrustSSLServer not implemented!");
97           return PromptUserPassword3.AcceptTemporary;
98         }
99       }
100     }
101 
main(String argv[])102   public static void main(String argv[]) {
103 
104     if (argv.length != 2) {
105       System.err.println("usage: ExampleAuthnVeryOld <URL> <config-dir>");
106       return;
107     }
108     SVNClientInterface client = new SVNClient();
109     client.setPrompt(MyAuthn.getAuthn());
110     try {
111       client.setConfigDirectory(argv[1]);
112       client.logMessages(argv[0], Revision.getInstance(0),
113                          Revision.getInstance(0), false, false, 0);
114     } catch (Exception e) {
115       e.printStackTrace();
116     }
117   }
118 }
119