From 703857aa18e43bab952dfed80998699f4da8d943 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 18 Sep 2009 08:18:22 +0000 Subject: [PATCH] Fix for #3349 - NPE when mainwindow is not set svn changeset:8845/svn branch:6.1 --- .../server/AbstractApplicationServlet.java | 2 +- .../gwt/server/CommunicationManager.java | 6 +++-- .../applicationservlet/NoMainWindow.java | 22 +++++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 src/com/vaadin/tests/applicationservlet/NoMainWindow.java diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java index 31d5d5ac96..725b906f97 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java @@ -173,7 +173,7 @@ public abstract class AbstractApplicationServlet extends HttpServlet { // Widget set parameter name private static final String PARAMETER_WIDGETSET = "widgetset"; - private static final String ERROR_NO_WINDOW_FOUND = "Application did not give any window, did you remember to setMainWindow()?"; + private static final String ERROR_NO_WINDOW_FOUND = "No window found. Did you remember to setMainWindow()?"; private static final String DEFAULT_THEME_NAME = "reindeer"; diff --git a/src/com/vaadin/terminal/gwt/server/CommunicationManager.java b/src/com/vaadin/terminal/gwt/server/CommunicationManager.java index b3576ed327..df198bc655 100644 --- a/src/com/vaadin/terminal/gwt/server/CommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/CommunicationManager.java @@ -459,8 +459,7 @@ public class CommunicationManager implements Paintable.RepaintRequestListener, // Also check any existing subwindows if (w.getChildWindows() != null) { - for (Window subWindow : (Set) w - .getChildWindows()) { + for (Window subWindow : w.getChildWindows()) { invalidComponentRelativeSizes = ComponentSizeValidator .validateComponentRelativeSizes( subWindow.getContent(), @@ -1087,6 +1086,9 @@ public class CommunicationManager implements Paintable.RepaintRequestListener, // By default, use mainwindow if (window == null) { window = application.getMainWindow(); + // Return null if no main window was found + if (window == null) + return null; } // If the requested window is already open, resolve conflict diff --git a/src/com/vaadin/tests/applicationservlet/NoMainWindow.java b/src/com/vaadin/tests/applicationservlet/NoMainWindow.java new file mode 100644 index 0000000000..9097274236 --- /dev/null +++ b/src/com/vaadin/tests/applicationservlet/NoMainWindow.java @@ -0,0 +1,22 @@ +package com.vaadin.tests.applicationservlet; + +import com.vaadin.tests.components.AbstractTestCase; + +public class NoMainWindow extends AbstractTestCase { + + @Override + protected String getDescription() { + return "This should produce an stack trace with \"No window found. Did you remember to setMainWindow()?\""; + } + + @Override + protected Integer getTicketNumber() { + return 3349; + } + + @Override + public void init() { + + } + +} -- 2.39.5