1 package org
.argeo
.cms
.internal
.auth
;
3 import java
.io
.Console
;
4 import java
.io
.IOException
;
5 import java
.io
.PrintWriter
;
6 import java
.util
.Arrays
;
8 import javax
.security
.auth
.callback
.Callback
;
9 import javax
.security
.auth
.callback
.CallbackHandler
;
10 import javax
.security
.auth
.callback
.NameCallback
;
11 import javax
.security
.auth
.callback
.PasswordCallback
;
12 import javax
.security
.auth
.callback
.TextOutputCallback
;
13 import javax
.security
.auth
.callback
.UnsupportedCallbackException
;
15 /** Callback handler to be used with a command line UI. */
16 public class ConsoleCallbackHandler
implements CallbackHandler
{
19 public void handle(Callback
[] callbacks
) throws IOException
, UnsupportedCallbackException
{
20 Console console
= System
.console();
22 throw new IllegalStateException("No console available");
24 PrintWriter writer
= console
.writer();
25 for (int i
= 0; i
< callbacks
.length
; i
++) {
26 if (callbacks
[i
] instanceof TextOutputCallback
) {
27 TextOutputCallback callback
= (TextOutputCallback
) callbacks
[i
];
28 writer
.write(callback
.getMessage());
29 } else if (callbacks
[i
] instanceof NameCallback
) {
30 NameCallback callback
= (NameCallback
) callbacks
[i
];
31 writer
.write(callback
.getPrompt());
32 if (callback
.getDefaultName() != null)
33 writer
.write(" (" + callback
.getDefaultName() + ")");
35 String answer
= console
.readLine();
36 if (callback
.getDefaultName() != null && answer
.trim().equals(""))
37 callback
.setName(callback
.getDefaultName());
39 callback
.setName(answer
);
40 } else if (callbacks
[i
] instanceof PasswordCallback
) {
41 PasswordCallback callback
= (PasswordCallback
) callbacks
[i
];
42 writer
.write(callback
.getPrompt());
43 char[] answer
= console
.readPassword();
44 callback
.setPassword(answer
);
45 Arrays
.fill(answer
, ' ');
47 // else if (callbacks[i] instanceof LocaleChoice) {
48 // LocaleChoice callback = (LocaleChoice) callbacks[i];
49 // writer.write("Language");
50 // writer.write("\n");
51 // for (int j = 0; j < callback.getLocales().size(); j++) {
52 // Locale locale = callback.getLocales().get(j);
53 // writer.print(j + " : " + locale.getDisplayName() + "\n");
55 // writer.write("(" + callback.getDefaultIndex() + ") : ");
56 // String answer = console.readLine();
57 // if (answer.trim().equals(""))
58 // callback.setSelectedIndex(callback.getDefaultIndex());
60 // callback.setSelectedIndex(new Integer(answer.trim()));