Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -r8aded0b18a5a7712622ae56f38923fa297449977 -r7cce0b08560ba7d6ce7fa6470950f065bbb3cb46
Binary files differ
Index: lams_common/src/java/org/lamsfoundation/lams/util/HttpUrlConnectionUtil.java
===================================================================
diff -u -rbb09e59547fe7c584f105bee03af346a05dde411 -r7cce0b08560ba7d6ce7fa6470950f065bbb3cb46
--- lams_common/src/java/org/lamsfoundation/lams/util/HttpUrlConnectionUtil.java (.../HttpUrlConnectionUtil.java) (revision bb09e59547fe7c584f105bee03af346a05dde411)
+++ lams_common/src/java/org/lamsfoundation/lams/util/HttpUrlConnectionUtil.java (.../HttpUrlConnectionUtil.java) (revision 7cce0b08560ba7d6ce7fa6470950f065bbb3cb46)
@@ -63,7 +63,13 @@
public static final int STATUS_OK = 1;
public static final int STATUS_ERROR = -1;
+ // environment variables
+ public static final String JBOSS_BIND_ADDRESS_KEY = "jboss.bind.address";
+ // if JBoss bind port is different than 8080, this must be set using -Dlams.port=XXXX as a command line parameter
+ public static final String LAMS_PORT_KEY = "lams.port";
+
private static boolean defaultTrustManagerSet = false;
+ private static String lamsLocalAddress;
/**
* Write URL connection repsonse to OutputStream
.
@@ -316,4 +322,20 @@
return con;
}
-}
+
+ public static String getLamsLocalAddress() {
+ if (HttpUrlConnectionUtil.lamsLocalAddress == null) {
+ // get address where JBoss is running for localhost calls, otherwise there is a problem with load balancing
+ String port = System.getProperty(HttpUrlConnectionUtil.LAMS_PORT_KEY);
+ // if there is no port given explicitly as parameter, fall back to SERVER_URL
+ if (port == null) {
+ HttpUrlConnectionUtil.lamsLocalAddress = Configuration.get(ConfigurationKeys.SERVER_URL);
+ } else {
+ HttpUrlConnectionUtil.lamsLocalAddress = "http://"
+ + System.getProperty(HttpUrlConnectionUtil.JBOSS_BIND_ADDRESS_KEY) + ":" + port + "/"
+ + Configuration.get(ConfigurationKeys.SERVER_URL_CONTEXT_PATH);
+ }
+ }
+ return HttpUrlConnectionUtil.lamsLocalAddress;
+ }
+}
\ No newline at end of file
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/ActivityPortfolio.java
===================================================================
diff -u -r0008a92961ecc6d41f1722f1b46eddf8f3a3b65d -r7cce0b08560ba7d6ce7fa6470950f065bbb3cb46
--- lams_learning/src/java/org/lamsfoundation/lams/learning/export/ActivityPortfolio.java (.../ActivityPortfolio.java) (revision 0008a92961ecc6d41f1722f1b46eddf8f3a3b65d)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/ActivityPortfolio.java (.../ActivityPortfolio.java) (revision 7cce0b08560ba7d6ce7fa6470950f065bbb3cb46)
@@ -40,7 +40,7 @@
private String activityDescription;
private String activityName;
private String exportUrl;
- private List childPortfolios;
+ private List childPortfolios;
/* The link to the tool page from the main export page */
private String toolLink;
private boolean headingNoPage;
@@ -56,7 +56,7 @@
/**
* @param toolLink
- * The toolLink to set.
+ * The toolLink to set.
*/
public void setToolLink(String toolLink) {
this.toolLink = toolLink;
@@ -82,7 +82,7 @@
/**
* @param activityName
- * The activityName to set.
+ * The activityName to set.
*/
public void setActivityName(String activityName) {
this.activityName = activityName;
@@ -97,7 +97,7 @@
/**
* @param exportUrl
- * The exportUrl to set.
+ * The exportUrl to set.
*/
public void setExportUrl(String exportUrl) {
this.exportUrl = exportUrl;
@@ -112,7 +112,7 @@
/**
* @param activityId
- * The activityId to set.
+ * The activityId to set.
*/
public void setActivityId(Long activityId) {
this.activityId = activityId;
@@ -127,18 +127,18 @@
/**
* @param activityDescription
- * The activityDescription to set.
+ * The activityDescription to set.
*/
public void setActivityDescription(String activityDescription) {
this.activityDescription = activityDescription;
}
/** Get the portfolios for any sub activities. Will return null for tool portfolios */
- public List getChildPortfolios() {
+ public List getChildPortfolios() {
return childPortfolios;
}
- public void setChildPortfolios(List childPortfolios) {
+ public void setChildPortfolios(List childPortfolios) {
this.childPortfolios = childPortfolios;
}
@@ -155,9 +155,10 @@
public void setHeadingNoPage(boolean headingNoPage) {
this.headingNoPage = headingNoPage;
}
-
+
/**
* Identifies this portfolio as of a Floating Activity
+ *
* @return
*/
public boolean isFloating() {
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/ExportPortfolioConstants.java
===================================================================
diff -u -r623a8b69a67eb91d7e0a31c5f4d15c4fabb9aa6f -r7cce0b08560ba7d6ce7fa6470950f065bbb3cb46
--- lams_learning/src/java/org/lamsfoundation/lams/learning/export/ExportPortfolioConstants.java (.../ExportPortfolioConstants.java) (revision 623a8b69a67eb91d7e0a31c5f4d15c4fabb9aa6f)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/ExportPortfolioConstants.java (.../ExportPortfolioConstants.java) (revision 7cce0b08560ba7d6ce7fa6470950f065bbb3cb46)
@@ -21,37 +21,28 @@
* ****************************************************************
*/
-/* $$Id$$ */
+/* $$Id$$ */
package org.lamsfoundation.lams.learning.export;
-import org.lamsfoundation.lams.util.Configuration;
-import org.lamsfoundation.lams.util.ConfigurationKeys;
/**
* @author mtruong
- *
+ *
*/
public class ExportPortfolioConstants {
-
- private ExportPortfolioConstants()
- {}
-
- public static final String DIR_SUFFIX_EXPORT = "export"; //will appear as the name of the tmp directory created. For eg. lamstmp_1129615396387_export
- public static final String DIR_SUFFIX_ZIP = "exportZipFile"; //suffix for the tmp directory. For eg. lamstmp_1129615396387_exportZipFile
- public static final String MAIN_EXPORT_FILENAME = "export_main.html";
- public static final String MAIN_NOTEBOOK_FILENAME = "notebook_main.html";
- public static final String EXPORT_LEARNER_PREFIX = "Portfolio";
- public static final String EXPORT_TEACHER_PREFIX = "Class Portfolio";
- public static final String EXPORT_TEMP_FILENAME = "export.zip";
- public static final String HOST = getServerURL();
- public static final String SUBDIRECTORY_BASENAME = "Activity"; //subdirectory for each activity is ActivityXX where XX is the activity Id
- public static final String SUBDIRECTORY_NOTEBOOK_BASENAME = "Notebook";
- public static final String PARAM_FILE_LOCATION = "fileLocation";
- public static final String EXPORT_ERROR_FILENAME = "export_error.html";
- public static final String EXPORT_ACTIVITY_ERROR_KEY = "error.export.portfolio.not.supported";
-
- private static String getServerURL()
- {
- return Configuration.get(ConfigurationKeys.SERVER_URL);
- }
-}
+ public static final String DIR_SUFFIX_EXPORT = "export"; // will appear as the name of the tmp directory created.
+ // For eg. lamstmp_1129615396387_export
+ public static final String DIR_SUFFIX_ZIP = "exportZipFile"; // suffix for the tmp directory. For eg.
+ // lamstmp_1129615396387_exportZipFile
+ public static final String MAIN_EXPORT_FILENAME = "export_main.html";
+ public static final String MAIN_NOTEBOOK_FILENAME = "notebook_main.html";
+ public static final String EXPORT_LEARNER_PREFIX = "Portfolio";
+ public static final String EXPORT_TEACHER_PREFIX = "Class Portfolio";
+ public static final String EXPORT_TEMP_FILENAME = "export.zip";
+ public static final String SUBDIRECTORY_BASENAME = "Activity"; // subdirectory for each activity is ActivityXX where
+ // XX is the activity Id
+ public static final String SUBDIRECTORY_NOTEBOOK_BASENAME = "Notebook";
+ public static final String PARAM_FILE_LOCATION = "fileLocation";
+ public static final String EXPORT_ERROR_FILENAME = "export_error.html";
+ public static final String EXPORT_ACTIVITY_ERROR_KEY = "error.export.portfolio.not.supported";
+}
\ No newline at end of file
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/ExportPortfolioService.java
===================================================================
diff -u -ref4ea7c43ef8851bb1810128fa9a80a9b5893b59 -r7cce0b08560ba7d6ce7fa6470950f065bbb3cb46
--- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/ExportPortfolioService.java (.../ExportPortfolioService.java) (revision ef4ea7c43ef8851bb1810128fa9a80a9b5893b59)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/ExportPortfolioService.java (.../ExportPortfolioService.java) (revision 7cce0b08560ba7d6ce7fa6470950f065bbb3cb46)
@@ -96,31 +96,31 @@
/**
* @param learnerService
- * The learnerService to set.
+ * The learnerService to set.
*/
public void setLearnerService(ICoreLearnerService learnerService) {
this.learnerService = learnerService;
}
/**
* @param learnerService
- * The learnerService to set.
+ * The learnerService to set.
*/
public void setCoreNotebookService(ICoreNotebookService coreNotebookService) {
this.coreNotebookService = coreNotebookService;
}
/**
* @param activityDAO
- * The activityDAO to set.
+ * The activityDAO to set.
*/
public void setActivityDAO(IActivityDAO activityDAO) {
this.activityDAO = activityDAO;
}
/**
* @param lessonDAO
- * The lessonDAO to set.
+ * The lessonDAO to set.
*/
public void setLessonDAO(ILessonDAO lessonDAO) {
this.lessonDAO = lessonDAO;
@@ -132,7 +132,7 @@
/**
* @param lamsCoreToolService
- * The lamsCoreToolService to set.
+ * The lamsCoreToolService to set.
*/
public void setLamsCoreToolService(ILamsCoreToolService lamsCoreToolService) {
this.lamsCoreToolService = lamsCoreToolService;
@@ -147,6 +147,7 @@
}
/** @see org.lamsfoundation.lams.learning.export.service.IExportPortfolioService#exportPortfolioForTeacher(org.lamsfoundation.lams.lesson.Lesson) */
+ @Override
public Portfolio exportPortfolioForTeacher(Long lessonId, Cookie[] cookies) {
Lesson lesson = lessonDAO.getLesson(lessonId);
@@ -187,6 +188,7 @@
* @see org.lamsfoundation.lams.learning.export.service.IExportPortfolioService#exportPortfolioForStudent(java.lang.Long,
* org.lamsfoundation.lams.usermanagement.User,boolean)
*/
+ @Override
public Portfolio exportPortfolioForStudent(Integer userId, Long lessonID, boolean anonymity,
ToolAccessMode accessMode, Cookie[] cookies) {
ArrayList portfolios = null;
@@ -255,6 +257,7 @@
}
/** @see org.lamsfoundation.lams.learning.export.service.IExportPortfolioService#zipPortfolio(String, String) */
+ @Override
public String zipPortfolio(String filename, String directoryToZip) {
String zipfileName, dirToPutZip;
// create tmp dir to put zip file
@@ -307,12 +310,12 @@
}
- private void processPortfolios(List portfolios, Cookie[] cookies, String tempDirectoryName) {
+ private void processPortfolios(List portfolios, Cookie[] cookies, String tempDirectoryName) {
- Iterator i = portfolios.iterator();
+ Iterator i = portfolios.iterator();
// iterate through the list of portfolios, create subdirectory,
while (i.hasNext()) {
- ActivityPortfolio activityPortfolio = (ActivityPortfolio) i.next();
+ ActivityPortfolio activityPortfolio = i.next();
// create a subdirectory with the name ActivityXX where XX is the activityId
String subDirectoryName = ExportPortfolioConstants.SUBDIRECTORY_BASENAME
@@ -326,32 +329,33 @@
// for security reasons, append the relative directory name to the end of the export url instead of the
// whole path
- String relativePath = activitySubDirectory.substring(FileUtil.getTempDir().length() + 1, activitySubDirectory
- .length());
+ String relativePath = activitySubDirectory.substring(FileUtil.getTempDir().length() + 1,
+ activitySubDirectory.length());
// Some activities (parallel, optional, sequence) don't have export urls.
if (!activityPortfolio.isHeadingNoPage()) {
- activityPortfolio.setExportUrl(ExportPortfolioConstants.HOST + activityPortfolio.getExportUrl());
+ activityPortfolio.setExportUrl(HttpUrlConnectionUtil.getLamsLocalAddress()
+ + activityPortfolio.getExportUrl());
activityPortfolio.setExportUrl(WebUtil.appendParameterToURL(activityPortfolio.getExportUrl(),
AttributeNames.PARAM_DIRECTORY_NAME, relativePath));
// get tool to export its files, mainFileName is the name of the main HTML page that the tool exported.
- String mainFileName = connectToToolViaExportURL(activityPortfolio.getActivityName(), activityPortfolio
- .getExportUrl(), cookies, activitySubDirectory);
+ String mainFileName = connectToToolViaExportURL(activityPortfolio.getActivityName(),
+ activityPortfolio.getExportUrl(), cookies, activitySubDirectory);
// toolLink is used in main page, so that it can link with the tools export pages.
String toolLink = subDirectoryName + "/" + mainFileName;
activityPortfolio.setToolLink(toolLink);
}
- if (activityPortfolio.getChildPortfolios() != null && activityPortfolio.getChildPortfolios().size() > 0) {
+ if ((activityPortfolio.getChildPortfolios() != null) && (activityPortfolio.getChildPortfolios().size() > 0)) {
processPortfolios(activityPortfolio.getChildPortfolios(), cookies, tempDirectoryName);
}
}
}
- private void processNotes(List notes, String tempDirectoryName, Portfolio portfolio) {
+ private void processNotes(List notes, String tempDirectoryName, Portfolio portfolio) {
if (notes.size() > 0) {
@@ -379,9 +383,9 @@
* calling the FileUtil directly.
*
* @param parentDir
- * The name of the parent directory
+ * The name of the parent directory
* @param subDir
- * The name of the child directory to create.
+ * The name of the child directory to create.
* @return true is the subdirectory was created, false otherwise
*/
private boolean createSubDirectory(String parentDir, String subDir) {
@@ -403,9 +407,9 @@
* files anyway, after the export is done)
*
* @param parentDir
- * The name of the parent directory
+ * The name of the parent directory
* @param subDir
- * The name of the child directory to create.
+ * The name of the child directory to create.
* @return true is the subdirectory was created, false otherwise
*/
private String createDirectory(String name) {
@@ -450,12 +454,10 @@
}
/** Generate the main page, given this portfolio */
+ @Override
public void generateMainPage(HttpServletRequest request, Portfolio portfolio, Cookie[] cookies) {
+ String url = HttpUrlConnectionUtil.getLamsLocalAddress() + "learning/exportPortfolio/main.jsp";
- String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
- + request.getContextPath();
- String url = basePath + "/exportPortfolio/main.jsp";
-
String filename = ExportPortfolioConstants.MAIN_EXPORT_FILENAME;
try {
request.getSession().setAttribute("portfolio", portfolio);
@@ -472,12 +474,10 @@
}
/** Generate the main page, given this portfolio */
+ @Override
public void generateNotebookPage(HttpServletRequest request, Portfolio portfolio, Cookie[] cookies) {
+ String url = HttpUrlConnectionUtil.getLamsLocalAddress() + "learning/exportPortfolio/notebook.jsp";
- String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
- + request.getContextPath();
- String url = basePath + "/exportPortfolio/notebook.jsp";
-
String filename = ExportPortfolioConstants.MAIN_NOTEBOOK_FILENAME;
try {
request.getSession().setAttribute("portfolio", portfolio);
@@ -510,6 +510,7 @@
* Gets the themes for the current user. This is used to determine the stylesheets included in the export file. We
* need the full theme, not just the name, so we can get the directory names for the images.
*/
+ @Override
public Collection getUserThemes() {
List themeNames = CSSThemeUtil.getAllUserThemes();
Set userThemes = new HashSet();