From 098957c08507449e34fd64618d4964ee0b030eba Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Wed, 22 Aug 2012 21:18:01 +0300 Subject: [PATCH] Made Root.getCurrent() work in LoginForm LoginListener (#9372) --- server/src/com/vaadin/ui/LoginForm.java | 3 ++ .../LoginFormRootInLoginHandler.java | 52 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100755 tests/testbench/com/vaadin/tests/components/loginform/LoginFormRootInLoginHandler.java diff --git a/server/src/com/vaadin/ui/LoginForm.java b/server/src/com/vaadin/ui/LoginForm.java index c8634ea81a..bb7767084c 100644 --- a/server/src/com/vaadin/ui/LoginForm.java +++ b/server/src/com/vaadin/ui/LoginForm.java @@ -99,6 +99,9 @@ public class LoginForm extends CustomComponent { throws IOException { String requestPathInfo = request.getRequestPathInfo(); if ("/loginHandler".equals(requestPathInfo)) { + // Ensure Root.getCurrent() works in listeners + Root.setCurrent(getRoot()); + response.setCacheTime(-1); response.setContentType("text/html; charset=utf-8"); response.getWriter() diff --git a/tests/testbench/com/vaadin/tests/components/loginform/LoginFormRootInLoginHandler.java b/tests/testbench/com/vaadin/tests/components/loginform/LoginFormRootInLoginHandler.java new file mode 100755 index 0000000000..2c0a8744fc --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/loginform/LoginFormRootInLoginHandler.java @@ -0,0 +1,52 @@ +package com.vaadin.tests.components.loginform; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.Label; +import com.vaadin.ui.LoginForm; +import com.vaadin.ui.LoginForm.LoginEvent; +import com.vaadin.ui.LoginForm.LoginListener; +import com.vaadin.ui.Root; + +public class LoginFormRootInLoginHandler extends TestBase { + + @Override + protected void setup() { + LoginForm lf = new LoginForm(); + lf.addListener(new LoginListener() { + + @Override + public void onLogin(LoginEvent event) { + Root r1 = Root.getCurrent(); + if (r1 != null) { + addComponent(new Label("Root.getCurrent().data: " + + r1.getData())); + } else { + addComponent(new Label("Root.getCurrent() is null")); + } + Root r2 = ((LoginForm) event.getSource()).getRoot(); + if (r2 != null) { + addComponent(new Label("event.getSource().data: " + + r2.getData())); + } else { + addComponent(new Label( + "event.getSource().getRoot() is null")); + } + } + }); + addComponent(lf); + getLayout().getRoot().setData("This root"); + } + + @Override + protected String getDescription() { + // TODO Auto-generated method stub + return null; + } + + @Override + protected Integer getTicketNumber() { + // TODO Auto-generated method stub + return null; + } + +} -- 2.39.5