From c4ba0875129568d71abcfe0633c0276cfe42668c Mon Sep 17 00:00:00 2001 From: francesco Date: Tue, 20 Oct 2020 17:41:44 +0200 Subject: [PATCH] added session listener --- .../UploadedFileHttpSessionListener.java | 54 +++++++++++++++++++ src/main/webapp/WEB-INF/web.xml | 12 +++-- 2 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/widgets/mpformbuilder/server/UploadedFileHttpSessionListener.java diff --git a/src/main/java/org/gcube/portlets/widgets/mpformbuilder/server/UploadedFileHttpSessionListener.java b/src/main/java/org/gcube/portlets/widgets/mpformbuilder/server/UploadedFileHttpSessionListener.java new file mode 100644 index 0000000..49f8648 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/mpformbuilder/server/UploadedFileHttpSessionListener.java @@ -0,0 +1,54 @@ +package org.gcube.portlets.widgets.mpformbuilder.server; + +import java.io.File; +import java.nio.file.Files; +import java.util.List; + +import javax.servlet.annotation.WebListener; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; + +import org.gcube.portlets.widgets.mpformbuilder.client.ConstantsMPFormBuilder; +import org.gcube.portlets.widgets.mpformbuilder.shared.upload.FileUploaded; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@WebListener +public class UploadedFileHttpSessionListener implements HttpSessionListener { + + private static final Logger LOG = LoggerFactory.getLogger(UploadedFileHttpSessionListener.class); + + @Override + public void sessionDestroyed(HttpSessionEvent event) { + LOG.info("sessionDestroyed called. Session id is: "+event.getSession().getId()); + + try { + HttpSession httpSession = event.getSession(); + List listFileUploaded = (List) httpSession.getAttribute(ConstantsMPFormBuilder.FILE_UPLOADED_SESSION_ATTR); + if(listFileUploaded!=null) { + LOG.info("found file uploded in session, removin it"); + for (FileUploaded fileUploaded : listFileUploaded) { + try { + File file = new File(fileUploaded.getTempSystemPath()); + boolean result = Files.deleteIfExists(file.toPath()); + LOG.info("File "+fileUploaded.getTempSystemPath() +" deleted? "+result); + }catch (Exception e) { + LOG.warn("Error on deleting file: "+fileUploaded, e); + } + } + } + }catch (Exception e) { + LOG.warn("Error tryng to delete uploaded file", e); + } + + } + + @Override + public void sessionCreated(HttpSessionEvent arg0) { + LOG.info("sessionCreated called. Session id is: "+arg0.getSession().getId()); + + //session.setMaxInactiveInterval(5);//in seconds + + } +} diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 96b0767..f997444 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -1,9 +1,13 @@ - + - + + org.gcube.portlets.widgets.mpformbuilder.server.UploadedFileHttpSessionListener +