From a939344cde8b690be7415d64409af882d9961a00 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 23 Oct 2013 13:43:00 +0200
Subject: [PATCH] OO-832: delegate to the portlet's user the task to reload the
 messages after the JMS event

---
 .../portlet/InfoMessagePortletRunController.java    | 13 ++++++++++++-
 .../olat/commons/info/ui/InfoDisplayController.java |  2 +-
 .../HomePortalControllerCreator.java                |  2 +-
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java b/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java
index bdfa5639f50..a785c153ecb 100644
--- a/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java
+++ b/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java
@@ -32,6 +32,7 @@ import org.olat.commons.info.manager.InfoMessageFrontendManager;
 import org.olat.commons.info.model.InfoMessage;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
+import org.olat.core.gui.components.Window;
 import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.components.link.LinkFactory;
 import org.olat.core.gui.components.table.BaseTableDataModelWithoutFilter;
@@ -76,6 +77,8 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle
 	private TableController tableController;
 	private VelocityContainer portletVC;
 	
+	private boolean newInfos = false;
+	
 	public InfoMessagePortletRunController(WindowControl wControl, UserRequest ureq, Translator trans,
 			String portletName, int defaultMaxentries) {
 		super(wControl, ureq, trans, portletName, defaultMaxentries);
@@ -109,6 +112,8 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle
 		CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, getIdentity(), InfoMessageFrontendManager.oresFrontend);
 
 		putInitialPanel(portletVC);
+
+		getWindowControl().getWindowBackOffice().addCycleListener(this);
 	}
 
 	@Override
@@ -120,6 +125,7 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle
 
 	@Override
 	public synchronized void doDispose() {
+		getWindowControl().getWindowBackOffice().removeCycleListener(this);
 		CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, InfoMessageFrontendManager.oresFrontend);
 		super.doDispose();
 	}
@@ -127,7 +133,12 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle
 	@Override
 	public void event(Event event) {
 		if("new_info_message".equals(event.getCommand())) {
-			reloadModel(sortingCriteria);
+			newInfos = true;
+		} else if (event == Window.BEFORE_INLINE_RENDERING) {
+			if(newInfos) {
+				reloadModel(sortingCriteria);
+				newInfos = false;
+			}
 		}
 	}
 
diff --git a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java
index b350a65781f..9731e130a96 100644
--- a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java
+++ b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java
@@ -194,7 +194,7 @@ public class InfoDisplayController extends FormBasicController {
 		deleteLinks.clear();
 
 		List<InfoMessage> msgs = infoMessageManager.loadInfoMessageByResource(ores, resSubPath, businessPath, after, null, 0, maxResults);
-		List<InfoMessageForDisplay> infoDisplays = new ArrayList<InfoMessageForDisplay>();
+		List<InfoMessageForDisplay> infoDisplays = new ArrayList<InfoMessageForDisplay>(msgs.size());
 		for(InfoMessage info:msgs) {
 			previousDisplayKeys.add(info.getKey());
 			infoDisplays.add(createInfoMessageForDisplay(info));
diff --git a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java
index fa571c4bf32..9cefe0e80b7 100644
--- a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java
+++ b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java
@@ -71,7 +71,7 @@ public class HomePortalControllerCreator extends AutoCreator  {
 		return new HomePortalController(ureq, lwControl);
 	}
 	
-	public class HomePortalController extends BasicController {
+	public static class HomePortalController extends BasicController {
 		
 		private final VelocityContainer welcome;
 		private final Link portalBackButton;
-- 
GitLab