From 90fd49f074bbd5def8a528e8bbb8b4ba2c352dd0 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Mon, 31 Mar 2014 10:50:54 +0000 Subject: [PATCH] should be ok git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/widgets/session-checker@93887 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 9 +++- .../server/SessionCheckerServiceImpl.java | 49 +++++++------------ 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/pom.xml b/pom.xml index c66bb77..9f0ce37 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.portlets.widgets session-checker jar - 0.2.0-SNAPSHOT + 0.2.4-SNAPSHOT gCube Session Checker Widget gCube Session Checker Widget is a GWT Widget that can be used to automatically check if the session expired. @@ -64,6 +64,11 @@ aslcore provided + + com.liferay.portal + portal-service + provided + @@ -94,7 +99,7 @@ org.gcube.portlets.widgets.sessionchecker.client.SessionChecker - + 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 55df586..f55c78f 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 @@ -11,6 +11,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gwt.user.server.rpc.RemoteServiceServlet; +import com.liferay.portal.service.UserLocalServiceUtil; /** * The server side implementation of the RPC service. @@ -20,43 +21,37 @@ public class SessionCheckerServiceImpl extends RemoteServiceServlet implements private static final Logger _log = LoggerFactory.getLogger(SessionCheckerServiceImpl.class); - private static final String FIRST_TIME = "FIRST_TIME_DEV_MODE"; /** * the current ASLSession * @return . */ private ASLSession getASLSession() { - try { String sessionID = this.getThreadLocalRequest().getSession().getId(); String user = (String) this.getThreadLocalRequest().getSession().getAttribute(ScopeHelper.USERNAME_ATTRIBUTE); - return SessionManager.getInstance().getASLSession(sessionID, user); - } - catch (NullPointerException e) { - _log.warn("Session is null, perhaps you refreshed your application"); - return null; - } + SessionManager manager = SessionManager.getInstance(); + ASLSession toReturn = manager.getASLSession(sessionID, user); + return toReturn; } @Override public SessionInfoBean checkSession() { - if (isFirstTime() == null) - setFirstTimeCheck(true); - - ASLSession session = getASLSession(); - if (session == null) - return new SessionInfoBean("","", true); //you are in development mode and refreshed the browser - + ASLSession session = null; + try { + session = getASLSession(); + if (session == null || session.getUsername() == null) { + UserLocalServiceUtil.getService(); + _log.warn("Liferay Portal Detected but session Expired"); + return new SessionInfoBean("",""); //tells session expired + } + } + catch (Exception e) { + _log.warn("Stopping session polling as you are in dev mode (am I wrong?)"); + return new SessionInfoBean("","", true); //tells that you are in development mode + } String user = session.getUsername(); String scope = session.getScope(); - - //check devMode - if (user == null && isFirstTime()) { - _log.warn("Stopping session polling as you are in dev mode (I think, am I wrong?)"); - return new SessionInfoBean("","", true); //tells that you are in development mode (you must be unless you're session expires in less than a minute) - } //else - setFirstTimeCheck(false); _log.trace("Session check OK for " + user + " at " + new Date()); if (user == null || user.compareTo("") == 0) { _log.warn("User is null at " + new Date()); @@ -67,14 +62,4 @@ public class SessionCheckerServiceImpl extends RemoteServiceServlet implements return new SessionInfoBean(session.getUsername(), session.getScope()); } - private void setFirstTimeCheck(boolean isFirstTime) { - //_log.trace("setFirstTimeCheck " + isFirstTime); - this.getThreadLocalRequest().getSession().setAttribute(FIRST_TIME, isFirstTime); - } - - private Boolean isFirstTime() { - Boolean toReturn = (Boolean) this.getThreadLocalRequest().getSession().getAttribute(FIRST_TIME); - //_log.trace("isFirstTime() " + toReturn); - return toReturn; - } }