|
@@ -34,6 +34,7 @@ import java.util.StringTokenizer;
|
|
|
import javax.naming.CommunicationException;
|
|
|
import javax.naming.Context;
|
|
|
import javax.naming.NamingException;
|
|
|
+import javax.naming.OperationNotSupportedException;
|
|
|
import javax.naming.directory.DirContext;
|
|
|
import javax.naming.directory.InitialDirContext;
|
|
|
|
|
@@ -169,16 +170,21 @@ public class DefaultInitialDirContextFactory implements InitialDirContextFactory
|
|
|
|
|
|
try {
|
|
|
return new InitialDirContext(env);
|
|
|
- } catch (CommunicationException ce) {
|
|
|
- throw new LdapDataAccessException(messages.getMessage(
|
|
|
- "DefaultIntitalDirContextFactory.communicationFailure", "Unable to connect to LDAP server"), ce);
|
|
|
- } catch (javax.naming.AuthenticationException ae) {
|
|
|
- throw new BadCredentialsException(messages.getMessage("DefaultIntitalDirContextFactory.badCredentials",
|
|
|
- "Bad credentials"), ae);
|
|
|
- } catch (NamingException nx) {
|
|
|
+ } catch (NamingException ne) {
|
|
|
+ if ((ne instanceof javax.naming.AuthenticationException) ||
|
|
|
+ (ne instanceof OperationNotSupportedException)) {
|
|
|
+ throw new BadCredentialsException(messages.getMessage("DefaultIntitalDirContextFactory.badCredentials",
|
|
|
+ "Bad credentials"), ne);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ne instanceof CommunicationException) {
|
|
|
+ throw new LdapDataAccessException(messages.getMessage(
|
|
|
+ "DefaultIntitalDirContextFactory.communicationFailure", "Unable to connect to LDAP server"), ne);
|
|
|
+ }
|
|
|
+
|
|
|
throw new LdapDataAccessException(messages.getMessage(
|
|
|
"DefaultIntitalDirContextFactory.unexpectedException",
|
|
|
- "Failed to obtain InitialDirContext due to unexpected exception"), nx);
|
|
|
+ "Failed to obtain InitialDirContext due to unexpected exception"), ne);
|
|
|
}
|
|
|
}
|
|
|
|