]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix more issues related to browserDetails requests in portlets (#8052)
authorLeif Åstrand <leif@vaadin.com>
Tue, 20 Dec 2011 10:20:20 +0000 (12:20 +0200)
committerLeif Åstrand <leif@vaadin.com>
Tue, 20 Dec 2011 10:20:34 +0000 (12:20 +0200)
src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java
src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java

index 7b8b1460758e3a4891bb3dc1697681ff7c9f6ec7..08b608db0d6c40dbe761123b0703292b075450b6 100644 (file)
@@ -44,6 +44,7 @@ import com.liferay.portal.kernel.util.PortalClassInvoker;
 import com.liferay.portal.kernel.util.PropsUtil;
 import com.vaadin.Application;
 import com.vaadin.Application.SystemMessages;
+import com.vaadin.RootRequiresMoreInformation;
 import com.vaadin.terminal.DeploymentConfiguration;
 import com.vaadin.terminal.Terminal;
 import com.vaadin.terminal.WrappedRequest;
@@ -609,6 +610,14 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet
                 synchronized (application) {
                     if (application.isRunning()) {
                         switch (requestType) {
+                        case RENDER:
+                            try {
+                                root = application
+                                        .getRootForRequest(wrappedRequest);
+                            } catch (RootRequiresMoreInformation e) {
+                                // Ignore problem and continue without root
+                            }
+                            break;
                         case BROWSER_DETAILS:
                             // Should not try to find a root here as the
                             // combined request details might change the root
@@ -967,6 +976,10 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet
             throws PortletException {
         try {
             final Application application = getApplicationClass().newInstance();
+            if (application.getRootPreserveStrategy() == null) {
+                application
+                        .setRootPreserveStrategy(new Application.WindowNameRootPreserveStrategy());
+            }
             return application;
         } catch (final IllegalAccessException e) {
             throw new PortletException("getNewApplication failed", e);
index a20eb214681b238d405af7d9e9c57f6158327a1c..61a9dbc821cc9ab12e99b25f8916425b9b3af214 100644 (file)
@@ -189,7 +189,7 @@ public class PortletCommunicationManager extends AbstractCommunicationManager {
                     String portalThemeUri = getThemeUri(context, portalTheme);
                     // XSS safe - originates from portal properties
                     context.getWriter().write(
-                            "vaadin.loadTheme('" + portalThemeUri + "')");
+                            "vaadin.loadTheme('" + portalThemeUri + "');");
                 }
 
                 super.writeMainScriptTagContents(context);