From fa3332aa75a5a747a48afa71fd6c21e949d59ad2 Mon Sep 17 00:00:00 2001 From: Adrian Damian <Adrian.Damian@nrc-cnrc.gc.ca> Date: Thu, 25 Sep 2014 10:11:36 -0700 Subject: [PATCH] Added better error messaging --- .../nrc/cadc/ac/server/ldap/LdapConfig.java | 4 ++- .../ca/nrc/cadc/ac/server/ldap/LdapDAO.java | 17 ++++------ .../nrc/cadc/ac/server/ldap/LdapGroupDAO.java | 31 +++++++++---------- .../nrc/cadc/ac/server/ldap/LdapUserDAO.java | 12 +++---- .../cadc/ac/server/ldap/LdapGroupDAOTest.java | 4 ++- 5 files changed, 33 insertions(+), 35 deletions(-) diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapConfig.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapConfig.java index 9157966d..817b3e84 100755 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapConfig.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapConfig.java @@ -68,12 +68,14 @@ */ package ca.nrc.cadc.ac.server.ldap; -import ca.nrc.cadc.util.StringUtil; import java.io.IOException; import java.net.URL; import java.util.Properties; + import org.apache.log4j.Logger; +import ca.nrc.cadc.util.StringUtil; + public class LdapConfig { private static final Logger logger = Logger.getLogger(LdapConfig.class); diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapDAO.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapDAO.java index 287f9d28..c33961f3 100755 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapDAO.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapDAO.java @@ -196,21 +196,16 @@ public abstract class LdapDAO * @param errorMsg * @throws TransientException */ - protected static void checkLdapResult(ResultCode code, String errorMsg) + protected static void checkLdapResult(ResultCode code) throws TransientException { - String msg = ""; - if (errorMsg != null) - { - msg = "(" + errorMsg + ")"; - } if (code == ResultCode.INSUFFICIENT_ACCESS_RIGHTS) { - throw new AccessControlException("Not authorized " + msg); + throw new AccessControlException("Not authorized "); } else if (code == ResultCode.INVALID_CREDENTIALS) { - throw new AccessControlException("Invalid credentials " + msg); + throw new AccessControlException("Invalid credentials "); } else if ((code == ResultCode.SUCCESS) || (code == ResultCode.NO_SUCH_OBJECT) ) { @@ -218,16 +213,16 @@ public abstract class LdapDAO } else if (code == ResultCode.PARAM_ERROR) { - throw new IllegalArgumentException("Error in Ldap parameters " + msg); + throw new IllegalArgumentException("Error in Ldap parameters "); } else if (code == ResultCode.BUSY || code == ResultCode.CONNECT_ERROR ) { - throw new TransientException("Connection problems " + msg ); + throw new TransientException("Connection problems "); } else { - throw new RuntimeException("Ldap error" + msg); + throw new RuntimeException("Ldap error (" + code.getName() + ")"); } } diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java index 3223b21b..6b0566c6 100755 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAO.java @@ -173,7 +173,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO group.description, group.getUserMembers(), group.getGroupMembers()); - LdapDAO.checkLdapResult(result.getResultCode(), null); + LdapDAO.checkLdapResult(result.getResultCode()); // add group to admin groups tree result = addGroup(getAdminGroupDN(group.getID()), @@ -181,7 +181,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO group.description, group.getUserAdmins(), group.getGroupAdmins()); - LdapDAO.checkLdapResult(result.getResultCode(), null); + LdapDAO.checkLdapResult(result.getResultCode()); try { @@ -195,8 +195,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } catch (LDAPException e) { - LdapDAO.checkLdapResult(e.getResultCode(), - e.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); throw new RuntimeException("Unexpected LDAP exception", e); } } @@ -302,7 +301,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } catch (LDAPException e) { - LdapDAO.checkLdapResult(e.getResultCode(), e.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); throw new RuntimeException("Unexpected LDAP exception", e); } } @@ -391,13 +390,13 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } else { - LdapDAO.checkLdapResult(e.getResultCode(), e.getMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); } } if (searchResult.getEntryCount() == 0) { - LdapDAO.checkLdapResult(searchResult.getResultCode(), null); + LdapDAO.checkLdapResult(searchResult.getResultCode()); //access denied String msg = "Not authorized to access " + groupID; logger.debug(msg); @@ -485,7 +484,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } catch (LDAPException e1) { - LdapDAO.checkLdapResult(e1.getResultCode(), e1.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e1.getResultCode()); throw new GroupNotFoundException("Not found " + groupID); } } @@ -573,7 +572,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO new ProxiedAuthorizationV2RequestControl( "dn:" + getSubjectDN().toNormalizedString())); LdapDAO.checkLdapResult(getConnection(). - modify(modifyRequest).getResultCode(), null); + modify(modifyRequest).getResultCode()); // modify the group itself now modifyRequest = new ModifyRequest(getGroupDN(group.getID()), mods); @@ -582,11 +581,11 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO new ProxiedAuthorizationV2RequestControl( "dn:" + getSubjectDN().toNormalizedString())); LdapDAO.checkLdapResult(getConnection(). - modify(modifyRequest).getResultCode(), null); + modify(modifyRequest).getResultCode()); } catch (LDAPException e1) { - LdapDAO.checkLdapResult(e1.getResultCode(), e1.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e1.getResultCode()); } try { @@ -655,11 +654,11 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO new ProxiedAuthorizationV2RequestControl( "dn:" + getSubjectDN().toNormalizedString())); LDAPResult result = getConnection().modify(modifyRequest); - LdapDAO.checkLdapResult(result.getResultCode(), null); + LdapDAO.checkLdapResult(result.getResultCode()); } catch (LDAPException e1) { - LdapDAO.checkLdapResult(e1.getResultCode(), e1.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e1.getResultCode()); } try @@ -761,7 +760,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } catch (LDAPException e1) { - LdapDAO.checkLdapResult(e1.getResultCode(), e1.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e1.getResultCode()); } return groupDNs; } @@ -851,7 +850,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } catch (LDAPException e) { - LdapDAO.checkLdapResult(e.getResultCode(), e.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); } throw new IllegalArgumentException(groupID + " not a valid group ID"); } @@ -869,7 +868,7 @@ public class LdapGroupDAO<T extends Principal> extends LdapDAO } catch (LDAPException e) { - LdapDAO.checkLdapResult(e.getResultCode(), e.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); } throw new IllegalArgumentException(groupID + " not a valid group ID"); } diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java index 88e16fee..c6b9221c 100755 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapUserDAO.java @@ -166,7 +166,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO } catch (LDAPException e) { - LdapDAO.checkLdapResult(e.getResultCode(), e.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); } if (searchResult == null) @@ -196,7 +196,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO * @return Collection of Group instances. * * @throws UserNotFoundException when the user is not found. - * @throws TransientException If an temporary, unexpected problem occurred. + * @throws TransientException If an temporary, unexpected problem occurred., e.getMessage( * @throws AccessControlException If the operation is not permitted. */ public Collection<DN> getUserGroups(final T userID, final boolean isAdmin) @@ -257,7 +257,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO } catch (LDAPException e) { - LdapDAO.checkLdapResult(e.getResultCode(), e.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); } return groupDNs; } @@ -312,7 +312,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO } catch (LDAPException e) { - LdapDAO.checkLdapResult(e.getResultCode(), e.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); } return false; } @@ -347,7 +347,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO // } // catch (LDAPException e) // { -// LdapDAO.checkLdapResult(e.getResultCode(), e.getDiagnosticMessage()); +// LdapDAO.checkLdapResult(e.getResultCode()); // throw new RuntimeException("Unexpected LDAP exception", e); // } // } @@ -423,7 +423,7 @@ public class LdapUserDAO<T extends Principal> extends LdapDAO } catch (LDAPException e) { - LdapDAO.checkLdapResult(e.getResultCode(), e.getDiagnosticMessage()); + LdapDAO.checkLdapResult(e.getResultCode()); } diff --git a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAOTest.java b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAOTest.java index 7914b367..e29da595 100644 --- a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAOTest.java +++ b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/ldap/LdapGroupDAOTest.java @@ -292,6 +292,7 @@ public class LdapGroupDAOTest testGroup2.getUserMembers().add(daoTestUser2); testGroup2 = getGroupDAO().addGroup(testGroup2); log.debug("add group: " + testGroup2ID); + Thread.sleep(1000); //sleep to let memberof plugin in LDAP do its work } catch (Exception e) { @@ -392,6 +393,7 @@ public class LdapGroupDAOTest testGroup2.getUserAdmins().add(daoTestUser2); testGroup2 = getGroupDAO().addGroup(testGroup2); log.debug("add group: " + testGroup2ID); + Thread.sleep(1000); // sleep to let memberof plugin do its work } catch (Exception e) { @@ -406,7 +408,7 @@ public class LdapGroupDAOTest public Object run() throws Exception { try - { + { Collection<Group> groups = getGroupDAO().getGroups(daoTestUser2.getUserID(), Role.ADMIN, null); -- GitLab