summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-10-26 13:25:17 +0000
committerVaadin Code Review <review@vaadin.com>2012-10-26 13:25:17 +0000
commitca21360528b46e353616d0059d8205d56d7a1279 (patch)
treecd5cf00a9380f8f5aa5bd448b02600ad54c71a96
parentdd9121c86678cc930a6542af23a05e5076ad60aa (diff)
parent2dc3077b004efaa61419299f48e46a9ac2e8c044 (diff)
downloadvaadin-framework-ca21360528b46e353616d0059d8205d56d7a1279.tar.gz
vaadin-framework-ca21360528b46e353616d0059d8205d56d7a1279.zip
Merge "Revert "Call UI.detach in UI cleanup (#9755)" because it breaks logout functionality / redirect while closing the session. See CloseSession test"
-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();
- }
-}