Index: lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookServlet.java =================================================================== diff -u -r19533db96ca9329f6c23dd8551bedbf31f2764bf -re33af7a574cd9451ee5634f1b3d46a648238bf28 --- lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookServlet.java (.../GradebookServlet.java) (revision 19533db96ca9329f6c23dd8551bedbf31f2764bf) +++ lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookServlet.java (.../GradebookServlet.java) (revision e33af7a574cd9451ee5634f1b3d46a648238bf28) @@ -154,13 +154,14 @@ // get user list, but no role info since there are no course info UserDbLoader userLoader = (UserDbLoader) bbPm.getLoader(UserDbLoader.TYPE); User user = userLoader.loadByUserName(userName); - + if (user == null) { throw new ServletException("User not found with userName:" + userName); } + Id userId = user.getId(); String serviceURL = LamsSecurityUtil.getServerAddress() + "/services/xml/LessonManager?" - + LamsSecurityUtil.generateAuthenticateParameters(ctx) + "&courseId=" + + LamsSecurityUtil.generateAuthenticateParameters(userName) + "&courseId=" + "&method=toolOutputsUser&lsId=" + lamsLessonIdParam + "&outputsUser=" + URLEncoder.encode(userName, "UTF8"); @@ -214,14 +215,14 @@ } - Lineitem lineitem = LineitemUtil.getLineitem(bbContentId, ctx, lamsLessonIdParam); + Lineitem lineitem = LineitemUtil.getLineitem(bbContentId, userId, lamsLessonIdParam); // store new score CourseMembershipDbLoader memLoader = (CourseMembershipDbLoader) bbPm .getLoader(CourseMembershipDbLoader.TYPE); ScoreDbLoader scoreLoader = (ScoreDbLoader) bbPm.getLoader(ScoreDbLoader.TYPE); ScoreDbPersister scorePersister = (ScoreDbPersister) bbPm.getPersister(ScoreDbPersister.TYPE); - CourseMembership courseMembership = memLoader.loadByCourseAndUserId(lineitem.getCourseId(), ctx.getUserId()); + CourseMembership courseMembership = memLoader.loadByCourseAndUserId(lineitem.getCourseId(), userId); Score currentScore = null; try { currentScore = scoreLoader.loadByCourseMembershipIdAndLineitemId(courseMembership.getId(), lineitem.getId()); Index: lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookSyncServlet.java =================================================================== diff -u -r19533db96ca9329f6c23dd8551bedbf31f2764bf -re33af7a574cd9451ee5634f1b3d46a648238bf28 --- lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookSyncServlet.java (.../GradebookSyncServlet.java) (revision 19533db96ca9329f6c23dd8551bedbf31f2764bf) +++ lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookSyncServlet.java (.../GradebookSyncServlet.java) (revision e33af7a574cd9451ee5634f1b3d46a648238bf28) @@ -135,8 +135,9 @@ return; } + String username = ctx.getUser().getUserName(); String serviceURL = LamsSecurityUtil.getServerAddress() + "/services/xml/LessonManager?" - + LamsSecurityUtil.generateAuthenticateParameters(ctx) + + LamsSecurityUtil.generateAuthenticateParameters(username) + "&method=gradebookMarksLesson&lsId=" + lamsLessonIdParam; URL url = new URL(serviceURL); @@ -172,7 +173,7 @@ Long lessonMaxPossibleMark = new Long(lesson.getAttributes().getNamedItem("lessonMaxPossibleMark").getNodeValue()); NodeList learnerResults = lesson.getChildNodes(); - Lineitem lineitem = LineitemUtil.getLineitem(bbContentId, ctx, lamsLessonIdParam); + Lineitem lineitem = LineitemUtil.getLineitem(bbContentId, ctx.getUserId(), lamsLessonIdParam); //in order to reduce DB queries we get scores and courseMemberships all at once BbList dbScores = scoreLoader.loadByLineitemId(lineitem.getId()); BbList courseMemberships = courseMemLoader.loadByCourseId(lineitem.getCourseId(), null, true); Index: lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsSecurityUtil.java =================================================================== diff -u -r19533db96ca9329f6c23dd8551bedbf31f2764bf -re33af7a574cd9451ee5634f1b3d46a648238bf28 --- lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsSecurityUtil.java (.../LamsSecurityUtil.java) (revision 19533db96ca9329f6c23dd8551bedbf31f2764bf) +++ lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsSecurityUtil.java (.../LamsSecurityUtil.java) (revision e33af7a574cd9451ee5634f1b3d46a648238bf28) @@ -49,7 +49,6 @@ import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; -import blackboard.data.user.User; import blackboard.persist.PersistenceException; import blackboard.platform.context.Context; import blackboard.portal.data.ExtraInfo; @@ -140,7 +139,7 @@ * Generates default * @throws UnsupportedEncodingException */ - public static String generateAuthenticateParameters(Context ctx) throws UnsupportedEncodingException { + public static String generateAuthenticateParameters(String username) throws UnsupportedEncodingException { String serverAddr = getServerAddress(); String serverId = getServerID(); String reqSrc = getReqSrc(); @@ -151,8 +150,6 @@ } String timestamp = new Long(System.currentTimeMillis()).toString(); - User user = ctx.getUser(); - String username = user.getUserName(); String hash = generateAuthenticationHash(timestamp, username, serverId); String authenticateParameters = "&serverId=" + serverId + "&datetime=" + timestamp + "&hashValue=" + hash @@ -176,7 +173,9 @@ //$request = "$CFG->lamslesson_serverurl/services/LearningDesignSVG?serverId=" . $CFG->lamslesson_serverid . "&datetime=" . $datetime_encoded . "&hashValue=" . //$hashvalue . "&username=" . $username . "&courseId=" . $courseid . "&courseName=" . urlencode($coursename) . "&mode=2&country=" . $country . "&lang=" . $lang . //"&ldId=" . $ldid . "&svgFormat=" . $format; - String url = serverAddr + "/services/LearningDesignSVG?" + generateAuthenticateParameters(ctx) + "&svgFormat=" + svgFormat; + String username = ctx.getUser().getUserName(); + String url = serverAddr + "/services/LearningDesignSVG?" + generateAuthenticateParameters(username) + + "&svgFormat=" + svgFormat; logger.info("LAMS Req: " + url); Index: lams_bb_integration/src/org/lamsfoundation/ld/util/LineitemUtil.java =================================================================== diff -u -r19533db96ca9329f6c23dd8551bedbf31f2764bf -re33af7a574cd9451ee5634f1b3d46a648238bf28 --- lams_bb_integration/src/org/lamsfoundation/ld/util/LineitemUtil.java (.../LineitemUtil.java) (revision 19533db96ca9329f6c23dd8551bedbf31f2764bf) +++ lams_bb_integration/src/org/lamsfoundation/ld/util/LineitemUtil.java (.../LineitemUtil.java) (revision e33af7a574cd9451ee5634f1b3d46a648238bf28) @@ -276,7 +276,7 @@ * @throws ServletException * @throws PersistenceException */ - public static Lineitem getLineitem(String bbContentId, Context ctx, String lamsLessonIdParam) throws ServletException, PersistenceException { + public static Lineitem getLineitem(String bbContentId, Id userId, String lamsLessonIdParam) throws ServletException, PersistenceException { BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); // get lineitemid from the storage (bbContentId -> lineitemid) @@ -291,7 +291,7 @@ CourseDbLoader cLoader = CourseDbLoader.Default.getInstance(); LineitemDbLoader lineitemLoader = LineitemDbLoader.Default.getInstance(); - List userCourses = cLoader.loadByUserId(ctx.getUserId()); + List userCourses = cLoader.loadByUserId(userId); // search for appropriate lineitem lineitem = null;