diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 5fee282..8ca8e3c 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -4,9 +4,6 @@
-
- uses
-
diff --git a/src/main/java/com/liferay/samplestrutsaction/hook/action/UpdateTermsOfUseAction.java b/src/main/java/com/liferay/samplestrutsaction/hook/action/UpdateTermsOfUseAction.java
index 436cbdd..ba50eec 100644
--- a/src/main/java/com/liferay/samplestrutsaction/hook/action/UpdateTermsOfUseAction.java
+++ b/src/main/java/com/liferay/samplestrutsaction/hook/action/UpdateTermsOfUseAction.java
@@ -3,7 +3,7 @@ package com.liferay.samplestrutsaction.hook.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.gcube.portal.removeaccount.D4ScienceRemoveAccountManager;
+import org.gcube.portal.tou.removeaccount.thread.RemovedUserAccountThread;
import com.liferay.portal.kernel.struts.BaseStrutsAction;
import com.liferay.portal.kernel.struts.StrutsAction;
@@ -17,14 +17,21 @@ public class UpdateTermsOfUseAction extends BaseStrutsAction {
public String execute(StrutsAction originalStrutsAction, HttpServletRequest request, HttpServletResponse response) throws Exception {
String agreement = request.getParameter("agreement");
if (agreement.compareTo("i-disagree")==0) { //the user did not agree
- User user = PortalUtil.getUser(request);
+ String username2Delete = null;
try {
- D4ScienceRemoveAccountManager removeAccountManager = new D4ScienceRemoveAccountManager(user.getScreenName());
- removeAccountManager.doAsyncRemoveAccount();
- System.out.println("*** UpdateTermsOfUseAction user DID NOT AGREE, removeUser account for username=" + user.getScreenName() + " done with success, notified also the managers ... ");
+ User user = PortalUtil.getUser(request);
+ username2Delete = user.getScreenName();
} catch (Exception e) {
e.printStackTrace();
- }
+ }
+ System.out.println("*** UpdateTermsOfUseAction user DID NOT AGREE, removeUser account for username=" + username2Delete + " ongoing ... ");
+ if (username2Delete != null) {
+ Thread dropUserAccountThread = new Thread(new RemovedUserAccountThread(username2Delete));
+ dropUserAccountThread.start();
+ } else {
+ System.out.println("Account not removed");
+ }
+
return "/../c/portal/logout";
}
else //the user agreed
diff --git a/src/main/java/org/gcube/portal/tou/removeaccount/thread/RemovedUserAccountThread.java b/src/main/java/org/gcube/portal/tou/removeaccount/thread/RemovedUserAccountThread.java
new file mode 100644
index 0000000..9988b13
--- /dev/null
+++ b/src/main/java/org/gcube/portal/tou/removeaccount/thread/RemovedUserAccountThread.java
@@ -0,0 +1,38 @@
+package org.gcube.portal.tou.removeaccount.thread;
+
+import org.gcube.portal.removeaccount.D4ScienceRemoveAccountManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ *
+ * @author Massimiliano Assante ISTI-CNR
+ *
+ */
+public class RemovedUserAccountThread implements Runnable {
+
+ private static final Logger _log = LoggerFactory.getLogger(RemovedUserAccountThread.class);
+ private String userNameToDelete;
+
+
+
+
+ public RemovedUserAccountThread(String userNameToDelete) {
+ super();
+ this.userNameToDelete = userNameToDelete;
+ }
+
+ @Override
+ public void run() {
+ try {
+
+ D4ScienceRemoveAccountManager removeAccountManager = new D4ScienceRemoveAccountManager(userNameToDelete);
+ boolean result = removeAccountManager.doAsyncRemoveAccount();
+ _log.info("The user "+userNameToDelete+ " removed her/his account with success?"+ result);
+
+ } catch (Exception e) {
+ _log.error("An error occurred during user workspace removal: ", e);
+ }
+ }
+}