public static ErrorInformation createFrom(final Throwable e) { if (e == null) { return null; } return new ErrorInformation( ExceptionHelper.getMessage(e), ExceptionHelper.formatted(e), ExceptionHelper.formatted(ExceptionHelper.getRootCause(e))); }
@Override public UserInformation login( final String username, final String password, final boolean rememberMe) throws LoginException { final Collection<UserService> services = this.userServiceTracker.getTracked().values(); if (services == null || services.isEmpty()) { throw new LoginException("No login service available"); } for (final UserService service : services) { try { // pass on to the next user service final UserInformation user = service.checkCredentials(username, password, rememberMe); if (user != null) { // got a login return user; } } catch (final Exception e) { if (ExceptionHelper.getRootCause(e) instanceof LoginException) { // this failure is ok throw e; } // this one it not and so we continue afterwards logger.warn("UserService failed", e); } } // end of the service list, nobody knowns this user throw new LoginException("Login error!", "Invalid username or password."); }