aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-08-22 21:18:01 +0300
committerArtur Signell <artur@vaadin.com>2012-08-22 21:18:25 +0300
commit098957c08507449e34fd64618d4964ee0b030eba (patch)
tree6e1f5887136a2ddde2319ac8341d59ffc3ec897d
parent050bec8a443b916e45adf4bf7ea91241690d37e2 (diff)
downloadvaadin-framework-098957c08507449e34fd64618d4964ee0b030eba.tar.gz
vaadin-framework-098957c08507449e34fd64618d4964ee0b030eba.zip
Made Root.getCurrent() work in LoginForm LoginListener (#9372)
-rw-r--r--server/src/com/vaadin/ui/LoginForm.java3
-rwxr-xr-xtests/testbench/com/vaadin/tests/components/loginform/LoginFormRootInLoginHandler.java52
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;
+ }
+
+}