]> source.dussan.org Git - vaadin-framework.git/commitdiff
[merge from 6.7] #8305 extend Liferay session when the user interacts with a Vaadin...
authorAutomerge <automerge@vaadin.com>
Tue, 22 May 2012 17:07:33 +0000 (17:07 +0000)
committerAutomerge <automerge@vaadin.com>
Tue, 22 May 2012 17:07:33 +0000 (17:07 +0000)
svn changeset:23802/svn branch:6.8

src/com/vaadin/terminal/gwt/client/ApplicationConnection.java

index dcf52827ed5aaaad1ec6d3cba479eb0df39a6a93..4448c047c24f1ad9368790ba48255436e32fc963 100644 (file)
@@ -330,6 +330,25 @@ public class ApplicationConnection {
        }
     }-*/;
 
+    /**
+     * If on Liferay and logged in, ask the client side session management
+     * JavaScript to extend the session duration.
+     * 
+     * Otherwise, Liferay client side JavaScript will explicitly expire the
+     * session even though the server side considers the session to be active.
+     * See ticket #8305 for more information.
+     */
+    protected native void extendLiferaySession()
+    /*-{
+    if ($wnd.Liferay && $wnd.Liferay.Session) {
+        $wnd.Liferay.Session.extend();
+        // if the extend banner is visible, hide it
+        if ($wnd.Liferay.Session.banner) {
+            $wnd.Liferay.Session.banner.remove();
+        }
+    }
+    }-*/;
+
     /**
      * Get the active Console for writing debug messages. May return an actual
      * logging console, or the NullConsole if debugging is not turned on.
@@ -819,6 +838,14 @@ public class ApplicationConnection {
             public void execute() {
                 if (!hasActiveRequest()) {
                     hideLoadingIndicator();
+
+                    // If on Liferay and session expiration management is in
+                    // use, extend session duration on each request.
+                    // Doing it here rather than before the request to improve
+                    // responsiveness.
+                    // Postponed until the end of the next request if other
+                    // requests still pending.
+                    extendLiferaySession();
                 }
             }
         });