Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java,v diff -u -r1.6 -r1.7 --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java 20 Jun 2007 05:43:33 -0000 1.6 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java 5 Jul 2007 06:29:55 -0000 1.7 @@ -568,7 +568,7 @@ } if (!hasError) { - service.setRolesForUserOrganisation(user, org, roles); + service.setRolesForUserOrganisation(user, org.getOrganisationId(), roles); log.debug("added: "+login+" to: "+org.getName()+" with roles: "+roles); } } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgRoleSaveAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgRoleSaveAction.java,v diff -u -r1.12 -r1.13 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgRoleSaveAction.java 1 Nov 2006 22:52:56 -0000 1.12 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgRoleSaveAction.java 5 Jul 2007 06:29:55 -0000 1.13 @@ -83,8 +83,6 @@ Integer orgId = (Integer)userOrgRoleForm.getOrgId(); log.debug("orgId: "+orgId); - Organisation organisation = (Organisation)service.findById(Organisation.class, orgId); - request.setAttribute("org",orgId); request.getSession().removeAttribute("UserOrgRoleForm"); @@ -107,12 +105,14 @@ request.setAttribute("orgId", orgId); return mapping.findForward("userorg"); } - service.setRolesForUserOrganisation(user, organisation, (List)Arrays.asList(roleIds)); - if (organisation.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { - if (service.getUserOrganisation(bean.getUserId(), organisation.getParentOrganisation().getOrganisationId())==null) { - service.setRolesForUserOrganisation(user, organisation.getParentOrganisation(), (List)Arrays.asList(roleIds)); - } - } + service.setRolesForUserOrganisation(user, orgId, (List)Arrays.asList(roleIds)); + // FMALIKOFF 5/7/7 Commented out the following code that set the roles in the course if the current org is a class, as the logic + // is done in service.setRolesForUserOrganisation() + //if (organisation.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { + // if (service.getUserOrganisation(bean.getUserId(), organisation.getParentOrganisation().getOrganisationId())==null) { + // service.setRolesForUserOrganisation(user, organisation.getParentOrganisation(), (List)Arrays.asList(roleIds)); + // } + //} } return mapping.findForward("userlist"); } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserRolesSaveAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserRolesSaveAction.java,v diff -u -r1.5 -r1.6 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserRolesSaveAction.java 29 Nov 2006 01:55:53 -0000 1.5 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserRolesSaveAction.java 5 Jul 2007 06:29:55 -0000 1.6 @@ -100,7 +100,7 @@ return mapping.findForward("userroles"); } - service.setRolesForUserOrganisation(user, org, (List)Arrays.asList(roles)); + service.setRolesForUserOrganisation(user, orgId, (List)Arrays.asList(roles)); return mapping.findForward("userlist"); } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ImportV1ContentsSaveAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/Attic/ImportV1ContentsSaveAction.java,v diff -u -r1.4 -r1.5 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ImportV1ContentsSaveAction.java 14 Feb 2007 03:22:29 -0000 1.4 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ImportV1ContentsSaveAction.java 5 Jul 2007 06:29:55 -0000 1.5 @@ -169,16 +169,15 @@ if (v1user.getRoleIds().contains(V1UserDTO.ROLE_CORE)) { ArrayList roles = new ArrayList(); roles.add(Role.ROLE_SYSADMIN.toString()); - service.setRolesForUserOrganisation(user, service.getRootOrganisation(), roles); + service.setRolesForUserOrganisation(user, service.getRootOrganisation().getOrganisationId(), roles); } for (V1OrgRightDTO v1orgRight : v1user.getOrgRights()) { // the org was not selected to be imported if (orgIdsMap.get(v1orgRight.getOrgSid())==null) { continue; } List roles = getV2RoleIds(v1user.getRoleIds(), v1orgRight); - Organisation org = (Organisation)service.findById(Organisation.class, orgIdsMap.get(v1orgRight.getOrgSid())); - service.setRolesForUserOrganisation(user, org, roles); + service.setRolesForUserOrganisation(user, orgIdsMap.get(v1orgRight.getOrgSid()), roles); } } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java,v diff -u -r1.44 -r1.45 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java 11 Dec 2006 06:56:27 -0000 1.44 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java 5 Jul 2007 06:29:38 -0000 1.45 @@ -326,10 +326,10 @@ * Set the roles for the specified user and organisation using the roleIds in rolesList. * If userOrganisation exists, will also remove roles that are not in rolesList. * @param user - * @param org + * @param orgId * @param rolesList */ - public void setRolesForUserOrganisation(User user, Organisation org, List rolesList); + public void setRolesForUserOrganisation(User user, Integer organisationId, List rolesList); /** * Returns list of roles suitable for the given orgType. Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java,v diff -u -r1.76 -r1.77 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 14 Jun 2007 00:53:32 -0000 1.76 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 5 Jul 2007 06:29:38 -0000 1.77 @@ -651,10 +651,22 @@ /** * (non-Javadoc) - * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setRolesForUserOrganisation(org.lamsfoundation.lams.usermanagement.User, org.lamsfoundation.lams.usermanagement.Organisation, java.util.List) + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setRolesForUserOrganisation(org.lamsfoundation.lams.usermanagement.User, java.lang.Integer, java.util.List) */ - public void setRolesForUserOrganisation(User user, Organisation org, List rolesList) { + public void setRolesForUserOrganisation(User user, Integer organisationId, List rolesList) { + + // Don't pass in the org from the web layer. The import for roles doesn't use the HIbernate open session + // filter, so it may throw a lazy loading exception when it tried to access the org.UserOrganisations set + // if org has come from the web layer. + Organisation org = (Organisation) findById(Organisation.class, organisationId); + setRolesForUserOrganisation(user, org, rolesList); + } + + private void setRolesForUserOrganisation(User user, Organisation org, List rolesList) { + // The private version of setRolesForUserOrganisation can pass around the org safely as we are within + // our transation, so no lazy loading errors. This is more efficient for recursive calls to this method. + UserOrganisation uo = getUserOrganisation(user.getUserId(), org.getOrganisationId()); if (uo == null) { uo = new UserOrganisation(user, org);