Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/LearningAction.java =================================================================== diff -u -r616c884cc5e2b381c734ccd724470be5b2a7f1af -re7d362ffe67c9125bceb715a6abfafb9c31df502 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/LearningAction.java (.../LearningAction.java) (revision 616c884cc5e2b381c734ccd724470be5b2a7f1af) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/LearningAction.java (.../LearningAction.java) (revision e7d362ffe67c9125bceb715a6abfafb9c31df502) @@ -156,7 +156,8 @@ IResourceService service = getResourceService(); ResourceUser resourceUser = null; if ( mode != null && mode.isTeacher() ) { - //monitoring mode - user is specified in URL + // monitoring mode - user is specified in URL + // resourceUser may be null if the user was force completed. resourceUser = getSpecifiedUser(service, sessionId, WebUtil.readIntParam(request, AttributeNames.PARAM_USER_ID, false)); } else { @@ -169,7 +170,7 @@ resource = service.getResourceBySessionId(sessionId); //check whehter finish lock is on/off - boolean lock = resource.getLockWhenFinished() && resourceUser.isSessionFinished(); + boolean lock = resource.getLockWhenFinished() && resourceUser !=null && resourceUser.isSessionFinished(); //check whether there is only one resource item and run auto flag is true or not. @@ -189,18 +190,19 @@ // get notebook entry String entryText = new String(); - NotebookEntry notebookEntry = service.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, - ResourceConstants.TOOL_SIGNATURE, resourceUser.getUserId().intValue()); - - if (notebookEntry != null) { - entryText = notebookEntry.getEntry(); + if ( resourceUser != null ) { + NotebookEntry notebookEntry = service.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, + ResourceConstants.TOOL_SIGNATURE, resourceUser.getUserId().intValue()); + if (notebookEntry != null) { + entryText = notebookEntry.getEntry(); + } } //basic information sessionMap.put(ResourceConstants.ATTR_TITLE,resource.getTitle()); sessionMap.put(ResourceConstants.ATTR_RESOURCE_INSTRUCTION,resource.getInstructions()); sessionMap.put(ResourceConstants.ATTR_FINISH_LOCK,lock); - sessionMap.put(ResourceConstants.ATTR_USER_FINISHED, resourceUser.isSessionFinished()); + sessionMap.put(ResourceConstants.ATTR_USER_FINISHED, resourceUser !=null && resourceUser.isSessionFinished()); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID,sessionId); sessionMap.put(AttributeNames.ATTR_MODE,mode); @@ -244,7 +246,8 @@ } //set complete flag for display purpose - service.retrieveComplete(resourceItemList, resourceUser); + if ( resourceUser !=null ) + service.retrieveComplete(resourceItemList, resourceUser); sessionMap.put(ResourceConstants.ATTR_RESOURCE,resource); Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/web/NbLearnerStarterAction.java =================================================================== diff -u -rd162cd0f7ef5b8dea112a9a16f2cef3adad4f61d -re7d362ffe67c9125bceb715a6abfafb9c31df502 --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/web/NbLearnerStarterAction.java (.../NbLearnerStarterAction.java) (revision d162cd0f7ef5b8dea112a9a16f2cef3adad4f61d) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/web/NbLearnerStarterAction.java (.../NbLearnerStarterAction.java) (revision e7d362ffe67c9125bceb715a6abfafb9c31df502) @@ -176,6 +176,7 @@ nbService.addUser(toolSessionID, nbUser); } } else { + // user will not exist if force completed. userID = getUserIDFromURLCall(request); nbUser = nbService.retrieveNbUserBySession(userID, toolSessionID); readOnly = true; @@ -190,10 +191,7 @@ request.setAttribute("reflectInstructions", nbContent.getReflectInstructions()); request.setAttribute("reflectOnActivity", nbContent.getReflectOnActivity()); - Boolean userFinished = false; - if (nbUser.getUserStatus().equals(NoticeboardUser.COMPLETED)) { - userFinished = true; - } + Boolean userFinished = (nbUser!=null && NoticeboardUser.COMPLETED.equals(nbUser.getUserStatus())); request.setAttribute("userFinished", userFinished); /*