1 package org.jdesktop.swing.auth; 2 3 9 10 11 import java.util.*; 12 import java.awt.EventQueue ; 13 21 public abstract class LoginService { 22 23 private Vector<LoginListener> listenerList = new Vector<LoginListener>(); 24 25 private Thread loginThread; 26 27 31 private boolean synchronous; 32 private boolean canceled; 33 private String server; 34 35 36 public LoginService(String serverName) { 37 setServer(serverName); 38 } 39 40 51 public abstract boolean authenticate(String name, char[] password, String server); 52 53 60 public void cancelAuthentication() { 61 canceled = true; 62 EventQueue.invokeLater(new Runnable () { 63 public void run() { 64 fireLoginCanceled(new EventObject(this)); 65 } 66 }); 67 } 68 69 76 public Thread getLoginThread(Runnable runnable) { 77 return new Thread (runnable); 78 } 79 80 88 public void startAuthentication(final String user, final char[] password, final String server) { 89 canceled = false; 90 if (getSynchronous()) { 91 if (authenticate(user,password,server)) { 92 fireLoginSucceeded(new EventObject(this)); 93 } else { 94 fireLoginFailed(new EventObject(this)); 95 } 96 } else { 97 Runnable runnable = new Runnable () { 98 public void run() { 99 final boolean result = authenticate(user,password,server); 100 if (!canceled) { 101 EventQueue.invokeLater(new Runnable () { 102 public void run() { 103 if (result) { 104 fireLoginSucceeded(new EventObject(this)); 105 } 106 else { 107 fireLoginFailed(new EventObject(this)); 108 } 109 } 110 }); 111 } 112 } 113 }; 114 loginThread = getLoginThread(runnable) ; 115 loginThread.start(); 116 } 117 } 118 119 122 public boolean getSynchronous() { 123 return synchronous; 124 } 125 130 public void setSynchronous(boolean synchronous) { 131 this.synchronous = synchronous; 132 } 133 134 139 140 public void addLoginListener(LoginListener listener) { 141 listenerList.add(listener); 142 } 143 144 149 public void removeLoginListener(LoginListener listener) { 150 listenerList.remove(listener); 151 } 152 153 154 void fireLoginSucceeded(final EventObject source) { 155 Iterator iter = listenerList.iterator(); 156 while (iter.hasNext()) { 157 LoginListener listener = (LoginListener) iter.next(); 158 listener.loginSucceeded(source); 159 } 160 } 161 162 void fireLoginFailed(final EventObject source) { 163 Iterator iter = listenerList.iterator(); 164 while (iter.hasNext()) { 165 LoginListener listener = (LoginListener) iter.next(); 166 listener.loginFailed(source); 167 } 168 } 169 170 void fireLoginCanceled(final EventObject source) { 171 Iterator iter = listenerList.iterator(); 172 while (iter.hasNext()) { 173 LoginListener listener = (LoginListener) iter.next(); 174 listener.loginCanceled(source); 175 } 176 } 177 178 179 182 public String getServer() { 183 return server; 184 } 185 188 public void setServer(String server) { 189 this.server = server; 190 } 191 } 192 | Popular Tags |