diff options
-rw-r--r-- | server/src/com/vaadin/ui/LoginForm.java | 3 | ||||
-rwxr-xr-x | tests/testbench/com/vaadin/tests/components/loginform/LoginFormRootInLoginHandler.java | 52 |
2 files changed, 55 insertions, 0 deletions
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;
+ }
+
+}
|