@WebMethod @Path("/setAssignmentGradeCommentforUser") @Produces("text/plain") @GET public String setAssignmentGradeCommentforUser( @WebParam(name = "sessionId", partName = "sessionId") @QueryParam("sessionId") String sessionId, @WebParam(name = "assignmentId", partName = "assignmentId") @QueryParam("assignmentId") String assignmentId, @WebParam(name = "userId", partName = "userId") @QueryParam("userId") String userId, @WebParam(name = "comment", partName = "comment") @QueryParam("comment") String comment, @WebParam(name = "grade", partName = "grade") @QueryParam("grade") String grade) { // establish the session try { Session s = establishSession(sessionId); LOG.info( "User " + s.getUserEid() + " setting assignment grade/comment for " + userId + " on " + assignmentId + " to " + grade); User user = userDirectoryService.getUserByEid(userId); if (user == null) { return "user does not exist"; } Assignment assign = assignmentService.getAssignment(assignmentId); String aReference = assign.getReference(); if (!securityService.unlock( AssignmentService.SECURE_GRADE_ASSIGNMENT_SUBMISSION, aReference)) { LOG.warn("User " + s.getUserEid() + " does not have permission to set assignment grades"); return "failure: no permission"; } LOG.info( "Setting assignment grade/comment for " + userId + " on " + assignmentId + " to " + grade); AssignmentSubmission sub = assignmentService.getSubmission(assignmentId, user); AssignmentSubmissionEdit asEdit = null; String context = assign.getContext(); if (sub == null) { asEdit = assignmentService.addSubmission(context, assignmentId, user.getId()); } else { asEdit = assignmentService.editSubmission(sub.getReference()); } asEdit.setFeedbackComment(comment); asEdit.setGrade(grade); asEdit.setGraded(true); asEdit.setGradeReleased(true); assignmentService.commitEdit(asEdit); // If necessary, update the assignment grade in the Gradebook String sReference = asEdit.getReference(); String associateGradebookAssignment = StringUtils.trimToNull( assign .getProperties() .getProperty(AssignmentService.PROP_ASSIGNMENT_ASSOCIATE_GRADEBOOK_ASSIGNMENT)); // update grade in gradebook integrateGradebook( aReference, associateGradebookAssignment, null, null, -1, null, sReference, "update", context); } catch (Exception e) { LOG.error( "WS setAssignmentGradeCommentforUser(): Exception while setting assignment grade/comment for " + userId + " on " + assignmentId + " to " + grade, e); return e.getClass().getName() + " : " + e.getMessage(); } return "success"; }