From 12fa9c52aafedcafa723bdc5cf6d13e29d78c398 Mon Sep 17 00:00:00 2001 From: Brian Major <brian.major@nrc-cnrc.gc.ca> Date: Thu, 25 Sep 2014 15:24:47 -0700 Subject: [PATCH] s1651 - Fixed memory leak by closing userDAO connections --- .../ac/server/ldap/LdapGroupPersistence.java | 51 +++++++++++++++---- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupPersistence.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupPersistence.java index 8bdb18d2..4ef7ef53 100755 --- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupPersistence.java +++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/ldap/LdapGroupPersistence.java @@ -68,18 +68,19 @@ */ package ca.nrc.cadc.ac.server.ldap; +import java.security.AccessControlException; +import java.security.Principal; +import java.util.Collection; + +import org.apache.log4j.Logger; + import ca.nrc.cadc.ac.Group; import ca.nrc.cadc.ac.GroupAlreadyExistsException; import ca.nrc.cadc.ac.GroupNotFoundException; -import ca.nrc.cadc.ac.IdentityType; import ca.nrc.cadc.ac.Role; import ca.nrc.cadc.ac.UserNotFoundException; import ca.nrc.cadc.ac.server.GroupPersistence; import ca.nrc.cadc.net.TransientException; -import java.security.AccessControlException; -import java.security.Principal; -import java.util.Collection; -import org.apache.log4j.Logger; public class LdapGroupPersistence<T extends Principal> implements GroupPersistence<T> @@ -98,9 +99,11 @@ public class LdapGroupPersistence<T extends Principal> AccessControlException { LdapGroupDAO<T> groupDAO = null; + LdapUserDAO<T> userDAO = null; try { - groupDAO = new LdapGroupDAO<T>(config, new LdapUserDAO<T>(config)); + userDAO = new LdapUserDAO<T>(config); + groupDAO = new LdapGroupDAO<T>(config, userDAO); Group ret = groupDAO.getGroup(groupName); return ret; } @@ -110,6 +113,10 @@ public class LdapGroupPersistence<T extends Principal> { groupDAO.close(); } + if (userDAO != null) + { + userDAO.close(); + } } } @@ -118,9 +125,11 @@ public class LdapGroupPersistence<T extends Principal> AccessControlException, UserNotFoundException { LdapGroupDAO<T> groupDAO = null; + LdapUserDAO<T> userDAO = null; try { - groupDAO = new LdapGroupDAO<T>(config, new LdapUserDAO<T>(config)); + userDAO = new LdapUserDAO<T>(config); + groupDAO = new LdapGroupDAO<T>(config, userDAO); Group ret = groupDAO.addGroup(group); return ret; } @@ -130,6 +139,10 @@ public class LdapGroupPersistence<T extends Principal> { groupDAO.close(); } + if (userDAO != null) + { + userDAO.close(); + } } } @@ -138,9 +151,11 @@ public class LdapGroupPersistence<T extends Principal> AccessControlException { LdapGroupDAO<T> groupDAO = null; + LdapUserDAO<T> userDAO = null; try { - groupDAO = new LdapGroupDAO<T>(config, new LdapUserDAO<T>(config)); + userDAO = new LdapUserDAO<T>(config); + groupDAO = new LdapGroupDAO<T>(config, userDAO); groupDAO.deleteGroup(groupName); } finally @@ -149,6 +164,10 @@ public class LdapGroupPersistence<T extends Principal> { groupDAO.close(); } + if (userDAO != null) + { + userDAO.close(); + } } } @@ -157,9 +176,11 @@ public class LdapGroupPersistence<T extends Principal> AccessControlException, UserNotFoundException { LdapGroupDAO<T> groupDAO = null; + LdapUserDAO<T> userDAO = null; try { - groupDAO = new LdapGroupDAO<T>(config, new LdapUserDAO<T>(config)); + userDAO = new LdapUserDAO<T>(config); + groupDAO = new LdapGroupDAO<T>(config, userDAO); Group ret = groupDAO.modifyGroup(group); return ret; } @@ -169,6 +190,10 @@ public class LdapGroupPersistence<T extends Principal> { groupDAO.close(); } + if (userDAO != null) + { + userDAO.close(); + } } } @@ -177,9 +202,11 @@ public class LdapGroupPersistence<T extends Principal> TransientException, AccessControlException { LdapGroupDAO<T> groupDAO = null; + LdapUserDAO<T> userDAO = null; try { - groupDAO = new LdapGroupDAO<T>(config, new LdapUserDAO<T>(config)); + userDAO = new LdapUserDAO<T>(config); + groupDAO = new LdapGroupDAO<T>(config, userDAO); Collection<Group> ret = groupDAO.getGroups(userID, role, groupID); return ret; } @@ -189,6 +216,10 @@ public class LdapGroupPersistence<T extends Principal> { groupDAO.close(); } + if (userDAO != null) + { + userDAO.close(); + } } } -- GitLab