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();