} catch (ExecutionException e) {
// login failed
Throwable cause = e.getCause();
if (cause instanceof LoginRedirectException) {
// redirect
LoginRedirectException redirectException =
(LoginRedirectException) cause;
loginRedirect(redirectException.getNodeId(),
redirectException.getProtocolDescriptors());
} else if (cause instanceof LoginFailureException) {
loginFailure(cause.getMessage(), cause.getCause());
} else {
loginFailure(e.getMessage(), e.getCause());