]> source.dussan.org Git - vaadin-framework.git/commitdiff
Make ClassResource find associated Application class (#9402)
authorLeif Åstrand <leif@vaadin.com>
Fri, 7 Sep 2012 07:23:31 +0000 (10:23 +0300)
committerLeif Åstrand <leif@vaadin.com>
Fri, 7 Sep 2012 07:23:31 +0000 (10:23 +0300)
server/src/com/vaadin/Application.java
server/src/com/vaadin/server/ClassResource.java
server/src/com/vaadin/ui/UI.java

index d75581789665d77478c3ad91f4c0d49d55f8aa68..c439d30425a29dc2557accfe21fe5da24aa9c5a3 100644 (file)
@@ -79,6 +79,7 @@ public abstract class Application extends AbstractUIProvider implements
             // no current UI -> set the main window as the current UI
             UI.setCurrent(mainWindow);
         }
+        mainWindow.setApplication(this);
         this.mainWindow = mainWindow;
     }
 
@@ -99,8 +100,7 @@ public abstract class Application extends AbstractUIProvider implements
     }
 
     @Override
-    public UI createInstance(Class<? extends UI> type,
-            WrappedRequest request) {
+    public UI createInstance(Class<? extends UI> type, WrappedRequest request) {
         return getUIInstance(request);
     }
 
@@ -240,6 +240,8 @@ public abstract class Application extends AbstractUIProvider implements
             uI.setName(name);
         }
 
+        uI.setApplication(this);
+
         legacyUINames.put(uI.getName(), uI);
         uI.setSession(VaadinSession.getCurrent());
     }
index 27643eda13f01f864dd6b70145195e002489b510..a5b654ea6193a26aba0fd35098a237d3e7b9fd18 100644 (file)
@@ -112,11 +112,13 @@ public class ClassResource implements ConnectorResource, Serializable {
 
     protected Class<?> getAssociatedClass() {
         if (associatedClass == null) {
-            Class<? extends UI> associatedClass = UI.getCurrent().getClass();
-            if (associatedClass == LegacyWindow.class) {
-                return VaadinSession.getCurrent().getClass();
+            UI current = UI.getCurrent();
+            if (current instanceof LegacyWindow) {
+                LegacyWindow legacyWindow = (LegacyWindow) current;
+                return legacyWindow.getApplication().getClass();
+            } else {
+                return current.getClass();
             }
-            return associatedClass;
         }
         return associatedClass;
     }
index fc3df8d052e0714446e0aaa1ee079b6cc9bf813a..7ef51dfc3e158fae6110661e4297bc00633d1b59 100644 (file)
@@ -27,6 +27,7 @@ import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Map;
 
+import com.vaadin.Application;
 import com.vaadin.event.Action;
 import com.vaadin.event.Action.Handler;
 import com.vaadin.event.ActionManager;
@@ -94,6 +95,7 @@ public abstract class UI extends AbstractComponentContainer implements
     @Deprecated
     public static class LegacyWindow extends UI {
         private String name;
+        private Application application;
 
         /**
          * Create a new legacy window
@@ -127,6 +129,14 @@ public abstract class UI extends AbstractComponentContainer implements
             // Just empty
         }
 
+        public void setApplication(Application application) {
+            this.application = application;
+        }
+
+        public Application getApplication() {
+            return application;
+        }
+
         /**
          * Gets the unique name of the window. The name of the window is used to
          * uniquely identify it.