]> source.dussan.org Git - vaadin-framework.git/commitdiff
Merged: Fix for #3349 - NPE when mainwindow is not set
authorArtur Signell <artur.signell@itmill.com>
Fri, 18 Sep 2009 08:23:58 +0000 (08:23 +0000)
committerArtur Signell <artur.signell@itmill.com>
Fri, 18 Sep 2009 08:23:58 +0000 (08:23 +0000)
svn changeset:8847/svn branch:6.2

src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java
src/com/vaadin/terminal/gwt/server/CommunicationManager.java
src/com/vaadin/tests/applicationservlet/NoMainWindow.java [new file with mode: 0644]

index 31d5d5ac962e29d768688ed2fd31561a003a2978..725b906f978d1b5006e443bf4f61cd7a62768977 100644 (file)
@@ -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";
 
index b3576ed327a290ebd469ce9d4f5db4b7cfaa98df..ee5a22c3f3b0eaa55bb60b81a2cdb9f93204cfa0 100644 (file)
@@ -459,8 +459,7 @@ public class CommunicationManager implements Paintable.RepaintRequestListener,
 
                         // Also check any existing subwindows
                         if (w.getChildWindows() != null) {
-                            for (Window subWindow : (Set<Window>) w
-                                    .getChildWindows()) {
+                            for (Window subWindow : w.getChildWindows()) {
                                 invalidComponentRelativeSizes = ComponentSizeValidator
                                         .validateComponentRelativeSizes(
                                                 subWindow.getContent(),
@@ -1087,6 +1086,10 @@ 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 (file)
index 0000000..9097274
--- /dev/null
@@ -0,0 +1,22 @@
+package com.vaadin.tests.applicationservlet;\r
+\r
+import com.vaadin.tests.components.AbstractTestCase;\r
+\r
+public class NoMainWindow extends AbstractTestCase {\r
+\r
+    @Override\r
+    protected String getDescription() {\r
+        return "This should produce an stack trace with \"No window found. Did you remember to setMainWindow()?\"";\r
+    }\r
+\r
+    @Override\r
+    protected Integer getTicketNumber() {\r
+        return 3349;\r
+    }\r
+\r
+    @Override\r
+    public void init() {\r
+\r
+    }\r
+\r
+}\r