diff options
author | Artur Signell <artur@vaadin.com> | 2012-10-26 13:24:54 +0000 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2012-10-26 13:24:54 +0000 |
commit | 2dc3077b004efaa61419299f48e46a9ac2e8c044 (patch) | |
tree | 32c11c2d9519cf85c3db8ec922e4c06506429637 | |
parent | 41fb6006d916c8cb512c9aa6fbf8e5d1f4e377db (diff) | |
download | vaadin-framework-2dc3077b004efaa61419299f48e46a9ac2e8c044.tar.gz vaadin-framework-2dc3077b004efaa61419299f48e46a9ac2e8c044.zip |
Revert "Call UI.detach in UI cleanup (#9755)" because it breaks logout functionality / redirect while closing the session. See CloseSession test
This reverts commit 41fb6006d916c8cb512c9aa6fbf8e5d1f4e377db
-rw-r--r-- | server/src/com/vaadin/server/VaadinServiceSession.java | 5 | ||||
-rw-r--r-- | server/src/com/vaadin/ui/UI.java | 3 | ||||
-rw-r--r-- | server/tests/src/com/vaadin/tests/server/TestUICleanup.java | 48 |
3 files changed, 3 insertions, 53 deletions
diff --git a/server/src/com/vaadin/server/VaadinServiceSession.java b/server/src/com/vaadin/server/VaadinServiceSession.java index 92c06cdf46..de5accbfd0 100644 --- a/server/src/com/vaadin/server/VaadinServiceSession.java +++ b/server/src/com/vaadin/server/VaadinServiceSession.java @@ -742,12 +742,7 @@ public class VaadinServiceSession implements HttpSessionBindingListener, Integer id = Integer.valueOf(ui.getUIId()); uIs.remove(id); retainOnRefreshUIs.values().remove(id); - - UI current = UI.getCurrent(); - UI.setCurrent(ui); ui.fireCleanupEvent(); - ui.setSession(null); - UI.setCurrent(current); } /** diff --git a/server/src/com/vaadin/ui/UI.java b/server/src/com/vaadin/ui/UI.java index c7627f71db..d57d38b371 100644 --- a/server/src/com/vaadin/ui/UI.java +++ b/server/src/com/vaadin/ui/UI.java @@ -634,7 +634,10 @@ public abstract class UI extends AbstractComponentContainer implements * For internal use only. */ public void fireCleanupEvent() { + UI current = UI.getCurrent(); + UI.setCurrent(this); fireEvent(new CleanupEvent(this)); + UI.setCurrent(current); } @Override diff --git a/server/tests/src/com/vaadin/tests/server/TestUICleanup.java b/server/tests/src/com/vaadin/tests/server/TestUICleanup.java deleted file mode 100644 index 83d6838bfe..0000000000 --- a/server/tests/src/com/vaadin/tests/server/TestUICleanup.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.vaadin.tests.server; - -import org.easymock.EasyMock; -import org.junit.Test; - -import com.vaadin.server.VaadinRequest; -import com.vaadin.server.VaadinService; -import com.vaadin.server.VaadinServiceSession; -import com.vaadin.ui.UI; -import com.vaadin.ui.UI.CleanupEvent; -import com.vaadin.ui.UI.CleanupListener; - -public class TestUICleanup { - - @Test - public void uiDetach() { - VaadinService service = EasyMock.createMock(VaadinService.class); - - UI ui = EasyMock.createMock(UI.class); - ui.setSession(null); - ui.detach(); - ui.fireCleanupEvent(); - EasyMock.expect(ui.getUIId()).andReturn(1); - - EasyMock.replay(service, ui); - - VaadinServiceSession session = new VaadinServiceSession(service); - - session.cleanupUI(ui); - } - - @Test - public void uiCleanupListeners() { - CleanupListener listener = EasyMock.createMock(CleanupListener.class); - listener.cleanup(EasyMock.anyObject(CleanupEvent.class)); - - EasyMock.replay(listener); - - UI ui = new UI() { - @Override - protected void init(VaadinRequest request) { - } - }; - - ui.addCleanupListener(listener); - ui.fireCleanupEvent(); - } -} |