Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r23bb9654e96c06d79cd639a55e7d1af82cf678a8 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 23bb9654e96c06d79cd639a55e7d1af82cf678a8) @@ -368,6 +368,13 @@ } else { Long uid = assessmentPO.getUid(); PropertyUtils.copyProperties(assessmentPO, assessment); + + // copyProperties() above may result in "collection assigned to two objects in a session" exception + // Below we remove reference to one of Assessment objects, + // so maybe there will be just one object in session when save is done + // If this fails, we may have to evict the object from session using DAO + assessmentForm.setAssessment(null); + assessment = null; // set back UID assessmentPO.setUid(uid); @@ -471,7 +478,7 @@ questionForm.setContentFolderID(contentFolderID); questionForm.setDefaultGrade("1"); questionForm.setPenaltyFactor("0"); - questionForm.setAnswerRequired(false); + questionForm.setAnswerRequired(true); List optionList = new ArrayList(); for (int i = 0; i < AssessmentConstants.INITIAL_OPTIONS_NUMBER; i++) { Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r23bb9654e96c06d79cd639a55e7d1af82cf678a8 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 23bb9654e96c06d79cd639a55e7d1af82cf678a8) @@ -541,6 +541,13 @@ if (mode.isAuthor()) { Long uid = resourcePO.getUid(); PropertyUtils.copyProperties(resourcePO, resource); + + // copyProperties() above may result in "collection assigned to two objects in a session" exception + // Below we remove reference to one of Assessment objects, + // so maybe there will be just one object in session when save is done + // If this fails, we may have to evict the object from session using DAO + resourceForm.setResource(null); + resource = null; // get back UID resourcePO.setUid(uid); } else { // if it is Teacher, then just update basic tab content