diff --git a/pom.xml b/pom.xml
index ae433ed..ee1165d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
org.gcube.portlets.widgets
workspace-sharing-widget
jar
- 1.7.0-SNAPSHOT
+ 1.8.0-SNAPSHOT
gCube Workspace Sharing Widget
gCube Workspace Sharing Widget allows users to share gCube Workspace items
@@ -105,23 +105,12 @@
provided
-
- org.gcube.portal
- custom-portal-handler
- provided
-
org.gcube.portlets.user
gcube-widgets
provided
-
- org.gcube.applicationsupportlayer
- aslcore
- provided
-
-
org.gcube.applicationsupportlayer
accesslogger
diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java
index 70385a8..0b8ab10 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java
@@ -6,7 +6,6 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
-import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.common.homelibary.model.items.type.WorkspaceItemType;
import org.gcube.common.homelibrary.home.HomeLibrary;
import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
@@ -26,6 +25,7 @@ import org.gcube.common.portal.PortalContext;
import org.gcube.portlets.widgets.workspacesharingwidget.client.ConstantsSharing;
import org.gcube.portlets.widgets.workspacesharingwidget.client.rpc.WorkspaceSharingService;
import org.gcube.portlets.widgets.workspacesharingwidget.server.notifications.NotificationsProducer;
+import org.gcube.portlets.widgets.workspacesharingwidget.server.util.PortalContextInfo;
import org.gcube.portlets.widgets.workspacesharingwidget.server.util.ScopeUtility;
import org.gcube.portlets.widgets.workspacesharingwidget.server.util.UserUtil;
import org.gcube.portlets.widgets.workspacesharingwidget.server.util.WsUtil;
@@ -62,7 +62,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
*/
protected GWTWorkspaceSharingBuilder getGWTWorkspaceBuilder()
{
- return WsUtil.getGWTWorkspaceSharingBuilder(this.getThreadLocalRequest().getSession());
+ return WsUtil.getGWTWorkspaceSharingBuilder(this.getThreadLocalRequest());
}
/**
@@ -75,7 +75,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
*/
protected Workspace getWorkspace() throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException
{
- return WsUtil.getWorkspace(this.getThreadLocalRequest().getSession());
+ return WsUtil.getWorkspace(this.getThreadLocalRequest());
}
/**
@@ -86,7 +86,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
*/
protected NotificationsProducer getNotificationProducer(HttpServletRequest request){
- return WsUtil.getNotificationProducer(WsUtil.getAslSession(this.getThreadLocalRequest().getSession()), request);
+ return WsUtil.getNotificationProducer(request);
}
/**
@@ -96,7 +96,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
*/
protected ScopeUtility getScopeUtilFilter(){
- return WsUtil.getScopeUtilFilter(this.getThreadLocalRequest().getSession());
+ return WsUtil.getScopeUtilFilter(this.getThreadLocalRequest());
}
/**
@@ -115,7 +115,8 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
public List getAllContacts(boolean readGroupsFromHL, boolean readGroupsFromPortal) throws Exception {
try {
- ASLSession aslSession = WsUtil.getAslSession(this.getThreadLocalRequest().getSession()); //THIS FORCE THE SESSION CREATION
+
+ PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest());
logger.info("Get all contacts");
GWTWorkspaceSharingBuilder builder = getGWTWorkspaceBuilder();
@@ -140,7 +141,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
logger.info("Liferay User Manager getting list users by group: "+groupId);
List listContactsModel = builder.buildGXTListContactsModelFromUserModel(userManag.listUsersByGroup(groupId));
*/
- List users = UserUtil.getOrganizationUsers(aslSession.getScope());
+ List users = UserUtil.getOrganizationUsers(info.getCurrentScope());
if(users==null)
throw new Exception("An error occurred on recovering users from Portal, try again later");
@@ -164,10 +165,11 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
PortalContext context = PortalContext.getConfiguration();
logger.info("context.getInfrastructureName(): "+context.getInfrastructureName());
- logger.info("aslSession.getGroupName(): "+ aslSession.getGroupName());
- logger.info("aslSession.getScope().toString(): "+ aslSession.getScope());
+ String groupName = context.getCurrentGroupName(this.getThreadLocalRequest());
+ logger.info("context.getGroupName(): "+ groupName);
+ logger.info("context.getScope(): "+ info.getCurrentScope());
try{
- ScopeUtility scopeUtility = new ScopeUtility(aslSession.getScope());
+ ScopeUtility scopeUtility = new ScopeUtility(info.getCurrentScope());
if(scopeUtility.getVoName()!=null){
logger.info("VO name is not null, trying to calculate List VO");
@@ -175,10 +177,10 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
// String voPath = ConstantsSharing.PATH_SEPARATOR+context.getInfrastructureName() + ConstantsSharing.PATH_SEPARATOR + aslSession.getGroupName() + ConstantsSharing.PATH_SEPARATOR;
listContactsModel.addAll(builder.buildGXTListContactsModelFromVOs(lsVOs, scopeUtility.getVo()));
}else
- logger.warn("VO name is null, skipping list VO "+ aslSession.getGroupName());
+ logger.warn("VO name is null, skipping list VO "+ groupName);
}catch(Exception e){
- logger.warn("An error occurred on recovering vo name, skipping list VO "+ aslSession.getGroupName());
+ logger.warn("An error occurred on recovering vo name, skipping list VO "+ groupName);
}
}
@@ -285,8 +287,8 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
*/
@Override
public String getMyLogin(){
- ASLSession asl = WsUtil.getAslSession(this.getThreadLocalRequest().getSession());
- return asl.getUsername();
+ PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest());
+ return info.getUsername();
}
/* (non-Javadoc)
@@ -350,7 +352,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
*/
@Override
public boolean isSessionExpired() throws Exception {
- return WsUtil.isSessionExpired(this.getThreadLocalRequest().getSession());
+ return WsUtil.isSessionExpired(this.getThreadLocalRequest());
}
@@ -403,14 +405,12 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
// printContacts(listContacts);
List listLogin = UserUtil.getListLoginByInfoContactModel(listContacts);
-
WorkspaceSharedFolder sharedFolder = null;
-
List listSharedContact = null;
boolean sourceFolderIsShared = folder.isShared();
- if(sourceFolderIsShared){ //if source folder is already share... retrieve old list of sharing to notify
+ if(sourceFolderIsShared){ //if source folder is already shared... retrieve old list of sharing to notify
listSharedContact = getListUserSharedByFolderSharedId(folder.getIdentifier());
}
diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsProducer.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsProducer.java
index b8e2f08..d1bdbd6 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsProducer.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsProducer.java
@@ -6,7 +6,6 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.applicationsupportlayer.social.NotificationsManager;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
@@ -17,51 +16,54 @@ import org.gcube.portlets.widgets.workspacesharingwidget.server.util.UserUtil;
import org.gcube.portlets.widgets.workspacesharingwidget.server.util.WsUtil;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
+
/**
+ * The Class NotificationsProducer.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- *
+ * Nov 25, 2016
*/
public class NotificationsProducer {
protected ScopeBean scope;
-
protected static Logger logger = Logger.getLogger(NotificationsProducer.class);
-
protected NotificationsManager notificationsMng;
- protected ASLSession aslSession;
protected String userId;
/**
* Instantiates a new notifications producer.
*
- * @param aslSession the asl session
* @param request the request
*/
- public NotificationsProducer(ASLSession aslSession, HttpServletRequest request) {
- this.notificationsMng = WsUtil.getNotificationManager(aslSession, request);
- this.aslSession = aslSession;
- this.userId = aslSession.getUsername();
+ public NotificationsProducer(HttpServletRequest request) {
+ this.notificationsMng = WsUtil.getNotificationManager(request);
+ this.userId = WsUtil.getPortalContext(request).getUsername();
}
+ /**
+ * Gets the notifications mng.
+ *
+ * @return the notifications mng
+ */
public NotificationsManager getNotificationsMng() {
return notificationsMng;
}
+ /**
+ * Sets the notification mng.
+ *
+ * @param notificationMng the new notification mng
+ */
public void setNotificationMng(NotificationsManager notificationMng) {
this.notificationsMng = notificationMng;
}
- public ASLSession getAslSession() {
- return aslSession;
- }
-
-
/**
- * Runs a new thread to notify the contacts passed in input
- * @param listContacts
- * @param sharedFolder
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listContacts the list contacts
+ * @param sharedFolder the shared folder
*/
public void notifyFolderSharing(final List listContacts, final WorkspaceSharedFolder sharedFolder) {
@@ -103,10 +105,13 @@ public class NotificationsProducer {
/**
- * Runs a new thread to notify the contacts passed in input
- * @param folderItem
- * @param listContacts
- * @param sharedFolder
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listSharedContact the list shared contact
+ * @param folderItem the folder item
+ * @param itemOldName the item old name
+ * @param itemNewName the item new name
+ * @param idsharedFolder the idshared folder
*/
public void notifyFolderRenamed(final List listSharedContact, final WorkspaceItem folderItem, final String itemOldName, final String itemNewName, final String idsharedFolder) {
@@ -159,9 +164,12 @@ public class NotificationsProducer {
/**
- * Runs a new thread to notify the contacts passed in input
- * @param listContacts
- * @param sharedFolder
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listSharedContact the list shared contact
+ * @param previousName the previous name
+ * @param item the item
+ * @param sharedFolder the shared folder
*/
public void notifyItemRenamed(final List listSharedContact, final String previousName, final WorkspaceItem item, final WorkspaceSharedFolder sharedFolder) {
@@ -203,7 +211,8 @@ public class NotificationsProducer {
/**
- * Runs a new thread to notify the new contacts passed in input
+ * Runs a new thread to notify the new contacts passed in input.
+ *
* @param listSharedContact - list of contacts already shared
* @param listSharingContact - list of "new" contacts witch share
* @param sharedFolder - the shared folder
@@ -295,9 +304,10 @@ public class NotificationsProducer {
/**
- * Runs a new thread to notify the contacts passed in input
- * @param listContacts
- * @param unSharedFolder
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listContacts the list contacts
+ * @param unSharedFolder the un shared folder
*/
public void notifyFolderUnSharing(final List listContacts, final WorkspaceSharedFolder unSharedFolder) {
@@ -340,9 +350,11 @@ public class NotificationsProducer {
/**
- * Runs a new thread to notify the contacts passed in input
- * @param listContacts
- * @param workspaceItem
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listContacts the list contacts
+ * @param workspaceItem the workspace item
+ * @param sharedFolder the shared folder
*/
public void notifyAddedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceSharedFolder sharedFolder) {
@@ -395,9 +407,11 @@ public class NotificationsProducer {
/**
- * Runs a new thread to notify the contacts passed in input
- * @param listContacts
- * @param workspaceItem
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listContacts the list contacts
+ * @param workspaceItem the workspace item
+ * @param sharedFolder the shared folder
*/
public void notifyUpdatedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceSharedFolder sharedFolder) {
@@ -453,9 +467,11 @@ public class NotificationsProducer {
/**
- * Runs a new thread to notify the contacts passed in input
- * @param listContacts
- * @param sharedFolder
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listContacts the list contacts
+ * @param workspaceItem the workspace item
+ * @param sharedFolder the shared folder
*/
public void notifyMovedItemToSharing(final List listContacts, final WorkspaceItem workspaceItem, final WorkspaceSharedFolder sharedFolder) {
@@ -523,9 +539,11 @@ public class NotificationsProducer {
/**
- * Runs a new thread to notify the contacts passed in input
- * @param listContacts
- * @param sharedFolder
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listContacts the list contacts
+ * @param itemName the item name
+ * @param sharedFolder the shared folder
*/
public void notifyRemovedItemToSharing(final List listContacts, final String itemName, final WorkspaceSharedFolder sharedFolder) {
@@ -586,9 +604,10 @@ public class NotificationsProducer {
}
/**
- * Runs a new thread to notify the contacts passed in input
- * @param listContacts
- * @param unSharedFolder
+ * Runs a new thread to notify the contacts passed in input.
+ *
+ * @param listContacts the list contacts
+ * @param folderNameDeleted the folder name deleted
*/
public void notifySharedFolderDeleted(final List listContacts, final String folderNameDeleted) {
@@ -633,6 +652,11 @@ public class NotificationsProducer {
//DEBUG
+ /**
+ * Prints the contacts.
+ *
+ * @param listContacts the list contacts
+ */
private void printContacts(List listContacts){
System.out.println("Print contacts");
diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsUtil.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsUtil.java
index efd12c9..9d8f0b5 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsUtil.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/notifications/NotificationsUtil.java
@@ -7,7 +7,6 @@ import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
import org.gcube.common.homelibary.model.items.type.WorkspaceItemType;
import org.gcube.common.homelibrary.home.workspace.Workspace;
@@ -20,9 +19,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
+ * The Class NotificationsUtil.
+ *
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @May 27, 2013
- *
*/
public class NotificationsUtil {
@@ -33,13 +33,12 @@ public class NotificationsUtil {
* Send a notification if an item is added or updated to sharing folder.
*
* @param request the request
- * @param httpSession the http session
* @param sourceItem the source item
* @param sourceSharedId the source shared id
* @param folderDestinationItem the folder destination item
* @param isOverwrite the is overwrite
*/
- public static void checkSendNotifyChangedItemToShare(HttpServletRequest request, HttpSession httpSession, final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem, boolean isOverwrite) {
+ public static void checkSendNotifyChangedItemToShare(HttpServletRequest request, final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem, boolean isOverwrite) {
logger.info("checkSendNotifyAddItemToShare");
@@ -61,13 +60,13 @@ public class NotificationsUtil {
//if shareChangeCondition is true.. notifies added item to sharing
if(shareChangeCondition){
- Workspace workspace = WsUtil.getWorkspace(httpSession);
+ Workspace workspace = WsUtil.getWorkspace(request);
List listContacts = getListUserSharedByFolderSharedId(workspace, folderDestinationItem.getIdSharedFolder());
WorkspaceItem destinationSharedFolder = workspace.getItem(folderDestinationItem.getIdSharedFolder());
- NotificationsProducer np = new NotificationsProducer(WsUtil.getAslSession(httpSession), request);
+ NotificationsProducer np = new NotificationsProducer(request);
//SWITCH BEETWEEN ADDED OR UPDATED
if(!isOverwrite)
@@ -92,11 +91,12 @@ public class NotificationsUtil {
/**
+ * Gets the list user shared by folder shared id.
*
- * @param workspace
- * @param idSharedFolder
- * @return
- * @throws Exception
+ * @param workspace the workspace
+ * @param idSharedFolder the id shared folder
+ * @return the list user shared by folder shared id
+ * @throws Exception the exception
*/
public static List getListUserSharedByFolderSharedId(Workspace workspace, String idSharedFolder) throws Exception {
@@ -133,35 +133,27 @@ public class NotificationsUtil {
}
}
-
-
-
/**
+ * Check send notify remove item to share.
*
- * @param httpSession
- * @param sourceItemIsShared
- * @param oldItemName
- * @param oldItemId
- * @param sourceFolderSharedId
+ * @param request the request
+ * @param sourceItemIsShared the source item is shared
+ * @param oldItemName the old item name
+ * @param oldItemId the old item id
+ * @param sourceFolderSharedId the source folder shared id
*/
- public static void checkSendNotifyRemoveItemToShare(HttpServletRequest request, HttpSession httpSession, final boolean sourceItemIsShared, final String oldItemName, String oldItemId, final String sourceFolderSharedId) {
-
+ public static void checkSendNotifyRemoveItemToShare(HttpServletRequest request, final boolean sourceItemIsShared, final String oldItemName, String oldItemId, final String sourceFolderSharedId) {
logger.info("checkNotifyRemoveItemToShare:");
try{
if(!sourceItemIsShared){
-
logger.info("checkSendNotifyRemoveItemToShare returned, source item is not shared");
return;
}
String idSharedFolder = sourceFolderSharedId!=null?sourceFolderSharedId:"";
-
-// System.out.println("shareChangeCondition remove item: "+ shareChangeCondition);
-
-
boolean isRootFolderShared = checkIsRootFolderShared(oldItemId, idSharedFolder);
logger.info("isRootFolderShared is: "+ isRootFolderShared);
@@ -170,16 +162,13 @@ public class NotificationsUtil {
return;
}
-
- boolean isSharedFolder = isASharedFolderForId(httpSession,idSharedFolder);
-
+ boolean isSharedFolder = isASharedFolderForId(request,idSharedFolder);
logger.info("idSharedFolder is: "+ idSharedFolder +" is shared folder: "+isSharedFolder);
-
//Notify Removed Item To Sharing?
if(isSharedFolder && !isRootFolderShared){
- Workspace workspace = WsUtil.getWorkspace(httpSession);
+ Workspace workspace = WsUtil.getWorkspace(request);
//get contacts
List listContacts = getListUserSharedByFolderSharedId(workspace, idSharedFolder);
@@ -188,7 +177,7 @@ public class NotificationsUtil {
//System.out.println(" name sourceSharedFolder: "+ sourceSharedFolder.getName());
- NotificationsProducer np = new NotificationsProducer(WsUtil.getAslSession(httpSession), request);
+ NotificationsProducer np = new NotificationsProducer(request);
if(sourceSharedFolder instanceof WorkspaceSharedFolder)
np.notifyRemovedItemToSharing(listContacts, oldItemName, (WorkspaceSharedFolder) sourceSharedFolder);
@@ -206,9 +195,10 @@ public class NotificationsUtil {
}
/**
+ * Checks if is a root shared folder.
*
- * @param wsItem
- * @return
+ * @param wsItem the ws item
+ * @return true, if is a root shared folder
*/
public static boolean isARootSharedFolder(WorkspaceItem wsItem){
if(wsItem!=null)
@@ -216,22 +206,23 @@ public class NotificationsUtil {
return false;
}
+
/**
+ * Checks if is a shared folder for id.
*
- * @param wsItem
- * @return
+ * @param request the request
+ * @param itemId the item id
+ * @return true, if is a shared folder for id
*/
- public static boolean isASharedFolderForId(HttpSession httpSession, String itemId){
+ public static boolean isASharedFolderForId(HttpServletRequest request, String itemId){
if(itemId==null || itemId.isEmpty())
return false;
try {
- Workspace workspace = WsUtil.getWorkspace(httpSession);
-
+ Workspace workspace = WsUtil.getWorkspace(request);
WorkspaceItem wsItem = workspace.getItem(itemId);
-
if(wsItem!=null)
return wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER);
return false;
@@ -244,10 +235,11 @@ public class NotificationsUtil {
/**
+ * Check is root folder shared.
*
- * @param itemId
- * @param rootFolderSharedId
- * @return
+ * @param itemId the item id
+ * @param rootFolderSharedId the root folder shared id
+ * @return true, if successful
*/
public static boolean checkIsRootFolderShared(String itemId, String rootFolderSharedId) {
diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/PortalContextInfo.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/PortalContextInfo.java
new file mode 100644
index 0000000..a9cef60
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/PortalContextInfo.java
@@ -0,0 +1,251 @@
+/**
+ *
+ */
+package org.gcube.portlets.widgets.workspacesharingwidget.server.util;
+
+import java.io.Serializable;
+
+
+/**
+ * The Class PortalContextInfo.
+ *
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
+ * Nov 25, 2016
+ */
+public class PortalContextInfo implements Serializable{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7960309866466555863L;
+ private String username;
+ private String userFullName;
+ private String userEmail;
+ private String userAvatarID;
+ private String userAvatarURL;
+ private String currentScope;
+ private String userToken;
+ private long currGroupId;
+
+ /**
+ *
+ */
+ public PortalContextInfo() {
+
+ }
+
+
+ /**
+ * Instantiates a new portal context info.
+ *
+ * @param username the username
+ * @param userFullName the user full name
+ * @param userEmail the user email
+ * @param userAvatarID the user avatar id
+ * @param userAvatarURL the user avatar url
+ * @param currentScope the current scope
+ * @param userToken the user token
+ * @param currGroupId the curr group id
+ */
+ public PortalContextInfo(String username, String userFullName, String userEmail, String userAvatarID, String userAvatarURL, String currentScope, String userToken, long currGroupId) {
+ this.username = username;
+ this.userFullName = userFullName;
+ this.userEmail = userEmail;
+ this.userAvatarID = userAvatarID;
+ this.userAvatarURL = userAvatarURL;
+ this.currentScope = currentScope;
+ this.userToken = userToken;
+ this.currGroupId = currGroupId;
+
+ }
+
+
+
+ /**
+ * @return the username
+ */
+ public String getUsername() {
+
+ return username;
+ }
+
+
+
+ /**
+ * @return the userFullName
+ */
+ public String getUserFullName() {
+
+ return userFullName;
+ }
+
+
+
+ /**
+ * @return the userEmail
+ */
+ public String getUserEmail() {
+
+ return userEmail;
+ }
+
+
+
+ /**
+ * @return the userAvatarID
+ */
+ public String getUserAvatarID() {
+
+ return userAvatarID;
+ }
+
+
+
+ /**
+ * @return the userAvatarURL
+ */
+ public String getUserAvatarURL() {
+
+ return userAvatarURL;
+ }
+
+
+
+ /**
+ * @return the currentScope
+ */
+ public String getCurrentScope() {
+
+ return currentScope;
+ }
+
+
+
+ /**
+ * @return the userToken
+ */
+ public String getUserToken() {
+
+ return userToken;
+ }
+
+
+
+ /**
+ * @return the currGroupId
+ */
+ public long getCurrGroupId() {
+
+ return currGroupId;
+ }
+
+
+
+ /**
+ * @param username the username to set
+ */
+ public void setUsername(String username) {
+
+ this.username = username;
+ }
+
+
+
+ /**
+ * @param userFullName the userFullName to set
+ */
+ public void setUserFullName(String userFullName) {
+
+ this.userFullName = userFullName;
+ }
+
+
+
+ /**
+ * @param userEmail the userEmail to set
+ */
+ public void setUserEmail(String userEmail) {
+
+ this.userEmail = userEmail;
+ }
+
+
+
+ /**
+ * @param userAvatarID the userAvatarID to set
+ */
+ public void setUserAvatarID(String userAvatarID) {
+
+ this.userAvatarID = userAvatarID;
+ }
+
+
+
+ /**
+ * @param userAvatarURL the userAvatarURL to set
+ */
+ public void setUserAvatarURL(String userAvatarURL) {
+
+ this.userAvatarURL = userAvatarURL;
+ }
+
+
+
+ /**
+ * @param currentScope the currentScope to set
+ */
+ public void setCurrentScope(String currentScope) {
+
+ this.currentScope = currentScope;
+ }
+
+
+
+ /**
+ * @param userToken the userToken to set
+ */
+ public void setUserToken(String userToken) {
+
+ this.userToken = userToken;
+ }
+
+
+
+ /**
+ * @param currGroupId the currGroupId to set
+ */
+ public void setCurrGroupId(long currGroupId) {
+
+ this.currGroupId = currGroupId;
+ }
+
+
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+
+ StringBuilder builder = new StringBuilder();
+ builder.append("PortalContextInfo [username=");
+ builder.append(username);
+ builder.append(", userFullName=");
+ builder.append(userFullName);
+ builder.append(", userEmail=");
+ builder.append(userEmail);
+ builder.append(", userAvatarID=");
+ builder.append(userAvatarID);
+ builder.append(", userAvatarURL=");
+ builder.append(userAvatarURL);
+ builder.append(", currentScope=");
+ builder.append(currentScope);
+ builder.append(", userToken=");
+ builder.append(userToken);
+ builder.append(", currGroupId=");
+ builder.append(currGroupId);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/UserUtil.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/UserUtil.java
index f5ca602..61d4474 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/UserUtil.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/UserUtil.java
@@ -19,11 +19,12 @@ import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
/**
* The Class UserUtil.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Aug 3, 2015
+ * Nov 25, 2016
*/
public class UserUtil {
@@ -38,16 +39,13 @@ public class UserUtil {
* @return the user full name
*/
public static String getUserFullName(String portalLogin){
-// return user.getPortalLogin(); //for testing in eclipse
-
-// logger.trace("Finding full name for: "+portalLogin);
if(portalLogin==null)
return "";
logger.info("Get user full name for: "+portalLogin);
logger.info("Into portal: "+WsUtil.isWithinPortal());
- if (portalLogin.compareTo(WsUtil.TEST_USER) != 0 && WsUtil.isWithinPortal()) { //skip test.user
+ if (portalLogin != null && WsUtil.isWithinPortal()) { //skip test.user
GCubeUser curr = null;
@@ -56,9 +54,9 @@ public class UserUtil {
curr = um.getUserByUsername(portalLogin);
} catch (UserManagementSystemException e) {
- logger.error("An error occurred in getUserFullName "+e,e);
+ logger.warn("An error occurred in getUserFullName "+e);
} catch (UserRetrievalFault e) {
- logger.error("An error occurred in getUserFullName "+e,e);
+ logger.warn("An error occurred in getUserFullName "+e);
}
}catch (Exception e) {
logger.error("An error occurred in getUserFullName "+e,e);
@@ -67,7 +65,6 @@ public class UserUtil {
}
if (curr != null){
-// logger.trace("Return "+curr.getFullname() +" full name for: "+portalLogin);
return curr.getFullname();
}
}else{
diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/WsUtil.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/WsUtil.java
index bc3b976..bc9b60b 100644
--- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/WsUtil.java
+++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/WsUtil.java
@@ -10,8 +10,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
-import org.gcube.application.framework.core.session.ASLSession;
-import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.applicationsupportlayer.social.ApplicationNotificationsManager;
import org.gcube.applicationsupportlayer.social.NotificationsManager;
import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingSite;
@@ -21,13 +19,14 @@ import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.Workspace;
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
+import org.gcube.common.portal.PortalContext;
import org.gcube.common.scope.api.ScopeProvider;
-import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
import org.gcube.portlets.widgets.workspacesharingwidget.server.GWTWorkspaceSharingBuilder;
import org.gcube.portlets.widgets.workspacesharingwidget.server.notifications.NotificationsProducer;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VO;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VRE;
+import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,35 +34,22 @@ import com.liferay.portal.service.UserLocalServiceUtil;
/**
+ * The Class WsUtil.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * @Feb 18, 2014
- *
+ * Nov 25, 2016
*/
public class WsUtil {
- public static final String USERNAME_ATTRIBUTE = ScopeHelper.USERNAME_ATTRIBUTE;
public static final String WORKSPACEBUILDER_ATTRIBUTE = "WORKSPACE_SHARING_BUILDER_ATTRIBUTE";
public static final String NOTIFICATION_MANAGER = "NOTIFICATION_SHARING_MANAGER";
public static final String NOTIFICATION_PRODUCER = "NOTIFICATION_SHARING_PRODUCER";
public static final String WORKSPACE_SCOPE_UTIL = "WORKSPACE_SHARING_SCOPE_UTIL";
public static final String NOTIFICATION_PORTLET_CLASS_ID = "org.gcube.portlets.user.workspace.server.GWTWorkspaceServiceImpl"; //USE THE SAME OF WORKSPACE
-// public static final String TEST_SCOPE = "/gcube/devsec";
-// public static final String TEST_USER = "pasquale.pagano";
- public static final String TEST_SCOPE = "/gcube/devsec";
-// public static final String TEST_USER = "federico.defaveri";
-// public static final String TEST_USER = "massimiliano.assante";
-// public static final String TEST_USER = "pasquale.pagano";
-// public static final String TEST_USER = "francesco.mangiacrapa";
-// public static final String TEST_USER_FULL_NAME = "Francesco Mangiacrapa";
-// public static final String TEST_USER = "aureliano.gentile";
- public static final String TEST_USER = "test.user";
-// public static final String TEST_USER = "antonio.gioia";
- public static final String TEST_USER_FULL_NAME = "Test User";
protected static Logger logger = LoggerFactory.getLogger(WsUtil.class);
-// public static boolean withoutPortal = false;
/**
+ * Checks if is within portal.
*
* @return true if you're running into the portal, false if in development
*/
@@ -78,76 +64,46 @@ public class WsUtil {
}
}
- public static ASLSession getAslSession(HttpSession httpSession)
- {
- String sessionID = httpSession.getId();
- String user = (String) httpSession.getAttribute(USERNAME_ATTRIBUTE);
- ASLSession session;
-
- if (user == null) {
-
- /*USE ANOTHER ACCOUNT (OTHERWHISE BY TEST_USER) FOR RUNNING
- * COMMENT THIS IN DEVELOP ENVIROMENT (UNCOMMENT IN PRODUCTION)*/
- user=TEST_USER;
-
- //UNCOMMENT THIS IN DEVELOP ENVIROMENT
-// user = "francesco.mangiacrapa";
- logger.warn("WORKSPACE PORTLET STARTING IN TEST MODE - NO USER FOUND - PORTLETS STARTING WITH FOLLOWING SETTINGS:");
- logger.warn("session id: "+sessionID);
- logger.warn("TEST_USER: "+user);
- logger.warn("TEST_SCOPE: "+TEST_SCOPE);
- logger.warn("USERNAME_ATTRIBUTE: "+USERNAME_ATTRIBUTE);
- session = SessionManager.getInstance().getASLSession(sessionID, user);
- session.setScope(TEST_SCOPE);
- //MANDATORY FOR SOCIAL LIBRARY
- session.setUserAvatarId(user + "Avatar");
- session.setUserFullName(TEST_USER_FULL_NAME);
- session.setUserEmailAddress(user + "@mail.test");
- //SET HTTP SESSION ATTRIBUTE
- httpSession.setAttribute(USERNAME_ATTRIBUTE, user);
-// withoutPortal = true;
- return session;
-
- }else if(user.compareToIgnoreCase(TEST_USER)==0){
-// withoutPortal = true;
- //COMMENT THIS IN PRODUCTION ENVIROMENT
-// }else if(user.compareToIgnoreCase("francesco.mangiacrapa")==0){
-// withoutPortal = false;
-// END UNCOMMENT
- }else{
-// withoutPortal = false;
- }
-
- return SessionManager.getInstance().getASLSession(sessionID, user);
- }
/**
+ * Gets the portal context.
*
- * @param httpSession
- * @return true if current username into ASL session is WsUtil.TEST_USER, false otherwise
- * @throws Exception
+ * @param httpServletRequest the http servlet request
+ * @return the portal context
*/
- public static boolean isSessionExpired(HttpSession httpSession) throws Exception {
- logger.info("workspace session validating...");
- //READING USERNAME FROM ASL SESSION
- String userUsername = getAslSession(httpSession).getUsername();
- boolean isTestUser = userUsername.compareTo(WsUtil.TEST_USER)==0;
-
- //TODO UNCOMMENT THIS FOR RELEASE
- logger.info("Is "+WsUtil.TEST_USER+" test user? "+isTestUser);
-
- if(isTestUser){
- logger.error("workspace session is expired! username is: "+WsUtil.TEST_USER);
- return true; //is TEST_USER, session is expired
- }
-
- logger.info("workspace session is valid! current username is: "+userUsername);
-
- return false;
+ public static PortalContextInfo getPortalContext(HttpServletRequest httpServletRequest){
+ PortalContext pContext = PortalContext.getConfiguration();
+ //USER
+ GCubeUser user = pContext.getCurrentUser(httpServletRequest);
+ String username = user.getUsername();
+ String fullName = user.getFullname();
+ String email = user.getEmail();
+ String avatarID = user.getUserAvatarId();
+ String avatarURL = user.getUserAvatarURL();
+ //SESSION
+ String currentScope = pContext.getCurrentScope(httpServletRequest);
+ String userToken = pContext.getCurrentUserToken(httpServletRequest);
+ long currGroupId = pContext.getCurrentGroupId(httpServletRequest);
+ return new PortalContextInfo(username, fullName, email, avatarID, avatarURL, currentScope, userToken, currGroupId);
}
/**
+ * Checks if is session expired.
+ *
+ * @param httpServletRequest the http servlet request
+ * @return true, if is session expired
+ * @throws Exception the exception
+ */
+ public static boolean isSessionExpired(HttpServletRequest httpServletRequest) throws Exception {
+ logger.trace("workspace session validating...");
+ PortalContextInfo info = getPortalContext(httpServletRequest);
+ return info.getUsername()==null;
+ }
+
+
+ /**
+ * Gets the vres from infrastructure.
*
* @param infrastructure the infrastructure name
* @param startScopes the starting scopes
@@ -177,18 +133,26 @@ public class WsUtil {
return toReturn;
}
-
- public static Workspace getWorkspace(final HttpSession httpSession) throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException
+ /**
+ * Gets the workspace.
+ *
+ * @param httpServletRequest the http servlet request
+ * @return the workspace
+ * @throws InternalErrorException the internal error exception
+ * @throws HomeNotFoundException the home not found exception
+ * @throws WorkspaceFolderNotFoundException the workspace folder not found exception
+ */
+ public static Workspace getWorkspace(HttpServletRequest httpServletRequest) throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException
{
+ logger.trace("Get Workspace");
+ PortalContextInfo info = getPortalContext(httpServletRequest);
+ logger.trace("PortalContextInfo: "+info);
- logger.info("Get Workspace");
- final ASLSession session = getAslSession(httpSession);
- logger.info("ASLSession scope: "+session.getScope() + " username: "+session.getUsername());
+ ScopeProvider.instance.set(info.getCurrentScope());
+ logger.trace("Scope provider instancied");
- ScopeProvider.instance.set(session.getScope());
- logger.info("Scope provider instancied");
-
- Workspace workspace = HomeLibrary.getUserWorkspace(session.getUsername());
+ Workspace workspace = HomeLibrary.getUserWorkspace(info.getUsername());
+ HttpSession session = httpServletRequest.getSession();
if (session.getAttribute(WORKSPACEBUILDER_ATTRIBUTE) == null)
{
@@ -198,38 +162,37 @@ public class WsUtil {
//ADDED 03/09/2013
//TODO IS GROUP?
- builder.setUserLogged(new InfoContactModel(session.getUsername(), session.getUsername(), session.getUserFullName(), false));
+ builder.setUserLogged(new InfoContactModel(info.getUsername(), info.getUsername(), info.getUserFullName(), false));
session.setAttribute(WORKSPACEBUILDER_ATTRIBUTE, builder);
}
return workspace;
-
}
/**
* Gets the notification manager.
*
- * @param session the session
- * @param request the request
+ * @param httpServletRequest the http servlet request
* @return the notification manager
*/
- public static NotificationsManager getNotificationManager(ASLSession session, HttpServletRequest request)
+ public static NotificationsManager getNotificationManager(HttpServletRequest httpServletRequest)
{
-
+ PortalContextInfo info = getPortalContext(httpServletRequest);
+ HttpSession session = httpServletRequest.getSession();
NotificationsManager notifMng = (NotificationsManager) session.getAttribute(NOTIFICATION_MANAGER);
if (notifMng == null) {
try{
- logger.info("Create new NotificationsManager for user: "+session.getUsername());
+ logger.info("Create new NotificationsManager for user: "+info.getUsername());
logger.info("New ApplicationNotificationsManager with portlet class name: "+NOTIFICATION_PORTLET_CLASS_ID);
- SocialNetworkingSite site = new SocialNetworkingSite(request);
- SocialNetworkingUser curser = new SocialNetworkingUser(session.getUsername(), session.getUserEmailAddress(), session.getUserFullName(), session.getUserAvatarId());
- notifMng = new ApplicationNotificationsManager(site, session.getScope(), curser, NOTIFICATION_PORTLET_CLASS_ID);
+ SocialNetworkingSite site = new SocialNetworkingSite(httpServletRequest);
+ SocialNetworkingUser curser = new SocialNetworkingUser(info.getUsername(), info.getUserEmail(), info.getUserFullName(), info.getUserAvatarID());
+ notifMng = new ApplicationNotificationsManager(site, info.getCurrentScope(), curser, NOTIFICATION_PORTLET_CLASS_ID);
session.setAttribute(NOTIFICATION_MANAGER, notifMng);
}catch (Exception e) {
- logger.error("An error occurred instancing ApplicationNotificationsManager for user: "+session.getUsername(),e);
+ logger.error("An error occurred instancing ApplicationNotificationsManager for user: "+info.getUsername(),e);
}
}
@@ -240,56 +203,71 @@ public class WsUtil {
/**
* Gets the notification producer.
*
- * @param session the session
- * @param request the request
+ * @param httpServletRequest the http servlet request
* @return the notification producer
*/
- public static NotificationsProducer getNotificationProducer(ASLSession session, HttpServletRequest request)
+ public static NotificationsProducer getNotificationProducer(HttpServletRequest httpServletRequest)
{
-
+ PortalContextInfo info = getPortalContext(httpServletRequest);
+ HttpSession session = httpServletRequest.getSession();
NotificationsProducer notifProducer = (NotificationsProducer) session.getAttribute(NOTIFICATION_PRODUCER);
if (notifProducer == null) {
- logger.info("Create new Notification Producer for user: "+session.getUsername());
- notifProducer = new NotificationsProducer(session, request);
+ logger.info("Create new Notification Producer for user: "+info.getUsername());
+ notifProducer = new NotificationsProducer(httpServletRequest);
session.setAttribute(NOTIFICATION_PRODUCER, notifProducer);
}
return notifProducer;
}
- public static String getUserId(HttpSession httpSession) {
+ /**
+ * Gets the user id.
+ *
+ * @param httpServletRequest the http servlet request
+ * @return the user id
+ */
+ public static String getUserId(HttpServletRequest httpServletRequest) {
- ASLSession session = getAslSession(httpSession);
-
- return session.getUsername();
+ PortalContextInfo info = getPortalContext(httpServletRequest);
+ return info.getUsername();
}
- public static boolean isVRE(ASLSession session){
+ /**
+ * Checks if is vre.
+ *
+ * @param scope the scope
+ * @return true, if is vre
+ */
+ public static boolean isVRE(String scope){
- String currentScope = session.getScopeName();
-
- int slashCount = StringUtils.countMatches(currentScope, "/");
+ int slashCount = StringUtils.countMatches(scope, "/");
if(slashCount < 3){
- logger.info("currentScope is not VRE");
+ logger.trace("currentScope is not VRE");
return false;
}
- logger.info("currentScope is VRE");
+ logger.trace("currentScope is VRE");
return true;
-
}
- public static ScopeUtility getScopeUtilFilter(HttpSession httpSession){
- ASLSession session = getAslSession(httpSession);
+ /**
+ * Gets the scope util filter.
+ *
+ * @param httpServletRequest the http servlet request
+ * @return the scope util filter
+ */
+ public static ScopeUtility getScopeUtilFilter(HttpServletRequest httpServletRequest){
+
+ PortalContextInfo info = getPortalContext(httpServletRequest);
ScopeUtility scopeUtil = null;
try{
- scopeUtil = (ScopeUtility) session.getAttribute(WsUtil.WORKSPACE_SCOPE_UTIL);
+ scopeUtil = (ScopeUtility) httpServletRequest.getSession().getAttribute(WsUtil.WORKSPACE_SCOPE_UTIL);
if(scopeUtil==null){
- scopeUtil = new ScopeUtility(session.getScopeName());
+ scopeUtil = new ScopeUtility(info.getCurrentScope());
}
}catch (Exception e) {
@@ -300,15 +278,17 @@ public class WsUtil {
}
/**
- * @param session
- * @return
+ * Gets the GWT workspace sharing builder.
+ *
+ * @param httpServletRequest the http servlet request
+ * @return the GWT workspace sharing builder
*/
- public static GWTWorkspaceSharingBuilder getGWTWorkspaceSharingBuilder(HttpSession httpSession) {
- ASLSession session = getAslSession(httpSession);
+ public static GWTWorkspaceSharingBuilder getGWTWorkspaceSharingBuilder(HttpServletRequest httpServletRequest) {
+ PortalContextInfo info = getPortalContext(httpServletRequest);
GWTWorkspaceSharingBuilder builder = null;
try{
- builder = (GWTWorkspaceSharingBuilder) session.getAttribute(WsUtil.WORKSPACEBUILDER_ATTRIBUTE);
+ builder = (GWTWorkspaceSharingBuilder) httpServletRequest.getSession().getAttribute(WsUtil.WORKSPACEBUILDER_ATTRIBUTE);
if(builder==null)
return new GWTWorkspaceSharingBuilder();