]> source.dussan.org Git - vaadin-framework.git/commitdiff
Added liferay specific hack to extend portal session after each Vaadin servlet visit.
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 25 Jun 2009 13:20:35 +0000 (13:20 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 25 Jun 2009 13:20:35 +0000 (13:20 +0000)
svn changeset:8240/svn branch:6.0

src/com/vaadin/terminal/gwt/server/ApplicationPortlet.java

index 323941108ce806bfe083d68ede015e90fbc55f5f..f432e17fd162ac87402228706c7d26c32aa52e04 100644 (file)
@@ -1,6 +1,7 @@
 package com.vaadin.terminal.gwt.server;\r
 \r
 import java.io.IOException;\r
+import java.io.OutputStream;\r
 import java.io.PrintWriter;\r
 import java.io.Serializable;\r
 \r
@@ -72,8 +73,31 @@ public class ApplicationPortlet implements Portlet, Serializable {
                     request.setAttribute(ApplicationServlet.REQUEST_APPSTYLE,\r
                             style);\r
                 }\r
+\r
                 dispatcher.include(request, response);\r
 \r
+                boolean isLifeRay = request.getPortalContext().getPortalInfo()\r
+                        .toLowerCase().contains("liferay");\r
+                if (isLifeRay) {\r
+                    /*\r
+                     * Temporary support to heartbeat Liferay session when using\r
+                     * Vaadin based portlet. We hit an extra xhr to liferay\r
+                     * servlet to extend the session lifetime after each Vaadin\r
+                     * request. This hack can be removed when supporting porlet\r
+                     * 2.0 and resourceRequests.\r
+                     * \r
+                     * TODO make this configurable, this is not necessary with\r
+                     * some custom session configurations.\r
+                     */\r
+                    OutputStream out = response.getPortletOutputStream();\r
+                    byte[] lifeRaySessionHearbeatHack = ("<script type=\"text/javascript\">"\r
+                            + "if(!vaadin.postRequestHooks) {vaadin.postRequestHooks = {};}"\r
+                            + "vaadin.postRequestHooks.liferaySessionHeartBeat = function()"\r
+                            + "{Liferay.Session.extend();};</script>")\r
+                            .getBytes();\r
+                    out.write(lifeRaySessionHearbeatHack);\r
+                }\r
+\r
             } catch (PortletException e) {\r
                 PrintWriter out = response.getWriter();\r
                 out.print("<h1>Servlet include failed!</h1>");\r
@@ -89,5 +113,4 @@ public class ApplicationPortlet implements Portlet, Serializable {
 \r
         }\r
     }\r
-\r
 }\r