summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-10-26 13:24:54 +0000
committerVaadin Code Review <review@vaadin.com>2012-10-26 13:24:54 +0000
commit2dc3077b004efaa61419299f48e46a9ac2e8c044 (patch)
tree32c11c2d9519cf85c3db8ec922e4c06506429637
parent41fb6006d916c8cb512c9aa6fbf8e5d1f4e377db (diff)
downloadvaadin-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.java5
-rw-r--r--server/src/com/vaadin/ui/UI.java3
-rw-r--r--server/tests/src/com/vaadin/tests/server/TestUICleanup.java48
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();
- }
-}