From e0dc1a19660ebdac272d3ef7a09c2122fee4000e Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 10 Dec 2012 16:31:37 +0000 Subject: [PATCH] correctly inform users what happened with failing ldap git-svn-id: https://svn.apache.org/repos/asf/archiva/redback/redback-core/trunk@1419566 13f79535-47bb-0310-9956-ffa450edef68 --- .../redback/users/ldap/LdapUserManager.java | 78 +++++++++++++++---- 1 file changed, 64 insertions(+), 14 deletions(-) diff --git a/redback-users/redback-users-providers/redback-users-ldap/src/main/java/org/apache/archiva/redback/users/ldap/LdapUserManager.java b/redback-users/redback-users-providers/redback-users-ldap/src/main/java/org/apache/archiva/redback/users/ldap/LdapUserManager.java index 8d2ed7e8..db66e7ba 100644 --- a/redback-users/redback-users-providers/redback-users-ldap/src/main/java/org/apache/archiva/redback/users/ldap/LdapUserManager.java +++ b/redback-users/redback-users-providers/redback-users-ldap/src/main/java/org/apache/archiva/redback/users/ldap/LdapUserManager.java @@ -25,6 +25,7 @@ import org.apache.archiva.redback.common.ldap.UserMapper; import org.apache.archiva.redback.users.AbstractUserManager; import org.apache.archiva.redback.users.User; import org.apache.archiva.redback.users.UserManager; +import org.apache.archiva.redback.users.UserManagerException; import org.apache.archiva.redback.users.UserNotFoundException; import org.apache.archiva.redback.common.ldap.MappingException; import org.apache.archiva.redback.common.ldap.connection.LdapConnection; @@ -45,22 +46,21 @@ import java.util.List; /** * @author jesse - * */ -@Service( "userManager#ldap" ) +@Service("userManager#ldap") public class LdapUserManager extends AbstractUserManager implements UserManager { @Inject - @Named( value = "ldapConnectionFactory#configurable" ) + @Named(value = "ldapConnectionFactory#configurable") private LdapConnectionFactory connectionFactory; @Inject private LdapController controller; @Inject - @Named( value = "userMapper#ldap" ) + @Named(value = "userMapper#ldap") private UserMapper mapper; @Inject @@ -75,15 +75,30 @@ public class LdapUserManager public User addUser( User user ) { - return addUser( user, true ); + try + { + return addUser( user, true ); + } + catch ( LdapException e ) + { + throw new UserManagerException( e.getMessage(), e ); + } } public void addUserUnchecked( User user ) { - addUser( user, false ); + try + { + addUser( user, false ); + } + catch ( LdapException e ) + { + throw new UserManagerException( e.getMessage(), e ); + } } private User addUser( User user, boolean checked ) + throws LdapException { if ( user == null ) { @@ -135,10 +150,10 @@ public class LdapUserManager { clearFromCache( username ); } - - LdapConnection ldapConnection = getLdapConnection(); + LdapConnection ldapConnection = null; try { + ldapConnection = getLdapConnection(); DirContext context = ldapConnection.getDirContext(); controller.removeUser( username, context ); } @@ -146,6 +161,10 @@ public class LdapUserManager { log.error( "Failed to delete user: " + username, e ); } + catch ( LdapException e ) + { + throw new UserManagerException( e.getMessage(), e ); + } finally { closeLdapConnection( ldapConnection ); @@ -179,9 +198,11 @@ public class LdapUserManager return ldapUser; } - LdapConnection ldapConnection = getLdapConnection(); + LdapConnection ldapConnection = null; + try { + ldapConnection = getLdapConnection(); DirContext context = ldapConnection.getDirContext(); User user = controller.getUser( username, context ); if ( user == null ) @@ -201,6 +222,10 @@ public class LdapUserManager log.error( "Failed to find user: {}", username, e ); return null; } + catch ( LdapException e ) + { + throw new UserManagerException( e.getMessage(), e ); + } catch ( MappingException e ) { log.error( "Failed to map user: {}", username, e ); @@ -247,9 +272,11 @@ public class LdapUserManager return Collections.emptyList(); } - LdapConnection ldapConnection = getLdapConnection(); + LdapConnection ldapConnection = null; + try { + ldapConnection = getLdapConnection(); DirContext context = ldapConnection.getDirContext(); return controller.getUsersByQuery( (LdapUserQuery) query, context ); } @@ -263,6 +290,10 @@ public class LdapUserManager log.error( "Failed to map user", e ); return null; } + catch ( LdapException e ) + { + throw new UserManagerException( e.getMessage(), e ); + } finally { closeLdapConnection( ldapConnection ); @@ -291,9 +322,11 @@ public class LdapUserManager */ public List getUsers() { - LdapConnection ldapConnection = getLdapConnection(); + LdapConnection ldapConnection = null; + try { + ldapConnection = getLdapConnection(); DirContext context = ldapConnection.getDirContext(); List users = new ArrayList( controller.getUsers( context ) ); //We add the guest user because it isn't in LDAP @@ -311,6 +344,10 @@ public class LdapUserManager } return users; } + /*catch ( LdapException e ) + { + throw new UserManagerException( e.getMessage(), e ); + }*/ catch ( Exception e ) { log.error( e.getMessage(), e ); @@ -341,9 +378,11 @@ public class LdapUserManager clearFromCache( user.getUsername() ); } - LdapConnection ldapConnection = getLdapConnection(); + LdapConnection ldapConnection = null; + try { + ldapConnection = getLdapConnection(); DirContext context = ldapConnection.getDirContext(); controller.updateUser( user, context ); } @@ -355,6 +394,10 @@ public class LdapUserManager { log.error( "Failed to update user: " + user.getUsername(), e ); } + catch ( LdapException e ) + { + throw new UserManagerException( e.getMessage(), e ); + } finally { closeLdapConnection( ldapConnection ); @@ -378,9 +421,11 @@ public class LdapUserManager return true; } - LdapConnection ldapConnection = getLdapConnection(); + LdapConnection ldapConnection = null; + try { + ldapConnection = getLdapConnection(); DirContext context = ldapConnection.getDirContext(); return controller.userExists( principal, context ); } @@ -389,6 +434,10 @@ public class LdapUserManager log.warn( "Failed to search for user: " + principal, e ); return false; } + catch ( LdapException e ) + { + throw new UserManagerException( e.getMessage(), e ); + } finally { closeLdapConnection( ldapConnection ); @@ -396,6 +445,7 @@ public class LdapUserManager } private LdapConnection getLdapConnection() + throws LdapException { try { @@ -404,7 +454,7 @@ public class LdapUserManager catch ( LdapException e ) { log.warn( "failed to get a ldap connection " + e.getMessage(), e ); - throw new RuntimeException( "failed to get a ldap connection " + e.getMessage(), e ); + throw new LdapException( "failed to get a ldap connection " + e.getMessage(), e ); } }