Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java =================================================================== diff -u -rf9992d0803d826cdd027b141fba56d1a2de77847 -ra849872468aa49fca801f113ec6a65a42f50297e --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision f9992d0803d826cdd027b141fba56d1a2de77847) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision a849872468aa49fca801f113ec6a65a42f50297e) @@ -14,9 +14,12 @@ import java.util.ArrayList; import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -46,6 +49,8 @@ import org.lamsfoundation.lams.util.CentralConstants; import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -172,7 +177,7 @@ } else if (method.equals(CentralConstants.METHOD_IMPORT)) { // ldId = new Long(ldIdStr); - Long ldID = importLearningDesign(filePath, username, serverId); + Long ldID = importLearningDesign(request, response, filePath, username, serverId); element = document.createElement(CentralConstants.ELEM_LEARNINGDESIGN); element.setAttribute(CentralConstants.PARAM_LEARNING_DESIGN_ID, ldID.toString()); @@ -424,7 +429,8 @@ } - public Long importLearningDesign(String filePath, String username, String serverId) + public Long importLearningDesign(HttpServletRequest request, HttpServletResponse response, + String filePath, String username, String serverId) throws RemoteException { List ldErrorMsgs = new ArrayList(); @@ -442,13 +448,27 @@ serverMap, username); user = userMap.getUser(); + + HttpSession ss = SessionManager.getSession(); + boolean createdTemporarySession = false; + if ( ss == null ) { + // import requires a session containing the user details, so dummy it up here. + SessionManager.startSession(request, response); + ss = SessionManager.getSession(); + ss.setAttribute(AttributeNames.USER, user.getUserDTO()); + createdTemporarySession = true; + } File designFile = new File(filePath); Object[] ldResults = exportService.importLearningDesign(designFile, user, workspaceFolderUid, toolsErrorMsgs); ldId = (Long) ldResults[0]; ldErrorMsgs = (List) ldResults[1]; toolsErrorMsgs = (List) ldResults[2]; + if ( createdTemporarySession ) { + SessionManager.endSession(); + } + return ldId; } catch (Exception e) { throw new RemoteException(e.getMessage(), e);