From 7684c7b863ff84fd9dcf50e7ec73a02ab7b78040 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Mon, 6 Oct 2014 12:19:14 +0000 Subject: [PATCH] added possibility to set mapParameters in URL for reload pages git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/widgets/session-checker@100451 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 1 - .settings/org.eclipse.wst.common.component | 1 - pom.xml | 2 +- .../sessionchecker/client/CheckSession.java | 33 +++++++++++++++++-- .../server/SessionCheckerServiceImpl.java | 15 +++++++++ 5 files changed, 47 insertions(+), 5 deletions(-) diff --git a/.classpath b/.classpath index 3e75f39..3fab141 100644 --- a/.classpath +++ b/.classpath @@ -6,7 +6,6 @@ - diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 2236024..f3794c6 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -3,7 +3,6 @@ - diff --git a/pom.xml b/pom.xml index 9f0ce37..6c7eaad 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.portlets.widgets session-checker jar - 0.2.4-SNAPSHOT + 0.3.0-SNAPSHOT gCube Session Checker Widget gCube Session Checker Widget is a GWT Widget that can be used to automatically check if the session expired. diff --git a/src/main/java/org/gcube/portlets/widgets/sessionchecker/client/CheckSession.java b/src/main/java/org/gcube/portlets/widgets/sessionchecker/client/CheckSession.java index 8ce1cab..d00a5d7 100644 --- a/src/main/java/org/gcube/portlets/widgets/sessionchecker/client/CheckSession.java +++ b/src/main/java/org/gcube/portlets/widgets/sessionchecker/client/CheckSession.java @@ -1,5 +1,7 @@ package org.gcube.portlets.widgets.sessionchecker.client; +import java.util.HashMap; + import org.gcube.portlets.user.gcubewidgets.client.popup.GCubeDialog; import org.gcube.portlets.widgets.sessionchecker.client.bundle.CheckSessionBundle; import org.gcube.portlets.widgets.sessionchecker.client.elements.Div; @@ -10,6 +12,7 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HasAlignment; @@ -137,8 +140,34 @@ public class CheckSession { else maskDiv.getElement().getStyle().setDisplay(Display.NONE); } - + /** + * shows the logout dialog + */ public static void showLogoutDialog() { + showLogoutDialog(null); + } + + /** + * shows the logout dialog with redirection appended with parametersMap + * @param paramsMap a map containing the attrs and related values of what you want after the ? + * e.g. aUrl?name=foo&lastname=fie + */ + public static void showLogoutDialog(HashMap paramsMap) { + String href = "javascript:location.reload();"; + + String params = "?"; + if (! (paramsMap == null || paramsMap.isEmpty()) ) { + for (String attr : paramsMap.keySet()) { + params += attr+"="+paramsMap.get(attr)+"&"; + } + + href = Window.Location.getHref(); + if (Window.Location.getHref().contains("?")) + href = href.substring(0, href.indexOf("?")); + + href += params; + } + GCubeDialog dlg = new GCubeDialog(); dlg.setText("Your Session Expired!"); @@ -150,7 +179,7 @@ public class CheckSession { HTML toShow = new HTML("
" + "" + "
" - + "Please reload this page.
"); + + "Please reload this page."); topPanel.add(toShow); diff --git a/src/main/java/org/gcube/portlets/widgets/sessionchecker/server/SessionCheckerServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/sessionchecker/server/SessionCheckerServiceImpl.java index f55c78f..dd90f0a 100644 --- a/src/main/java/org/gcube/portlets/widgets/sessionchecker/server/SessionCheckerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/sessionchecker/server/SessionCheckerServiceImpl.java @@ -36,6 +36,20 @@ public class SessionCheckerServiceImpl extends RemoteServiceServlet implements @Override public SessionInfoBean checkSession() { + SessionManager manager = null; + try { + manager = SessionManager.getInstance(); + } + catch (NullPointerException e) { + _log.error("SessionManager#getInstance null returning session expired"); + return new SessionInfoBean("",""); //tells session expired + } + if (manager == null) { + _log.warn("Liferay Portal Detected but session Expired"); + return new SessionInfoBean("",""); //tells session expired + } + + ASLSession session = null; try { session = getASLSession(); @@ -47,6 +61,7 @@ public class SessionCheckerServiceImpl extends RemoteServiceServlet implements } catch (Exception e) { _log.warn("Stopping session polling as you are in dev mode (am I wrong?)"); + e.printStackTrace(); return new SessionInfoBean("","", true); //tells that you are in development mode } String user = session.getUsername();