Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -rb41c8a8bc5134e78088378360a37f3906fadb3de -rb76fdcd16012d4a2c05880ce0ed1cd3eea7965d0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision b41c8a8bc5134e78088378360a37f3906fadb3de) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision b76fdcd16012d4a2c05880ce0ed1cd3eea7965d0) @@ -447,16 +447,6 @@ public void releaseFromCache(Object object) { assessmentDao.releaseFromCache(object); -// if (object instanceof AssessmentQuestion) { -// AssessmentQuestion question = (AssessmentQuestion) object; -// for (QbOption option : question.getQbQuestion().getQbOptions()) { -// assessmentDao.releaseFromCache(option); -// } -// for (QbQuestionUnit unit : question.getQbQuestion().getUnits()) { -// assessmentDao.releaseFromCache(unit); -// } -// } - if (object instanceof QuestionReference) { QuestionReference reference = (QuestionReference) object; if (reference.getQuestion() != null) { @@ -2034,7 +2024,7 @@ } } else if (question.getType() == QbQuestion.TYPE_SHORT_ANSWER || question.getType() == QbQuestion.TYPE_NUMERICAL) { - Long submittedOptionUid = questionResult.getQbOption().getUid(); + Long submittedOptionUid = questionResult.getQbOption() == null ? null : questionResult.getQbOption().getUid(); if (submittedOptionUid != null) { Integer currentCount = summaryOfAnswers.get(submittedOptionUid); if (currentCount == null) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java =================================================================== diff -u -rb41c8a8bc5134e78088378360a37f3906fadb3de -rb76fdcd16012d4a2c05880ce0ed1cd3eea7965d0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java (.../AuthoringController.java) (revision b41c8a8bc5134e78088378360a37f3906fadb3de) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java (.../AuthoringController.java) (revision b76fdcd16012d4a2c05880ce0ed1cd3eea7965d0) @@ -236,17 +236,6 @@ Set oldReferences = (assessmentPO == null) ? new HashSet<>() : assessmentPO.getQuestionReferences(); - //TODO remove -// //allow using old and modified questions and references altogether -// if (mode.isTeacher()) { -// for (AssessmentQuestion question : oldQuestions) { -// service.releaseFromCache(question); -// } -// for (QuestionReference reference : oldReferences) { -// service.releaseFromCache(reference); -// } -// } - AssessmentUser assessmentUser = null; if (assessmentPO == null) { @@ -259,7 +248,7 @@ // but the items still exist in Hibernate cache, so we need to evict them now for (AssessmentQuestion question : oldQuestions) { service.releaseFromCache(question); - service.releaseFromCache(question.getQbQuestion()); +// service.releaseFromCache(question.getQbQuestion()); } for (QuestionReference reference : oldReferences) { service.releaseFromCache(reference); @@ -1254,7 +1243,6 @@ } question.setQbQuestionModified(service.isQbQuestionModified(baseLine, question.getQbQuestion())); - //TODO ????qbQuestionModified request.setAttribute("qbQuestionModified", question.getQbQuestionModified()); } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java =================================================================== diff -u -rb41c8a8bc5134e78088378360a37f3906fadb3de -rb76fdcd16012d4a2c05880ce0ed1cd3eea7965d0 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision b41c8a8bc5134e78088378360a37f3906fadb3de) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision b76fdcd16012d4a2c05880ce0ed1cd3eea7965d0) @@ -1024,23 +1024,28 @@ questionDto.setResponseSubmitted(questionResult.getFinishDate() != null); questionDto.setPenalty(questionResult.getPenalty()); questionDto.setQuestionFeedback(null); - for (OptionDTO optionDto : questionDto.getOptionDtos()) { - if (optionDto.getUid().equals(questionResult.getQbOption().getUid())) { - questionDto.setQuestionFeedback(optionDto.getFeedback()); - break; + questionDto.setAnswerBoolean(false); + + if ((questionDto.getType() == QbQuestion.TYPE_SHORT_ANSWER + || questionDto.getType() == QbQuestion.TYPE_NUMERICAL) + && questionResult.getQbOption() != null) { + + // required for showing right/wrong answers icons on results page correctly + for (OptionDTO optionDto : questionDto.getOptionDtos()) { + if (optionDto.getUid().equals(questionResult.getQbOption().getUid())) { + boolean isAnsweredCorrectly = optionDto.getMaxMark() > 0; + questionDto.setAnswerBoolean(isAnsweredCorrectly); + break; + } } - } - // required for showing right/wrong answers icons on results page correctly - if (questionDto.getType() == QbQuestion.TYPE_SHORT_ANSWER - || questionDto.getType() == QbQuestion.TYPE_NUMERICAL) { - boolean isAnsweredCorrectly = false; + + //question feedback for (OptionDTO optionDto : questionDto.getOptionDtos()) { if (optionDto.getUid().equals(questionResult.getQbOption().getUid())) { - isAnsweredCorrectly = optionDto.getMaxMark() > 0; + questionDto.setQuestionFeedback(optionDto.getFeedback()); break; } } - questionDto.setAnswerBoolean(isAnsweredCorrectly); } // required for markandpenalty area and if it's on - on question's summary page