From e37f8b2dd657e0e3d6d5d4de9174b05ee2c9ebff Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Fri, 20 Jan 2017 13:26:38 +0000 Subject: [PATCH] Removed currUserId parameter from client-side required by external servlets git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-uploader@141665 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/changelog.xml | 10 ++- pom.xml | 2 +- .../client/ConstantsWorkspaceUploader.java | 5 +- .../client/WorkspaceUploader.java | 1 - .../client/uploader/DialogUpload.java | 2 +- .../client/uploader/MultipleDilaogUpload.java | 1 - .../uploader/dragdrop/MultipleDNDUpload.java | 17 +++-- .../server/WorkspaceUploadServletStream.java | 74 ++++++++++--------- .../server/WorkspaceUploaderServiceImpl.java | 5 +- .../server/WorkspaceUploaderWsUtil.java | 19 +++-- .../NotificationsWorkspaceUploader.java | 14 ++-- ...otificationsWorkspaceUploaderProducer.java | 43 +---------- .../server/upload/WorkspaceUploaderMng.java | 24 +++--- .../workspaceuploader/server/util/WsUtil.java | 37 +++++----- 14 files changed, 116 insertions(+), 138 deletions(-) diff --git a/distro/changelog.xml b/distro/changelog.xml index 892144a..17b35d3 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,6 +1,12 @@ - - Feature #5901 Remove ASL Dependency from workspace-uploader Widget + + Removed currUserId parameter from client-side + + + Feature #5901 Remove ASL Dependency from workspace-uploader + Widget Bug #6096 Fixed org.gcube.portlets.widgets workspace-uploader jar - 1.6.0-SNAPSHOT + 1.6.1-SNAPSHOT Workspace Uploader Widget Workspace Uploader Widget allows your application to upload file/s in the gCube Workspace diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ConstantsWorkspaceUploader.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ConstantsWorkspaceUploader.java index 9f5daa9..2c950df 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ConstantsWorkspaceUploader.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ConstantsWorkspaceUploader.java @@ -3,11 +3,12 @@ package org.gcube.portlets.widgets.workspaceuploader.client; import com.google.gwt.core.client.GWT; + /** * The Class ConstantsWorkspaceUploader. * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it - * Aug 3, 2015 + * Jan 20, 2017 */ public class ConstantsWorkspaceUploader { @@ -24,7 +25,7 @@ public class ConstantsWorkspaceUploader { // UPLOAD SERVLET PARAMETERS public static final String CURR_GROUP_ID = "currGroupId"; - public static final String CURR_USER_ID = "currUserId"; + //public static final String CURR_USER_ID = "currUserId"; public static final String IS_OVERWRITE = "isOverwrite"; public static final String UPLOAD_TYPE = "uploadType"; public static final String ID_FOLDER = "idFolder"; diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java index 789bad0..6797db8 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java @@ -1,7 +1,6 @@ package org.gcube.portlets.widgets.workspaceuploader.client; import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE; -import org.gcube.portal.clientcontext.client.GCubeClientContext; import org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUpload; import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload; diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java index e039af1..a596842 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java @@ -105,7 +105,7 @@ public class DialogUpload extends ClosableDialog implements HasWorskpaceUploadNo // Add hidden parameters panel.add(new Hidden(ConstantsWorkspaceUploader.CURR_GROUP_ID, GCubeClientContext.getCurrentContextId())); - panel.add(new Hidden(ConstantsWorkspaceUploader.CURR_USER_ID, GCubeClientContext.getCurrentUserId())); + //panel.add(new Hidden(ConstantsWorkspaceUploader.CURR_USER_ID, GCubeClientContext.getCurrentUserId())); panel.add(new Hidden(ConstantsWorkspaceUploader.ID_FOLDER,parentId)); panel.add(new Hidden(ConstantsWorkspaceUploader.UPLOAD_TYPE,uploadType.toString())); diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUpload.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUpload.java index 4e7cb43..87d52b9 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUpload.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUpload.java @@ -6,7 +6,6 @@ package org.gcube.portlets.widgets.workspaceuploader.client.uploader; import java.util.ArrayList; import java.util.Arrays; - import org.gcube.portlets.widgets.workspaceuploader.client.ConstantsWorkspaceUploader; import org.gcube.portlets.widgets.workspaceuploader.client.DialogResult; import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploaderServiceAsync; diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/dragdrop/MultipleDNDUpload.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/dragdrop/MultipleDNDUpload.java index fda3957..823724d 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/dragdrop/MultipleDNDUpload.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/dragdrop/MultipleDNDUpload.java @@ -41,7 +41,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload private String folder_parent_id = ConstantsWorkspaceUploader.FOLDER_PARENT_ID; private String item_name = ConstantsWorkspaceUploader.ITEM_NAME; private String scopeGroupId = ConstantsWorkspaceUploader.CURR_GROUP_ID; - private String currUserId = ConstantsWorkspaceUploader.CURR_USER_ID; + //private String currUserId = ConstantsWorkspaceUploader.CURR_USER_ID; public static final String FILE_DELEMITER = ";"; private Widget onlyChild; @@ -74,7 +74,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload HTML html = new HTML(dnd); this.add(html); scopeGroupId = GCubeClientContext.getCurrentContextId(); - currUserId = GCubeClientContext.getCurrentUserId(); + //currUserId = GCubeClientContext.getCurrentUserId(); } /** * Instantiates a new multiple dnd upload. @@ -89,7 +89,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload HTML html = new HTML(dnd); this.add(html); scopeGroupId = GCubeClientContext.getCurrentContextId(); - currUserId = GCubeClientContext.getCurrentUserId(); + //currUserId = GCubeClientContext.getCurrentUserId(); setParameters(parentId, uploadType); } @@ -138,7 +138,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload this.idFolder = parentId; this.type = uploadType; this.scopeGroupId = GCubeClientContext.getCurrentContextId(); - this.currUserId = GCubeClientContext.getCurrentUserId(); + //this.currUserId = GCubeClientContext.getCurrentUserId(); } /** @@ -572,8 +572,8 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload var scopeGroupId = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::scopeGroupId; console.log("scopeGroupId: " + scopeGroupId); - var currUserId = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::currUserId; - console.log("currUserId: " + currUserId); + //var currUserId = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::currUserId; + //console.log("currUserId: " + currUserId); if (idfolder === null || idfolder === undefined || uploadType === null @@ -651,7 +651,7 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload formdata.append("uploadType", uploadType); formdata.append("idFolder", idfolder); formdata.append("currGroupId", scopeGroupId); - formdata.append("currUserId", currUserId); + //formdata.append("currUserId", currUserId); var overwrite = false; formdata.append("isOverwrite", overwrite); @@ -677,7 +677,8 @@ public class MultipleDNDUpload extends LayoutPanel implements HasWorskpaceUpload //var scopegroupid = instance.@org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload::scopeGroupId; console.log("item_name: " + item_name); - var params = folder_parent_id+"="+idfolder+"&"+item_name+"="+files[i].name+"&currGroupId="+scopeGroupId+"&currUserId="+currUserId; + var params = folder_parent_id+"="+idfolder+"&"+item_name+"="+files[i].name+"&currGroupId="+scopeGroupId; + //var params = folder_parent_id+"="+idfolder+"&"+item_name+"="+files[i].name+"&currGroupId="+scopeGroupId+"&currUserId="+currUserId; console.log("params: " + params); var response = isFileOverwrite(wsUtil, params, ""); console.log("response overwrite: " + response); diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java index 8884d6d..2f100f2 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java @@ -60,6 +60,7 @@ import org.gcube.portlets.widgets.workspaceuploader.shared.HandlerResultMessage; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploadFile; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem.UPLOAD_STATUS; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -85,7 +86,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet public static final String VRE_ID_ATTR_NAME = "gcube-vreid"; public static final String CURR_GROUP_ID = ConstantsWorkspaceUploader.CURR_GROUP_ID; - public static final String CURR_USER_ID = ConstantsWorkspaceUploader.CURR_USER_ID; + //public static final String CURR_USER_ID = ConstantsWorkspaceUploader.CURR_USER_ID; public static final String UPLOAD_TYPE = ConstantsWorkspaceUploader.UPLOAD_TYPE; @@ -183,12 +184,12 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet logger.info("UPLOAD-SERVLET session: "+session); logger.debug("UPLOAD-SERVLET (" + session.getId() + ") new upload request received."); -// if(WsUtil.isSessionExpired(session)){ -// logger.error("SESSION_EXPIRED: session is expired"); -// sendSessionExpired(response, "SESSION_EXPIRED: session is expired"); -// return; -//// sendError(response, "SESSION_EXPIRED: session is expired"); -// } + + if(WsUtil.isSessionExpired(request)){ + logger.error("SESSION_EXPIRED: session is expired"); + sendSessionExpired(response, "SESSION_EXPIRED: session is expired"); + return; + } String destinationId = null; String uploadType = null; @@ -196,7 +197,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet // String clientUploadKey = null; FileItemStream uploadItem = null; ArrayList listClientUploadKeys = null; - + GCubeUser user = PortalContext.getConfiguration().getCurrentUser(request); FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload servletFileUpload = new ServletFileUpload(factory); @@ -211,6 +212,8 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet String scopeGroupId = ""; String currUserId = ""; //GET FILE STREAM + + while (fileItemIterator.hasNext()) { FileItemStream item = fileItemIterator.next(); @@ -249,18 +252,18 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet logger.debug("currentGroupId into PortalContext scope= " + PortalContext.getConfiguration().getCurrentScope(scopeGroupId)); } - if (item.isFormField() && CURR_USER_ID.equals(item.getFieldName())){ - currUserId = Streams.asString(item.openStream()); - logger.debug("currUserId passed as parameter = " + currUserId); - logger.debug("currUserinto PortalContext = " + PortalContext.getConfiguration().getCurrentUser(request)); - } +// if (item.isFormField() && CURR_USER_ID.equals(item.getFieldName())){ +// currUserId = Streams.asString(item.openStream()); +// logger.debug("currUserId passed as parameter = " + currUserId); +// logger.debug("currUserinto PortalContext = " + PortalContext.getConfiguration().getCurrentUser(request)); +// } //MUST BE THE LAST PARAMETER TRASMITTED if (UPLOAD_FORM_ELEMENT.equals(item.getFieldName())){ uploadItem = item; logger.debug("UPLOAD_FORM_ELEMENT OK "+uploadItem.getName() + " scopeGroupId="+scopeGroupId); // break; - uploadData(currUserId, scopeGroupId, request, response, uploadItem, destinationId, uploadType, listClientUploadKeys.get(uploadItemsCnt), isOverwrite); + uploadData(user, scopeGroupId, request, response, uploadItem, destinationId, uploadType, listClientUploadKeys.get(uploadItemsCnt), isOverwrite); uploadItemsCnt++; } } @@ -350,7 +353,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet /** * Upload data. * - * @param currUserId the curr user id + * @param user the user * @param scopeGroupId the scope group id * @param request the request * @param response the response @@ -362,7 +365,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet * @throws ServletException the servlet exception * @throws IOException Signals that an I/O exception has occurred. */ - private void uploadData(String currUserId, String scopeGroupId, HttpServletRequest request, final HttpServletResponse response, final FileItemStream uploadItem, String destinationId,String uploadType,String clientUploadKey, boolean isOverwrite) throws ServletException, IOException{ + private void uploadData(GCubeUser user, String scopeGroupId, HttpServletRequest request, final HttpServletResponse response, final FileItemStream uploadItem, String destinationId,String uploadType,String clientUploadKey, boolean isOverwrite) throws ServletException, IOException{ String fileName = uploadItem.getName(); logger.info("Upload servlet parameters: [fileName: "+fileName+ ", destinationId: "+destinationId +", uploadType: "+uploadType+", isOverwrite: "+isOverwrite+", clientUploadKey: "+clientUploadKey+"]"); @@ -402,9 +405,11 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet // return; Workspace wa = null; + GCubeUser currUser; try { - logger.debug("getWorkspace from HL scopeGroupId="+scopeGroupId +", userId="+currUserId); - wa = WsUtil.getWorkspace(request, scopeGroupId, currUserId); + logger.debug("getWorkspace from HL scopeGroupId="+scopeGroupId +", userId="+user); + currUser = PortalContext.getConfiguration().getCurrentUser(request); + wa = WsUtil.getWorkspace(request, scopeGroupId, currUser); } catch (Exception e) { logger.error("Error during workspace retrieving", e); saveWorkspaceUploaderStatus(workspaceUploader, UPLOAD_STATUS.FAILED, "An error occurred during upload: "+fileName+". Error processing request in upload servlet", request.getSession()); @@ -490,16 +495,16 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet String newItemName = itemName; logger.debug("createTemplate: "+newItemName); - createTemplate(currUserId, scopeGroupId, request, workspaceUploader, request.getSession(), wa, newItemName, inputStream, destinationFolder, response, isOverwrite); + createTemplate(user, scopeGroupId, request, workspaceUploader, request.getSession(), wa, newItemName, inputStream, destinationFolder, response, isOverwrite); }else if(isZipFile && extension.compareToIgnoreCase(D4SR)==0){ //Create REPORT String newItemName = itemName; logger.debug("createReport: "+newItemName); - createReport(currUserId, scopeGroupId, request, workspaceUploader, request.getSession(), wa, newItemName, inputStream, destinationFolder, response, isOverwrite); + createReport(user, scopeGroupId, request, workspaceUploader, request.getSession(), wa, newItemName, inputStream, destinationFolder, response, isOverwrite); }else{ //CREATE AN EXTERNAL FILE - workspaceUploader = WorkspaceUploaderMng.uploadFile(currUserId, scopeGroupId, request, workspaceUploader, request.getSession(), wa, itemName, inputStream, destinationFolder, contentType, isOverwrite, size); + workspaceUploader = WorkspaceUploaderMng.uploadFile(user, scopeGroupId, request, workspaceUploader, request.getSession(), wa, itemName, inputStream, destinationFolder, contentType, isOverwrite, size); if(workspaceUploader==null) throw new Exception("Error when creating uploader, it is null!"); @@ -514,7 +519,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet if (MimeTypeUtil.isZipContentType(uploadItem.getContentType())){ //UNZIP?? logger.debug("Unziping content"); //THE WORKSPACE HAS BEEN INSTANCIED ABOVE - workspaceUploader = WorkspaceUploaderMng.uploadArchive(currUserId, scopeGroupId, workspaceUploader, request, itemName, inputStream, destinationFolder, size); + workspaceUploader = WorkspaceUploaderMng.uploadArchive(user, scopeGroupId, workspaceUploader, request, itemName, inputStream, destinationFolder, size); if(workspaceUploader==null) throw new Exception("Error when creating uploader, it is null!"); @@ -522,7 +527,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet sendMessage(response, workspaceUploader.getIdentifier()); } else{ //THE WORKSPACE HAS BEEN INSTANCIED ABOVE - workspaceUploader = WorkspaceUploaderMng.uploadFile(currUserId, scopeGroupId, request, workspaceUploader, request.getSession(), wa, itemName, inputStream, destinationFolder, contentType, isOverwrite, size); + workspaceUploader = WorkspaceUploaderMng.uploadFile(user, scopeGroupId, request, workspaceUploader, request.getSession(), wa, itemName, inputStream, destinationFolder, contentType, isOverwrite, size); if(workspaceUploader==null) throw new Exception("Error when creating uploader, it is null!"); @@ -664,7 +669,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet /** * Notify upload in shared folder. * - * @param currUserId the curr user id + * @param currUser the curr user * @param scopeGroupId the scope group id * @param request the request * @param httpSession the http session @@ -673,7 +678,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet * @param destinationFolderId the destination folder id * @param isOverwrite the is overwrite */ - public static void notifyUploadInSharedFolder(final String currUserId, final String scopeGroupId, final HttpServletRequest request, final HttpSession httpSession, final Workspace workspace, final String itemId, final String destinationFolderId, final boolean isOverwrite){ + public static void notifyUploadInSharedFolder(final GCubeUser currUser, final String scopeGroupId, final HttpServletRequest request, final HttpSession httpSession, final Workspace workspace, final String itemId, final String destinationFolderId, final boolean isOverwrite){ logger.trace("[2] HttpServletRequest is: URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); final NotificationsWorkspaceUploaderProducer np = new NotificationsWorkspaceUploaderProducer(scopeGroupId, httpSession,request); new Thread(){ @@ -684,7 +689,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet String sourceSharedId = sourceItem.getIdSharedFolder(); WorkspaceItem folderDestinationItem = workspace.getItem(destinationFolderId); logger.trace("[3] HttpServletRequest is: URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); - NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(request, currUserId, scopeGroupId, np, httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite); + NotificationsWorkspaceUploader.checkSendNotifyChangedItemToShare(request, currUser, scopeGroupId, np, httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite); } catch (Exception e) { logger.error("Error in notifyUploadInSharedFolder", e); } @@ -737,7 +742,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet /** * Creates the report. * - * @param currUserId the curr user id + * @param currUser the curr user * @param scopeGroupId the scope group id * @param request the request * @param workspaceUploader the workspace uploader @@ -753,7 +758,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet * @throws InternalErrorException the internal error exception * @throws IOException Signals that an I/O exception has occurred. */ - private void createReport(String currUserId, String scopeGroupId, final HttpServletRequest request, WorkspaceUploaderItem workspaceUploader, HttpSession httpSession, Workspace wa, String itemName, InputStream fileInputStream, WorkspaceFolder destinationFolder, HttpServletResponse response, boolean isOverwrite) throws InsufficientPrivilegesException, ItemAlreadyExistException, InternalErrorException, IOException{ + private void createReport(GCubeUser currUser, String scopeGroupId, final HttpServletRequest request, WorkspaceUploaderItem workspaceUploader, HttpSession httpSession, Workspace wa, String itemName, InputStream fileInputStream, WorkspaceFolder destinationFolder, HttpServletResponse response, boolean isOverwrite) throws InsufficientPrivilegesException, ItemAlreadyExistException, InternalErrorException, IOException{ try { @@ -763,7 +768,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet itemName = WorkspaceUtil.getUniqueName(itemName, destinationFolder); report = wa.createReport(itemName, "", Calendar.getInstance(), Calendar.getInstance(), "", "", "", 0, "",fileInputStream, destinationFolder.getId()); - notifyUploadInSharedFolder(currUserId, scopeGroupId, request, httpSession,wa,report.getId(),destinationFolder.getId(), isOverwrite); + notifyUploadInSharedFolder(currUser, scopeGroupId, request, httpSession,wa,report.getId(),destinationFolder.getId(), isOverwrite); sendMessage(response, "File "+report.getName()+" imported correctly in "+destinationFolder.getPath()); } else{ //CASE OVERWRITE @@ -771,7 +776,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet if(rep!=null){ - notifyUploadInSharedFolder(currUserId, scopeGroupId, request, httpSession,wa,rep.getId(),destinationFolder.getId(), isOverwrite); + notifyUploadInSharedFolder(currUser, scopeGroupId, request, httpSession,wa,rep.getId(),destinationFolder.getId(), isOverwrite); sendMessage(response, "File "+rep.getName()+" imported correctly in "+destinationFolder.getPath()); } else @@ -799,10 +804,11 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet } + /** * Creates the template. * - * @param currUserId the curr user id + * @param currUser the curr user * @param scopeGroupId the scope group id * @param request the request * @param workspaceUploader the workspace uploader @@ -818,7 +824,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet * @throws InternalErrorException the internal error exception * @throws IOException Signals that an I/O exception has occurred. */ - private void createTemplate(String currUserId, String scopeGroupId, final HttpServletRequest request, WorkspaceUploaderItem workspaceUploader, HttpSession httpSession, Workspace wa, String itemName, InputStream fileInputStream, WorkspaceFolder destinationFolder, HttpServletResponse response, boolean isOverwrite) throws InsufficientPrivilegesException, ItemAlreadyExistException, InternalErrorException, IOException{ + private void createTemplate(GCubeUser currUser, String scopeGroupId, final HttpServletRequest request, WorkspaceUploaderItem workspaceUploader, HttpSession httpSession, Workspace wa, String itemName, InputStream fileInputStream, WorkspaceFolder destinationFolder, HttpServletResponse response, boolean isOverwrite) throws InsufficientPrivilegesException, ItemAlreadyExistException, InternalErrorException, IOException{ try { @@ -828,7 +834,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet itemName = WorkspaceUtil.getUniqueName(itemName, destinationFolder); template = wa.createReportTemplate(itemName, "", Calendar.getInstance(), Calendar.getInstance(), "", "", 0, "", fileInputStream, destinationFolder.getId()); - notifyUploadInSharedFolder(currUserId, scopeGroupId, request, httpSession,wa,template.getId(),destinationFolder.getId(), isOverwrite); + notifyUploadInSharedFolder(currUser, scopeGroupId, request, httpSession,wa,template.getId(),destinationFolder.getId(), isOverwrite); sendMessage(response, "File "+template.getName()+" imported correctly in "+destinationFolder.getPath()); }else{ //CASE OVERWRITE @@ -836,7 +842,7 @@ public class WorkspaceUploadServletStream extends HttpServlet implements Servlet if(rep!=null){ - notifyUploadInSharedFolder(currUserId, scopeGroupId, request, httpSession,wa,rep.getId(),destinationFolder.getId(), isOverwrite); + notifyUploadInSharedFolder(currUser, scopeGroupId, request, httpSession,wa,rep.getId(),destinationFolder.getId(), isOverwrite); sendMessage(response, "File "+rep.getName()+" imported correctly in "+destinationFolder.getPath()); } else diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java index 2b1aa69..041f8a1 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java @@ -110,7 +110,7 @@ public class WorkspaceUploaderServiceImpl extends RemoteServiceServlet implement try { String scopeGroupId = ""+PortalContext.getConfiguration().getCurrentGroupId(getThreadLocalRequest()); GCubeUser currUser = PortalContext.getConfiguration().getCurrentUser(getThreadLocalRequest()); - workspace = WsUtil.getWorkspace(getThreadLocalRequest(), scopeGroupId, currUser.getUserId()+""); + workspace = WsUtil.getWorkspace(getThreadLocalRequest(), scopeGroupId, currUser); if(workspace!=null) return workspace.getRoot().getId(); } catch (Exception e) { @@ -132,8 +132,7 @@ public class WorkspaceUploaderServiceImpl extends RemoteServiceServlet implement try { String scopeGroupId = ""+PortalContext.getConfiguration().getCurrentGroupId(getThreadLocalRequest()); GCubeUser currUser = PortalContext.getConfiguration().getCurrentUser(getThreadLocalRequest()); - String currUserId = currUser!=null?currUser.getUserId()+"":null; - Workspace workspace = WsUtil.getWorkspace(getThreadLocalRequest(), scopeGroupId, currUserId); + Workspace workspace = WsUtil.getWorkspace(getThreadLocalRequest(), scopeGroupId, currUser); WorkspaceItem wsItem = workspace.getItem(parentId); //GET PARENT if(wsItem.getType().equals(WorkspaceItemType.FOLDER) || wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderWsUtil.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderWsUtil.java index 06f5820..ed3896e 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderWsUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderWsUtil.java @@ -10,8 +10,10 @@ import javax.servlet.http.HttpServletResponse; import org.gcube.common.homelibary.model.items.type.WorkspaceItemType; import org.gcube.common.homelibrary.home.workspace.Workspace; import org.gcube.common.homelibrary.home.workspace.WorkspaceItem; +import org.gcube.common.portal.PortalContext; import org.gcube.portlets.widgets.workspaceuploader.client.ConstantsWorkspaceUploader; import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,14 +36,14 @@ public class WorkspaceUploaderWsUtil extends HttpServlet { String folderParentId = req.getParameter(ConstantsWorkspaceUploader.FOLDER_PARENT_ID); String itemName = req.getParameter(ConstantsWorkspaceUploader.ITEM_NAME); String currGroupId = req.getParameter(ConstantsWorkspaceUploader.CURR_GROUP_ID); - String currUserId = req.getParameter(ConstantsWorkspaceUploader.CURR_USER_ID); + //String currUserId = req.getParameter(ConstantsWorkspaceUploader.CURR_USER_ID); logger.debug("folderParentId: "+folderParentId); logger.debug("itemName: "+itemName); logger.debug("currGroupId: "+currGroupId); - logger.debug("currUserId: "+currUserId); + //logger.debug("currUserId: "+currUserId); try { - String itemId = itemExistsInWorkpaceFolder(currUserId, currGroupId, req, folderParentId, itemName); + String itemId = itemExistsInWorkpaceFolder(currGroupId, req, folderParentId, itemName); sendOKMessage(resp, itemId); } catch (Exception e) { @@ -50,10 +52,10 @@ public class WorkspaceUploaderWsUtil extends HttpServlet { } } + /** * Item exists in workpace folder. * - * @param currUserId the curr user id * @param currGroupId the curr group id * @param req the req * @param parentId the parent id @@ -61,10 +63,15 @@ public class WorkspaceUploaderWsUtil extends HttpServlet { * @return the string * @throws Exception the exception */ - public String itemExistsInWorkpaceFolder(String currUserId, String currGroupId, HttpServletRequest req, String parentId, String itemName) throws Exception { + public String itemExistsInWorkpaceFolder(String currGroupId, HttpServletRequest req, String parentId, String itemName) throws Exception { logger.trace("get itemExistsInWorkpace for name: "+itemName+", by parentId: "+parentId); try { - Workspace workspace = WsUtil.getWorkspace(req, currGroupId, currUserId); + GCubeUser gcubeUser = PortalContext.getConfiguration().getCurrentUser(req); + //IN THIS CASE THE SESSION EXPIRED IS MANAGED BY UPLOAD SERVLET + if(gcubeUser==null) + return null; + + Workspace workspace = WsUtil.getWorkspace(req, currGroupId, gcubeUser); WorkspaceItem wsItem = workspace.getItem(parentId); //GET PARENT if(wsItem.getType().equals(WorkspaceItemType.FOLDER) || wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java index 645e1e4..f2ae8c6 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java @@ -17,6 +17,7 @@ import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder; import org.gcube.portlets.widgets.workspaceuploader.server.util.UserUtil; import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil; import org.gcube.portlets.widgets.workspaceuploader.shared.ContactModel; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; /** * The Class NotificationsWorkspaceUploader. @@ -29,12 +30,11 @@ public class NotificationsWorkspaceUploader { protected static Logger logger = Logger.getLogger(NotificationsWorkspaceUploader.class); - /** * Check send notify changed item to share. * * @param request the request - * @param currUserId the curr user id + * @param currUser the curr user * @param scopeGroupId the scope group id * @param np the np * @param httpSession the http session @@ -43,7 +43,7 @@ public class NotificationsWorkspaceUploader { * @param folderDestinationItem the folder destination item * @param isOverwrite the is overwrite */ - public static void checkSendNotifyChangedItemToShare(HttpServletRequest request, String currUserId, String scopeGroupId, NotificationsWorkspaceUploaderProducer np, HttpSession httpSession, final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem, boolean isOverwrite) { + public static void checkSendNotifyChangedItemToShare(HttpServletRequest request, GCubeUser currUser, String scopeGroupId, NotificationsWorkspaceUploaderProducer np, HttpSession httpSession, final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem, boolean isOverwrite) { logger.trace("checkSendNotifyAddItemToShare"); @@ -64,7 +64,7 @@ public class NotificationsWorkspaceUploader { //if shareChangeCondition is true.. notifies added item to sharing if(shareChangeCondition){ - Workspace workspace = WsUtil.getWorkspace(request, scopeGroupId, currUserId); + Workspace workspace = WsUtil.getWorkspace(request, scopeGroupId, currUser); List listContacts = getListUserSharedByFolderSharedId(workspace, folderDestinationItem.getIdSharedFolder()); @@ -151,20 +151,20 @@ public class NotificationsWorkspaceUploader { /** * Checks if is a shared folder for id. * - * @param currUserId the curr user id + * @param user the user * @param scopeGroupId the scope group id * @param request the request * @param itemId the item id * @return true, if is a shared folder for id */ - public static boolean isASharedFolderForId(String currUserId, String scopeGroupId, HttpServletRequest request, String itemId){ + public static boolean isASharedFolderForId(GCubeUser user, String scopeGroupId, HttpServletRequest request, String itemId){ if(itemId==null || itemId.isEmpty()) return false; try { - Workspace workspace = WsUtil.getWorkspace(request, scopeGroupId, currUserId); + Workspace workspace = WsUtil.getWorkspace(request, scopeGroupId, user); WorkspaceItem wsItem = workspace.getItem(itemId); if(wsItem!=null) diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploaderProducer.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploaderProducer.java index ef4fd47..da5c569 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploaderProducer.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploaderProducer.java @@ -53,30 +53,6 @@ public class NotificationsWorkspaceUploaderProducer { this.username = currUser.getUsername(); } - /** - * Gets the notification manager. - * - * @param httpSession the http session - * @param session the session - * @param request the request - * @return the notification manager - */ - /*public NotificationsManager getNotificationManager(ASLSession session, HttpServletRequest request) { - try{ - logger.trace("Create new NotificationsManager for user: "+session.getUsername()); - logger.trace("New ApplicationNotificationsManager with portlet class name: "+WsUtil.NOTIFICATION_PORTLET_CLASS_ID); - boolean isRequestNull = request==null; -// logger.info("The request is null? "+isRequestNull +", request URL: "+request.getRequestURL()); - logger.info("The request is null? "+isRequestNull); - SocialNetworkingSite site = new SocialNetworkingSite(request); - SocialNetworkingUser curser = new SocialNetworkingUser(session.getUsername(), session.getUserEmailAddress(), session.getUserFullName(), session.getUserAvatarId()); - return new ApplicationNotificationsManager(site, session.getScope(), curser, WsUtil.NOTIFICATION_PORTLET_CLASS_ID); - }catch (Exception e) { - logger.error("An error occurred instancing ApplicationNotificationsManager for user: "+session.getUsername(),e); - return null; - } - }*/ - /** * Gets the notification manager. * @@ -108,13 +84,6 @@ public class NotificationsWorkspaceUploaderProducer { } return notifMng; - /*logger.trace("Create new NotificationsManager for user: "+session.getUsername()); - logger.trace("New ApplicationNotificationsManager with portlet class name: "+WsUtil.NOTIFICATION_PORTLET_CLASS_ID); - boolean requestIsNull = request==null; - logger.info("[5] HttpServletRequest is: null? "+requestIsNull+", URI: "+request.getRequestURI() +", ServerName: "+request.getServerName()); - SocialNetworkingSite site = new SocialNetworkingSite(request); - SocialNetworkingUser curser = new SocialNetworkingUser(session.getUsername(), session.getUserEmailAddress(), session.getUserFullName(), session.getUserAvatarId()); - return new ApplicationNotificationsManager(site, session.getScope(), curser, WsUtil.NOTIFICATION_PORTLET_CLASS_ID);*/ } /** * Gets the notifications mng. @@ -147,16 +116,12 @@ public class NotificationsWorkspaceUploaderProducer { new Thread() { @Override public void run() { - // printContacts(listContacts); logger.info("Send notifies added item in sharedfolder is running..."); - //DEBUG - System.out.println("Send notifies added item in sharedfolder is running..."); - + //System.out.println("Send notifies added item in sharedfolder is running..."); for (ContactModel infoContactModel : listContacts) { try{ - //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(username)!=0){ @@ -191,16 +156,12 @@ public class NotificationsWorkspaceUploaderProducer { new Thread() { @Override public void run() { - // printContacts(listContacts); logger.info("Send notifies updated item in shared folder is running..."); - for (ContactModel infoContactModel : listContacts) { try{ - //NOTIFIES ONLY THE USERS THAT ARE DIFFERENT FROM CURRENT USER if(infoContactModel.getLogin().compareTo(username)!=0){ - logger.info("Sending notification to user "+infoContactModel.getLogin() +" updated item "+workspaceItem.getName()+" in shared folder "+sharedFolder.getName()); boolean notify = notificationsMng.notifyUpdatedItem(infoContactModel.getLogin(), workspaceItem, sharedFolder); @@ -210,10 +171,8 @@ public class NotificationsWorkspaceUploaderProducer { } }catch (Exception e) { logger.error("An error updated in notifyAddedItemToSharing ", e); - e.printStackTrace(); } } - logger.trace("notifies of updated item in shared folder is completed"); } diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java index 05a89e1..f5f17a7 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java @@ -25,6 +25,7 @@ import org.gcube.portlets.widgets.workspaceuploader.server.WorkspaceUploadServle import org.gcube.portlets.widgets.workspaceuploader.server.util.WsUtil; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem.UPLOAD_STATUS; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,7 +51,7 @@ public class WorkspaceUploaderMng { /** * Creates the workspace uploader file. * - * @param currUserId the curr user id + * @param currUser the curr user * @param scopeGroupId the scope group id * @param request the request * @param workspaceUploader the workspace uploader @@ -66,7 +67,7 @@ public class WorkspaceUploaderMng { * @throws InternalErrorException the internal error exception * @throws IOException Signals that an I/O exception has occurred. */ - private static WorkspaceUploaderItem createWorkspaceUploaderFile(String currUserId, String scopeGroupId, HttpServletRequest request, final WorkspaceUploaderItem workspaceUploader, final HttpSession httpSession, final boolean isOvewrite, final Workspace wa, final InputStream uploadFile, final String itemName, final WorkspaceFolder destinationFolder, final String contentType, final long totalBytes) throws InternalErrorException, IOException{ + private static WorkspaceUploaderItem createWorkspaceUploaderFile(final GCubeUser currUser, final String scopeGroupId, final HttpServletRequest request, final WorkspaceUploaderItem workspaceUploader, final HttpSession httpSession, final boolean isOvewrite, final Workspace wa, final InputStream uploadFile, final String itemName, final WorkspaceFolder destinationFolder, final String contentType, final long totalBytes) throws InternalErrorException, IOException{ logger.debug("Creating WorkspaceUploaderFile..."); workspaceUploader.setUploadStatus(UPLOAD_STATUS.IN_PROGRESS); @@ -90,7 +91,7 @@ public class WorkspaceUploaderMng { workspaceUploader.getFile().setParentId(createdItem.getParent().getId());//SET PARENT ID workspaceUploader.setStatusDescription("File \""+createdItem.getName()+"\" uploaded correctly in "+destinationFolder.getPath()); workspaceUploader.setUploadStatus(UPLOAD_STATUS.COMPLETED); - WorkspaceUploadServletStream.notifyUploadInSharedFolder(currUserId, scopeGroupId, request, httpSession, wa, createdItem.getId(), createdItem.getParent().getId(), isOvewrite); + WorkspaceUploadServletStream.notifyUploadInSharedFolder(currUser, scopeGroupId, request, httpSession, wa, createdItem.getId(), createdItem.getParent().getId(), isOvewrite); }else{ workspaceUploader.setStatusDescription("An error occurred during upload: \""+itemName + "\". Try again"); workspaceUploader.setUploadStatus(UPLOAD_STATUS.FAILED); @@ -146,10 +147,11 @@ public class WorkspaceUploaderMng { } + /** * Creates the workspace uploader archive. * - * @param currUserId the curr user id + * @param currUser the curr user * @param scopeGroupId the scope group id * @param workspaceUploader the workspace uploader * @param request the request @@ -161,7 +163,7 @@ public class WorkspaceUploaderMng { * @throws InternalErrorException the internal error exception * @throws IOException Signals that an I/O exception has occurred. */ - private static WorkspaceUploaderItem createWorkspaceUploaderArchive(String currUserId, String scopeGroupId, final WorkspaceUploaderItem workspaceUploader, final HttpServletRequest request, final InputStream uploadFile, final String itemName, final WorkspaceFolder destinationFolder, final long totalBytes) throws InternalErrorException, IOException{ + private static WorkspaceUploaderItem createWorkspaceUploaderArchive(final GCubeUser currUser, final String scopeGroupId, final WorkspaceUploaderItem workspaceUploader, final HttpServletRequest request, final InputStream uploadFile, final String itemName, final WorkspaceFolder destinationFolder, final long totalBytes) throws InternalErrorException, IOException{ HttpSession httpSession = request.getSession(); logger.info("calling upload archive - [itemName: "+itemName+"]"); try { @@ -210,7 +212,7 @@ public class WorkspaceUploaderMng { /** * Upload file. * - * @param currUserId the curr user id + * @param currUser the curr user * @param scopeGroupId the scope group id * @param request the request * @param workspaceUploader the workspace uploader @@ -225,10 +227,10 @@ public class WorkspaceUploaderMng { * @return the workspace uploader item * @throws Exception the exception */ - public static WorkspaceUploaderItem uploadFile(String currUserId, String scopeGroupId, HttpServletRequest request, WorkspaceUploaderItem workspaceUploader, HttpSession httpSession, Workspace wa, String itemName, InputStream file, WorkspaceFolder destinationFolder, String contentType, boolean isOverwrite, long totolaBytes) throws Exception { + public static WorkspaceUploaderItem uploadFile(GCubeUser currUser, String scopeGroupId, HttpServletRequest request, WorkspaceUploaderItem workspaceUploader, HttpSession httpSession, Workspace wa, String itemName, InputStream file, WorkspaceFolder destinationFolder, String contentType, boolean isOverwrite, long totolaBytes) throws Exception { try { - return createWorkspaceUploaderFile(currUserId, scopeGroupId, request, workspaceUploader, httpSession, isOverwrite, wa, file, itemName, destinationFolder, contentType, totolaBytes); + return createWorkspaceUploaderFile(currUser, scopeGroupId, request, workspaceUploader, httpSession, isOverwrite, wa, file, itemName, destinationFolder, contentType, totolaBytes); } catch (Exception e) { logger.error("Error when uploading file to HL : ",e); throw new Exception("An error occurred during upload: "+itemName+". Try again"); @@ -239,7 +241,7 @@ public class WorkspaceUploaderMng { /** * Upload archive. * - * @param currUserId the curr user id + * @param currUser the curr user * @param scopeGroupId the scope group id * @param workspaceUploader the workspace uploader * @param request the request @@ -250,10 +252,10 @@ public class WorkspaceUploaderMng { * @return the workspace uploader item * @throws Exception the exception */ - public static WorkspaceUploaderItem uploadArchive(String currUserId, String scopeGroupId, WorkspaceUploaderItem workspaceUploader, HttpServletRequest request, String itemName, InputStream file, WorkspaceFolder destinationFolder, long totalBytes) throws Exception { + public static WorkspaceUploaderItem uploadArchive(GCubeUser currUser, String scopeGroupId, WorkspaceUploaderItem workspaceUploader, HttpServletRequest request, String itemName, InputStream file, WorkspaceFolder destinationFolder, long totalBytes) throws Exception { try { - return createWorkspaceUploaderArchive(currUserId, scopeGroupId, workspaceUploader, request, file, itemName, destinationFolder, totalBytes); + return createWorkspaceUploaderArchive(currUser, scopeGroupId, workspaceUploader, request, file, itemName, destinationFolder, totalBytes); } catch (Exception e) { logger.error("Error when uploading Archive to HL creation: ",e); diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java index 2ddb13c..5aec08f 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java @@ -15,7 +15,6 @@ import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNot import org.gcube.common.portal.PortalContext; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem; -import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager; import org.gcube.vomanagement.usermanagement.model.GCubeUser; import com.liferay.portal.service.UserLocalServiceUtil; @@ -51,6 +50,19 @@ public class WsUtil { } + /** + * 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 request) throws Exception { + logger.debug("workspace session validating..."); + return PortalContext.getConfiguration().getCurrentUser(request)==null; + } + + /** * Gets the workspace. * @@ -62,30 +74,17 @@ public class WsUtil { * @throws HomeNotFoundException the home not found exception * @throws WorkspaceFolderNotFoundException the workspace folder not found exception */ - public static Workspace getWorkspace(final HttpServletRequest request, String scopeGroupId, String currUserId) throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException{ + public static Workspace getWorkspace(final HttpServletRequest request, String scopeGroupId, GCubeUser user) throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException, Exception{ + + if(user==null || user.getUsername().isEmpty()) + throw new Exception("Session expired"); logger.trace("Get Workspace"); PortalContext pContext = PortalContext.getConfiguration(); String scope = pContext.getCurrentScope(scopeGroupId); ScopeProvider.instance.set(scope); - - String username = null; - try { - GCubeUser gCubeUser = new LiferayUserManager().getUserById(Long.valueOf(currUserId)); - logger.debug("Gcube user read from liferay: "+gCubeUser); - if(gCubeUser!=null && gCubeUser.getUsername()!=null) - username = gCubeUser.getUsername(); - } catch (Exception e) { - String error = "Error retrieving gCubeUser for: [userId= " - + currUserId + ", scope: " + scope + "]"; - logger.error(error, e); - } - - if(username==null || username.isEmpty()) - username = pContext.getCurrentUser(request).getUsername(); - + String username = user.getUsername(); logger.info("Client context scope: "+ scope + " username: "+username); - return HomeLibrary.getUserWorkspace(username); }