From 92900099cb2d142bd56371b0edc5a19c494b0889 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 17 Oct 2012 10:11:07 +0200 Subject: [PATCH] OO-385: fix some leak of controllers --- .../olat/commons/calendar/ui/ManageCalendarsController.java | 2 +- .../olat/commons/calendar/ui/WeeklyCalendarController.java | 2 +- .../commons/contextHelp/ContextHelpTopNavController.java | 4 +++- .../java/org/olat/core/gui/control/DefaultController.java | 2 ++ .../gui/control/generic/iframe/IFrameDisplayController.java | 5 ++--- .../olat/core/gui/control/generic/portal/PortalImpl.java | 5 +++-- .../org/olat/core/gui/control/winmgr/WindowManagerImpl.java | 6 ------ .../group/ui/homepage/GroupMembersDisplayController.java | 3 +++ .../java/org/olat/gui/control/OlatTopNavController.java | 3 +++ .../controllerCreators/HomePortalControllerCreator.java | 5 ++++- .../org/olat/login/AfterLoginInterceptionController.java | 2 ++ src/main/java/org/olat/modules/cp/CPDisplayController.java | 1 + src/main/java/org/olat/user/PersonalSettingsController.java | 1 + 13 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/olat/commons/calendar/ui/ManageCalendarsController.java b/src/main/java/org/olat/commons/calendar/ui/ManageCalendarsController.java index a26e9a20d88..eabc54fd116 100644 --- a/src/main/java/org/olat/commons/calendar/ui/ManageCalendarsController.java +++ b/src/main/java/org/olat/commons/calendar/ui/ManageCalendarsController.java @@ -77,7 +77,7 @@ public class ManageCalendarsController extends BasicController { // Import calendar functionalities importedCalendarConfig = new ImportedCalendarConfigurationController(importedCalendarWrappers, ureq, getWindowControl(), true); - importedCalendarConfig.addControllerListener(this); + listenTo(importedCalendarConfig); manageVC.put("importedCalendarConfig", importedCalendarConfig.getInitialComponent()); manageVC.contextPut("importedCalendarWrappers", importedCalendarWrappers); diff --git a/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java b/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java index c95d36cb5d3..9f6d741611f 100644 --- a/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java +++ b/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java @@ -247,7 +247,7 @@ public class WeeklyCalendarController extends BasicController implements Activat vcMain.put("calendarConfig", calendarConfig.getInitialComponent()); importedCalendarConfig = new ImportedCalendarConfigurationController(importedCalendarWrappers, ureq, getWindowControl(), false); - importedCalendarConfig.addControllerListener(this); + listenTo(importedCalendarConfig); vcMain.put("importedCalendarConfig", importedCalendarConfig.getInitialComponent()); // calendar subscription diff --git a/src/main/java/org/olat/core/commons/contextHelp/ContextHelpTopNavController.java b/src/main/java/org/olat/core/commons/contextHelp/ContextHelpTopNavController.java index 466e901087c..e303e4b561a 100644 --- a/src/main/java/org/olat/core/commons/contextHelp/ContextHelpTopNavController.java +++ b/src/main/java/org/olat/core/commons/contextHelp/ContextHelpTopNavController.java @@ -162,6 +162,8 @@ public class ContextHelpTopNavController extends FormBasicController { * @see org.olat.core.gui.control.DefaultController#doDispose() */ protected void doDispose() { - // nothing to dispose + if(searchController != null) { + searchController.dispose(); + } } } diff --git a/src/main/java/org/olat/core/gui/control/DefaultController.java b/src/main/java/org/olat/core/gui/control/DefaultController.java index 8b9d5d8c658..37a62615d93 100644 --- a/src/main/java/org/olat/core/gui/control/DefaultController.java +++ b/src/main/java/org/olat/core/gui/control/DefaultController.java @@ -36,6 +36,7 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.panel.Panel; import org.olat.core.gui.components.velocity.VelocityContainer; +import org.olat.core.gui.control.generic.portal.PortalImpl; import org.olat.core.gui.translator.Translator; import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.BusinessControlFactory; @@ -494,5 +495,6 @@ public abstract class DefaultController implements Controller, ControllerEventLi */ protected void setDisposedMsgController(Controller disposeMsgController) { disposedMessageController = disposeMsgController; + controllerCnt.decrementAndGet(); } } \ No newline at end of file diff --git a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java index 9b80675df83..6cdb2bcfba9 100644 --- a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java +++ b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java @@ -78,7 +78,7 @@ public class IFrameDisplayController extends BasicController implements GenericE /** * Base URI of contentMapper */ - private String baseURI; + private final String baseURI; /** * Relative uri of currently loaded page in iframe */ @@ -166,8 +166,7 @@ public class IFrameDisplayController extends BasicController implements GenericE null /*g_encoding*/, null /*jsEncoding*/, null /*contentEncoding*/, frameId, null /*customCssURL*/, themeBaseUri, null /*customHeaderContent*/, staticFilesPath, mapPathGlossar); - - String baseURI; + String mapperID = VFSManager.getRealPath(rootDir); if (mapperID == null) { // can't cache mapper, no cacheable context available diff --git a/src/main/java/org/olat/core/gui/control/generic/portal/PortalImpl.java b/src/main/java/org/olat/core/gui/control/generic/portal/PortalImpl.java index cb6d5fad6c6..17a9f86dad1 100644 --- a/src/main/java/org/olat/core/gui/control/generic/portal/PortalImpl.java +++ b/src/main/java/org/olat/core/gui/control/generic/portal/PortalImpl.java @@ -202,6 +202,7 @@ public class PortalImpl extends DefaultController implements Portal, ControllerE // discard invalid portlet names } } + dispose(); return new PortalImpl(this.name, ureq, wContr, cleanedUserColumns); } @@ -408,9 +409,9 @@ public class PortalImpl extends DefaultController implements Portal, ControllerE */ protected void doDispose() { // cleanup all portlet containers - Iterator iter = portletContainers.values().iterator(); + Iterator<PortletContainer> iter = portletContainers.values().iterator(); while (iter.hasNext()) { - PortletContainer element = (PortletContainer) iter.next(); + PortletContainer element = iter.next(); element.dispose(); } portletContainers = null; diff --git a/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java b/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java index dcddc749625..b64aa4c15b0 100644 --- a/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java +++ b/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java @@ -83,12 +83,6 @@ public class WindowManagerImpl extends BasicManager implements WindowManager { private PopupBrowserWindowControllerCreator pbwcc; - - - // global urls for mapped path e.g. for css, js and so on; for all users! - private static Map<String,String> mappedPaths = new HashMap<String, String>(); - - public WindowManagerImpl() { this.pbwcc = (PopupBrowserWindowControllerCreator) diff --git a/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java b/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java index 99e8653ff6b..5d9122a23af 100644 --- a/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java +++ b/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java @@ -48,14 +48,17 @@ public class GroupMembersDisplayController extends BasicController { if(members.isOwnersPublic()) { GroupController groupOwnersController = new GroupController(ureq, wControl, false, true, false, false, false, businessGroup.getOwnerGroup()); content.put("owners", groupOwnersController.getInitialComponent()); + listenTo(groupOwnersController); } if(members.isParticipantsPublic()) { GroupController groupParticipantsController = new GroupController(ureq, wControl, false, true, false, false, false, businessGroup.getPartipiciantGroup()); content.put("participants", groupParticipantsController.getInitialComponent()); + listenTo(groupParticipantsController); } if(members.isWaitingListPublic()) { GroupController groupWaitingListController = new GroupController(ureq, wControl, false, true, false, false, false, businessGroup.getWaitingGroup()); content.put("waitingList", groupWaitingListController.getInitialComponent()); + listenTo(groupWaitingListController); } putInitialPanel(content); } diff --git a/src/main/java/org/olat/gui/control/OlatTopNavController.java b/src/main/java/org/olat/gui/control/OlatTopNavController.java index b39f053656b..dd108295249 100644 --- a/src/main/java/org/olat/gui/control/OlatTopNavController.java +++ b/src/main/java/org/olat/gui/control/OlatTopNavController.java @@ -182,6 +182,9 @@ public class OlatTopNavController extends BasicController implements GenericEven if (singleUserEventCenter != null) { singleUserEventCenter.deregisterFor(this, ass); } + if(searchC != null) { + searchC.dispose(); + } } @Override diff --git a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java index 51b8a3253e7..fa571c4bf32 100644 --- a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java +++ b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java @@ -119,7 +119,10 @@ public class HomePortalControllerCreator extends AutoCreator { @Override protected void doDispose() { - // + if (myPortal != null) { + myPortal.dispose(); + myPortal = null; + } } @Override diff --git a/src/main/java/org/olat/login/AfterLoginInterceptionController.java b/src/main/java/org/olat/login/AfterLoginInterceptionController.java index 3ff198bb447..f0a905214aa 100644 --- a/src/main/java/org/olat/login/AfterLoginInterceptionController.java +++ b/src/main/java/org/olat/login/AfterLoginInterceptionController.java @@ -126,6 +126,7 @@ public class AfterLoginInterceptionController extends BasicController { if(loginInterceptor.isInterceptionRequired(ureq)) { mapInfos.put(CONTROLLER, ctrl); } else { + ctrl.dispose(); mapInfosIt.remove(); } } else if (ctrl != null ){ @@ -148,6 +149,7 @@ public class AfterLoginInterceptionController extends BasicController { wiz = new WizardInfoController(ureq, aftctrls.size()); vC.put("wizard", wiz.getInitialComponent()); vC.contextPut("ctrlCount", aftctrls.size()); + listenTo(wiz); // get first Ctrl into Wizard putControllerToPanel(ureq, wControl, 0); diff --git a/src/main/java/org/olat/modules/cp/CPDisplayController.java b/src/main/java/org/olat/modules/cp/CPDisplayController.java index 532340104eb..a71308e89df 100644 --- a/src/main/java/org/olat/modules/cp/CPDisplayController.java +++ b/src/main/java/org/olat/modules/cp/CPDisplayController.java @@ -119,6 +119,7 @@ public class CPDisplayController extends BasicController implements Activateable SearchServiceUIFactory searchServiceUIFactory = (SearchServiceUIFactory)CoreSpringFactory.getBean(SearchServiceUIFactory.class); searchCtrl = searchServiceUIFactory.createInputController(ureq, wControl, DisplayOption.BUTTON, null); myContent.put("search_input", searchCtrl.getInitialComponent()); + listenTo(searchCtrl); } //TODO:gs:a diff --git a/src/main/java/org/olat/user/PersonalSettingsController.java b/src/main/java/org/olat/user/PersonalSettingsController.java index 1f375178811..287e9d81c84 100644 --- a/src/main/java/org/olat/user/PersonalSettingsController.java +++ b/src/main/java/org/olat/user/PersonalSettingsController.java @@ -107,6 +107,7 @@ public class PersonalSettingsController extends BasicController implements Activ if(WebDAVManager.getInstance().isEnabled()) { pwdav = new WebDAVPasswordController(ureq, getWindowControl()); userConfig.addTab(translate("tab.pwdav"), pwdav.getInitialComponent()); + listenTo(pwdav); } if(InstantMessagingModule.isEnabled()){ -- GitLab